@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2273b3-211
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 +59 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -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 +211 -270
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +396 -265
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +244 -63
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +161 -73
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +190 -211
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1462 -241
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1044 -316
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +650 -529
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +48 -7
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +959 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -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 +141 -126
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +258 -536
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -55
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +585 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +449 -422
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +48 -7
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +82 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +576 -516
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -113
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- 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 +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- 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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +137 -139
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +216 -375
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +48 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +126 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +183 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +181 -135
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +61 -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 +28 -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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -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 +19 -19
- 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 +118 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +181 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -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 +15 -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 +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -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 +618 -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/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/{shared → authorization}/AccessAdmin.sol +310 -380
- package/contracts/authorization/AccessManagerCloneable.sol +149 -0
- package/contracts/authorization/Authorization.sol +337 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +37 -62
- package/contracts/authorization/IAuthorization.sol +74 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -6
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +41 -25
- package/contracts/distribution/BasicDistribution.sol +141 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
- package/contracts/distribution/Distribution.sol +153 -125
- package/contracts/distribution/DistributionService.sol +172 -111
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +26 -40
- package/contracts/distribution/IDistributionService.sol +42 -22
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +438 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +27 -44
- package/contracts/instance/IInstanceService.sol +16 -41
- package/contracts/instance/Instance.sol +103 -119
- package/contracts/instance/InstanceAdmin.sol +346 -240
- package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
- package/contracts/instance/InstanceReader.sol +293 -48
- package/contracts/instance/InstanceService.sol +145 -180
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +29 -3
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -2
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +64 -53
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +76 -0
- package/contracts/pool/BundleService.sol +204 -105
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +209 -163
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +546 -241
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +83 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +51 -0
- package/contracts/product/BasicProductAuthorization.sol +56 -0
- package/contracts/product/ClaimService.sol +365 -175
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +476 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +233 -132
- package/contracts/product/RiskService.sol +145 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +74 -32
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +368 -220
- package/contracts/registry/RegistryAdmin.sol +238 -219
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +511 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +107 -60
- package/contracts/registry/TokenRegistry.sol +8 -10
- package/contracts/shared/Component.sol +74 -128
- package/contracts/shared/ComponentService.sol +456 -384
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +29 -18
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +49 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +96 -43
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +9 -13
- package/contracts/staking/IStakingService.sol +24 -9
- package/contracts/staking/StakeManagerLib.sol +85 -43
- package/contracts/staking/Staking.sol +96 -79
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +21 -33
- package/contracts/staking/StakingService.sol +79 -37
- package/contracts/staking/StakingServiceManager.sol +8 -7
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +89 -27
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +75 -94
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +40 -121
- package/contracts/type/Version.sol +18 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +6 -5
- 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/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/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/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- 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/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -80
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -503
- 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/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -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";
         | 
| @@ -31,6 +30,9 @@ interface IStaking is | |
| 31 30 | 
             
                error ErrorStakingNotStakingOwner();
         | 
| 32 31 | 
             
                error ErrorStakingNotNftOwner(NftId nftId);
         | 
| 33 32 |  | 
| 33 | 
            +
                // initializeTokenHandler
         | 
| 34 | 
            +
                error ErrorStakingNotRegistry(address registry);
         | 
| 35 | 
            +
             | 
| 34 36 | 
             
                // staking rate
         | 
| 35 37 | 
             
                error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
         | 
| 36 38 |  | 
| @@ -43,13 +45,13 @@ interface IStaking is | |
| 43 45 | 
             
                error ErrorStakingTargetNftIdZero();
         | 
| 44 46 | 
             
                error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
         | 
| 45 47 | 
             
                error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
         | 
| 46 | 
            -
                error  | 
| 48 | 
            +
                error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
         | 
| 47 49 | 
             
                error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
         | 
| 50 | 
            +
                error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
         | 
| 48 51 | 
             
                error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
         | 
| 49 52 | 
             
                error ErrorStakingTargetNotFound(NftId targetNftId);
         | 
| 50 53 | 
             
                error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
         | 
| 51 54 |  | 
| 52 | 
            -
                error ErrorStakingTargetNotActive(NftId targetNftId);
         | 
| 53 55 | 
             
                error ErrorStakingStakeAmountZero(NftId targetNftId);
         | 
| 54 56 |  | 
| 55 57 | 
             
                // info for individual stake
         | 
| @@ -64,6 +66,8 @@ interface IStaking is | |
| 64 66 | 
             
                    UFixed rewardRate;
         | 
| 65 67 | 
             
                }
         | 
| 66 68 |  | 
| 69 | 
            +
                function initializeTokenHandler() external;
         | 
| 70 | 
            +
             | 
| 67 71 | 
             
                // staking rate management 
         | 
| 68 72 |  | 
| 69 73 | 
             
                /// @dev sets the rate that converts 1 token of total value locked into the
         | 
| @@ -127,7 +131,7 @@ interface IStaking is | |
| 127 131 | 
             
                /// @dev restakes the dips to a new target.
         | 
| 128 132 | 
             
                /// the sum of the staked dips and the accumulated rewards will be restaked.
         | 
| 129 133 | 
             
                /// permissioned: only staking service may call this function.
         | 
| 130 | 
            -
                function restake(NftId stakeNftId, NftId  | 
| 134 | 
            +
                function restake(NftId stakeNftId, NftId newStakeNftId) external returns (Amount newStakeBalance);
         | 
| 131 135 |  | 
| 132 136 | 
             
                /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
         | 
| 133 137 | 
             
                /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to 
         | 
| @@ -153,14 +157,6 @@ interface IStaking is | |
| 153 157 | 
             
                        Amount rewardsClaimedAmount
         | 
| 154 158 | 
             
                    );
         | 
| 155 159 |  | 
| 156 | 
            -
                //--- helper functions --------------------------------------------------//
         | 
| 157 | 
            -
             | 
| 158 | 
            -
                /// @dev transfers the specified amount of dips from the from address to the staking wallet.
         | 
| 159 | 
            -
                function collectDipAmount(address from, Amount dipAmount) external;
         | 
| 160 | 
            -
             | 
| 161 | 
            -
                /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
         | 
| 162 | 
            -
                function transferDipAmount(address to, Amount dipAmount) external;
         | 
| 163 | 
            -
             | 
| 164 160 | 
             
                //--- view and pure functions -------------------------------------------//
         | 
| 165 161 |  | 
| 166 162 | 
             
                function getStakingStore() external view returns (StakingStore stakingStore);
         | 
| @@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol"; | |
| 7 7 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 8 8 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 9 9 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 10 | 
            -
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 11 10 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 12 | 
            -
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 13 11 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 14 12 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 13 |  | 
| @@ -28,22 +26,38 @@ interface IStakingService is IService | |
| 28 26 | 
             
                event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
         | 
| 29 27 | 
             
                event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
         | 
| 30 28 | 
             
                event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
         | 
| 29 | 
            +
                event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
         | 
| 31 30 |  | 
| 32 31 | 
             
                event LogStakingServiceRewardsUpdated(NftId stakeNftId);
         | 
| 33 32 | 
             
                event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
         | 
| 34 33 |  | 
| 35 34 | 
             
                // modifiers
         | 
| 36 | 
            -
                error  | 
| 35 | 
            +
                error ErrorStakingServiceNotStakingOwner(address account);
         | 
| 37 36 | 
             
                error ErrorStakingServiceNotStaking(address stakingAddress);
         | 
| 38 37 | 
             
                error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
         | 
| 39 38 |  | 
| 40 39 | 
             
                // create
         | 
| 40 | 
            +
                error ErrorStakingServiceTargetUnknown(NftId targetNftId);
         | 
| 41 41 | 
             
                error ErrorStakingServiceZeroTargetNftId();
         | 
| 42 42 | 
             
                error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
         | 
| 43 43 | 
             
                error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
         | 
| 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 | 
            +
             | 
| 54 | 
            +
                /// @dev Approves the staking token handler.
         | 
| 55 | 
            +
                /// Reverts if the staking token handler wallet is not the token handler itself.
         | 
| 56 | 
            +
                function approveTokenHandler(
         | 
| 57 | 
            +
                    IERC20Metadata token,
         | 
| 58 | 
            +
                    Amount amount
         | 
| 59 | 
            +
                ) external;
         | 
| 60 | 
            +
             | 
| 47 61 | 
             
                /// @dev creates/registers an on-chain instance staking target.
         | 
| 48 62 | 
             
                /// function granted to instance service
         | 
| 49 63 | 
             
                function createInstanceTarget(
         | 
| @@ -53,11 +67,11 @@ interface IStakingService is IService | |
| 53 67 | 
             
                ) external;
         | 
| 54 68 |  | 
| 55 69 | 
             
                /// @dev Set the instance stake locking period to the specified duration.
         | 
| 56 | 
            -
                ///  | 
| 70 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 57 71 | 
             
                function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
         | 
| 58 72 |  | 
| 59 | 
            -
                /// @dev Set the instance reward rate to the specified value
         | 
| 60 | 
            -
                ///  | 
| 73 | 
            +
                /// @dev Set the instance reward rate to the specified value.
         | 
| 74 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 61 75 | 
             
                function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
         | 
| 62 76 |  | 
| 63 77 | 
             
                /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
         | 
| @@ -68,8 +82,8 @@ interface IStakingService is IService | |
| 68 82 | 
             
                /// unpermissioned: anybody may fill up staking reward reserves
         | 
| 69 83 | 
             
                function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 70 84 |  | 
| 71 | 
            -
                /// @dev  | 
| 72 | 
            -
                ///  | 
| 85 | 
            +
                /// @dev Defunds the staking reward reserves for the specified target
         | 
| 86 | 
            +
                /// Permissioned: only the target owner may call this function
         | 
| 73 87 | 
             
                function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 74 88 |  | 
| 75 89 | 
             
                /// @dev create a new stake with amount DIP to the specified target
         | 
| @@ -104,7 +118,8 @@ interface IStakingService is IService | |
| 104 118 | 
             
                )
         | 
| 105 119 | 
             
                    external
         | 
| 106 120 | 
             
                    returns (
         | 
| 107 | 
            -
                        NftId newStakeNftId
         | 
| 121 | 
            +
                        NftId newStakeNftId,
         | 
| 122 | 
            +
                        Amount newStakeBalance
         | 
| 108 123 | 
             
                    );
         | 
| 109 124 |  | 
| 110 125 |  | 
| @@ -1,16 +1,10 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 7 | 
            -
            import {Component} from "../shared/Component.sol";
         | 
| 8 5 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 | 
            -
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 10 6 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 11 | 
            -
            import {Key32} from "../type/Key32.sol";
         | 
| 12 7 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            -
            import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
         | 
| 14 8 | 
             
            import {Seconds, SecondsLib} from "../type/Seconds.sol";
         | 
| 15 9 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 16 10 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| @@ -51,7 +45,7 @@ library StakeManagerLib { | |
| 51 45 |  | 
| 52 46 | 
             
                    // TODO check that additional dip, rewards and rewards increment 
         | 
| 53 47 | 
             
                    // are still ok with max target staking amount
         | 
| 54 | 
            -
                    NftId targetNftId = registry. | 
| 48 | 
            +
                    NftId targetNftId = registry.getParentNftId(stakeNftId);
         | 
| 55 49 |  | 
| 56 50 | 
             
                    stakingStore.restakeRewards(
         | 
| 57 51 | 
             
                        stakeNftId, 
         | 
| @@ -72,6 +66,55 @@ library StakeManagerLib { | |
| 72 66 |  | 
| 73 67 | 
             
                }
         | 
| 74 68 |  | 
| 69 | 
            +
                function restake(
         | 
| 70 | 
            +
                    StakingReader stakingReader,
         | 
| 71 | 
            +
                    StakingStore stakingStore,
         | 
| 72 | 
            +
                    NftId oldStakeNftId,
         | 
| 73 | 
            +
                    NftId newStakeNftId
         | 
| 74 | 
            +
                )
         | 
| 75 | 
            +
                    external
         | 
| 76 | 
            +
                    returns (Amount newStakeBalance)
         | 
| 77 | 
            +
                {
         | 
| 78 | 
            +
                    checkUnstakeParameters(stakingReader, oldStakeNftId);
         | 
| 79 | 
            +
                    (NftId oldTargetNftId, UFixed oldRewardRate) = stakingReader.getTargetRewardRate(oldStakeNftId);
         | 
| 80 | 
            +
                    
         | 
| 81 | 
            +
                    // calculate new rewards update and unstake full amount
         | 
| 82 | 
            +
                    (
         | 
| 83 | 
            +
                        Amount rewardIncrementAmount,
         | 
| 84 | 
            +
                    ) = calculateRewardIncrease(
         | 
| 85 | 
            +
                        stakingReader, 
         | 
| 86 | 
            +
                        oldStakeNftId,
         | 
| 87 | 
            +
                        oldRewardRate);
         | 
| 88 | 
            +
                    stakingStore.updateRewards(
         | 
| 89 | 
            +
                        oldStakeNftId, 
         | 
| 90 | 
            +
                        oldTargetNftId, 
         | 
| 91 | 
            +
                        rewardIncrementAmount);
         | 
| 92 | 
            +
                    (
         | 
| 93 | 
            +
                        Amount unstakedAmount, 
         | 
| 94 | 
            +
                        Amount rewardsAmount
         | 
| 95 | 
            +
                    ) = stakingStore.unstakeUpTo(
         | 
| 96 | 
            +
                        oldStakeNftId,
         | 
| 97 | 
            +
                        oldTargetNftId,
         | 
| 98 | 
            +
                        AmountLib.max(), // unstake all stakes
         | 
| 99 | 
            +
                        AmountLib.max()); // claim all rewards
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    // calculate full restake amount
         | 
| 102 | 
            +
                    newStakeBalance = unstakedAmount + rewardsAmount;
         | 
| 103 | 
            +
                    NftId newTargetNftId = stakingReader.getTargetNftId(newStakeNftId);
         | 
| 104 | 
            +
                    
         | 
| 105 | 
            +
                    // create new staking target and increase stake
         | 
| 106 | 
            +
                    Timestamp newLockedUntil = _checkCreateParameters(stakingReader, newTargetNftId, newStakeBalance);
         | 
| 107 | 
            +
                    stakingStore.create(
         | 
| 108 | 
            +
                        newStakeNftId, 
         | 
| 109 | 
            +
                        IStaking.StakeInfo({
         | 
| 110 | 
            +
                                lockedUntil: newLockedUntil
         | 
| 111 | 
            +
                            }));
         | 
| 112 | 
            +
                    stakingStore.increaseStake(
         | 
| 113 | 
            +
                        newStakeNftId, 
         | 
| 114 | 
            +
                        newTargetNftId, 
         | 
| 115 | 
            +
                        newStakeBalance);
         | 
| 116 | 
            +
                }
         | 
| 117 | 
            +
             | 
| 75 118 | 
             
                function checkCreateParameters(
         | 
| 76 119 | 
             
                    StakingReader stakingReader,
         | 
| 77 120 | 
             
                    NftId targetNftId, 
         | 
| @@ -82,6 +125,19 @@ library StakeManagerLib { | |
| 82 125 | 
             
                    returns (
         | 
| 83 126 | 
             
                        Timestamp lockedUntil
         | 
| 84 127 | 
             
                    )
         | 
| 128 | 
            +
                {
         | 
| 129 | 
            +
                    return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
         | 
| 130 | 
            +
                }
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                function _checkCreateParameters(
         | 
| 133 | 
            +
                    StakingReader stakingReader,
         | 
| 134 | 
            +
                    NftId targetNftId, 
         | 
| 135 | 
            +
                    Amount dipAmount
         | 
| 136 | 
            +
                )
         | 
| 137 | 
            +
                    internal view
         | 
| 138 | 
            +
                    returns (
         | 
| 139 | 
            +
                        Timestamp lockedUntil
         | 
| 140 | 
            +
                    )
         | 
| 85 141 | 
             
                {
         | 
| 86 142 | 
             
                    Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
         | 
| 87 143 | 
             
                    checkDipAmount(stakingReader, targetNftId, dipAmount);
         | 
| @@ -104,16 +160,33 @@ library StakeManagerLib { | |
| 104 160 | 
             
                {
         | 
| 105 161 | 
             
                    NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
         | 
| 106 162 |  | 
| 107 | 
            -
                    //  | 
| 108 | 
            -
                    if (!stakingReader. | 
| 109 | 
            -
                        revert IStaking. | 
| 163 | 
            +
                    // target nft id must be registered
         | 
| 164 | 
            +
                    if (!stakingReader.isTarget(targetNftId)) {
         | 
| 165 | 
            +
                        revert IStaking.ErrorStakingNotTarget(targetNftId);
         | 
| 110 166 | 
             
                    }
         | 
| 111 | 
            -
             | 
| 167 | 
            +
                    
         | 
| 112 168 | 
             
                    IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
         | 
| 113 169 | 
             
                    rewardRate = info.rewardRate;
         | 
| 114 170 | 
             
                    lockingPeriod = info.lockingPeriod;
         | 
| 115 171 | 
             
                }
         | 
| 116 172 |  | 
| 173 | 
            +
                function checkUnstakeParameters(
         | 
| 174 | 
            +
                    StakingReader stakingReader,
         | 
| 175 | 
            +
                    NftId stakeNftId
         | 
| 176 | 
            +
                )
         | 
| 177 | 
            +
                    public
         | 
| 178 | 
            +
                    view
         | 
| 179 | 
            +
                    returns (
         | 
| 180 | 
            +
                        Seconds lockingPeriod
         | 
| 181 | 
            +
                    )
         | 
| 182 | 
            +
                {
         | 
| 183 | 
            +
                    IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
         | 
| 184 | 
            +
                    
         | 
| 185 | 
            +
                    if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
         | 
| 186 | 
            +
                        revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
         | 
| 187 | 
            +
                    }
         | 
| 188 | 
            +
                }
         | 
| 189 | 
            +
             | 
| 117 190 |  | 
| 118 191 | 
             
                function checkTarget(
         | 
| 119 192 | 
             
                    StakingReader stakingReader,
         | 
| @@ -128,11 +201,6 @@ library StakeManagerLib { | |
| 128 201 | 
             
                        revert IStaking.ErrorStakingNotTarget(targetNftId);
         | 
| 129 202 | 
             
                    }
         | 
| 130 203 |  | 
| 131 | 
            -
                    // only accept stakes for active targets
         | 
| 132 | 
            -
                    if (!stakingReader.isActive(targetNftId)) {
         | 
| 133 | 
            -
                        revert IStaking.ErrorStakingTargetNotActive(targetNftId);
         | 
| 134 | 
            -
                    }
         | 
| 135 | 
            -
             | 
| 136 204 | 
             
                    lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
         | 
| 137 205 | 
             
                }
         | 
| 138 206 |  | 
| @@ -153,31 +221,6 @@ library StakeManagerLib { | |
| 153 221 | 
             
                    // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
         | 
| 154 222 | 
             
                }
         | 
| 155 223 |  | 
| 156 | 
            -
             | 
| 157 | 
            -
                function checkDipBalanceAndAllowance(
         | 
| 158 | 
            -
                    IERC20Metadata dip, 
         | 
| 159 | 
            -
                    address owner, 
         | 
| 160 | 
            -
                    address tokenHandlerAddress, 
         | 
| 161 | 
            -
                    Amount dipAmount
         | 
| 162 | 
            -
                )
         | 
| 163 | 
            -
                    public
         | 
| 164 | 
            -
                    view
         | 
| 165 | 
            -
                {
         | 
| 166 | 
            -
                    // check balance
         | 
| 167 | 
            -
                    uint256 amount = dipAmount.toInt();
         | 
| 168 | 
            -
                    uint256 dipBalance = dip.balanceOf(owner);
         | 
| 169 | 
            -
                    if (dipBalance < amount) {
         | 
| 170 | 
            -
                        revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
         | 
| 171 | 
            -
                    }
         | 
| 172 | 
            -
             | 
| 173 | 
            -
                    // check allowance
         | 
| 174 | 
            -
                    uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
         | 
| 175 | 
            -
                    if (dipAllowance < amount) {
         | 
| 176 | 
            -
                        revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
         | 
| 177 | 
            -
                    }
         | 
| 178 | 
            -
                }
         | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 224 | 
             
                function calculateRewardIncrease(
         | 
| 182 225 | 
             
                    StakingReader stakingReader,
         | 
| 183 226 | 
             
                    NftId stakeNftId,
         | 
| @@ -203,11 +246,10 @@ library StakeManagerLib { | |
| 203 246 | 
             
                        rewardRate,
         | 
| 204 247 | 
             
                        duration,
         | 
| 205 248 | 
             
                        stakeAmount);
         | 
| 206 | 
            -
             | 
| 249 | 
            +
                    
         | 
| 207 250 | 
             
                    totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
         | 
| 208 251 | 
             
                }
         | 
| 209 252 |  | 
| 210 | 
            -
             | 
| 211 253 | 
             
                function calculateRewardAmount(
         | 
| 212 254 | 
             
                    UFixed rewardRate,
         | 
| 213 255 | 
             
                    Seconds duration, 
         | 
| @@ -1,29 +1,32 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 5 | 
            -
             | 
| 6 | 
            -
            import {Component} from "../shared/Component.sol";
         | 
| 4 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            +
             | 
| 7 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 | 
            -
            import { | 
| 7 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 9 8 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 10 | 
            -
            import {IVersionable} from "../ | 
| 11 | 
            -
             | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import { | 
| 16 | 
            -
            import { | 
| 9 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 12 | 
            +
            import {Component} from "../shared/Component.sol";
         | 
| 13 | 
            +
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 14 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 15 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 16 | 
            +
            import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
         | 
| 17 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 18 | 
            +
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 17 19 | 
             
            import {StakeManagerLib} from "./StakeManagerLib.sol";
         | 
| 18 20 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 19 21 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 20 22 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 21 | 
            -
            import {Timestamp | 
| 23 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 24 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 25 | 
            +
            import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
         | 
| 23 26 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 24 | 
            -
            import {UFixed | 
| 25 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 26 | 
            -
            import {Versionable} from "../ | 
| 27 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 28 | 
            +
            import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 29 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 27 30 |  | 
| 28 31 | 
             
            contract Staking is 
         | 
| 29 32 | 
             
                Component,
         | 
| @@ -31,14 +34,13 @@ contract Staking is | |
| 31 34 | 
             
                IStaking
         | 
| 32 35 | 
             
            {
         | 
| 33 36 | 
             
                string public constant CONTRACT_NAME = "Staking";
         | 
| 34 | 
            -
                uint8 private constant GIF_MAJOR_VERSION = 3;
         | 
| 35 37 |  | 
| 36 38 | 
             
                // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
         | 
| 37 39 | 
             
                bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
         | 
| 38 40 |  | 
| 39 41 | 
             
                struct StakingStorage {
         | 
| 40 | 
            -
                    IRegistryService _registryService;
         | 
| 41 42 | 
             
                    TokenRegistry _tokenRegistry;
         | 
| 43 | 
            +
                    TokenHandler _tokenHandler;
         | 
| 42 44 | 
             
                    StakingStore _store;
         | 
| 43 45 | 
             
                    StakingReader _reader;
         | 
| 44 46 | 
             
                    NftId _protocolNftId;
         | 
| @@ -54,12 +56,37 @@ contract Staking is | |
| 54 56 |  | 
| 55 57 |  | 
| 56 58 | 
             
                modifier onlyTarget(NftId targetNftId) {
         | 
| 57 | 
            -
                    if (!_getStakingStorage()._store. | 
| 59 | 
            +
                    if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
         | 
| 58 60 | 
             
                        revert ErrorStakingNotTarget(targetNftId);
         | 
| 59 61 | 
             
                    }
         | 
| 60 62 | 
             
                    _;
         | 
| 61 63 | 
             
                }
         | 
| 62 64 |  | 
| 65 | 
            +
                function initializeTokenHandler()
         | 
| 66 | 
            +
                    external
         | 
| 67 | 
            +
                {
         | 
| 68 | 
            +
                    if (msg.sender != address(getRegistry())) {
         | 
| 69 | 
            +
                        revert ErrorStakingNotRegistry(msg.sender);
         | 
| 70 | 
            +
                    }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 73 | 
            +
                    $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
         | 
| 74 | 
            +
                        address(getRegistry()),
         | 
| 75 | 
            +
                        address(this),
         | 
| 76 | 
            +
                        address(getToken()), 
         | 
| 77 | 
            +
                        getRegistry().getAuthority());
         | 
| 78 | 
            +
                }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
             | 
| 81 | 
            +
                function approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 82 | 
            +
                    public
         | 
| 83 | 
            +
                    restricted()
         | 
| 84 | 
            +
                    onlyOwner()
         | 
| 85 | 
            +
                {
         | 
| 86 | 
            +
                    _approveTokenHandler(token, amount);
         | 
| 87 | 
            +
                }
         | 
| 88 | 
            +
             | 
| 89 | 
            +
             | 
| 63 90 | 
             
                // set/update staking reader
         | 
| 64 91 | 
             
                function setStakingReader(StakingReader stakingReader)
         | 
| 65 92 | 
             
                    external
         | 
| @@ -289,20 +316,25 @@ contract Staking is | |
| 289 316 |  | 
| 290 317 | 
             
                function restake(
         | 
| 291 318 | 
             
                    NftId stakeNftId, 
         | 
| 292 | 
            -
                    NftId  | 
| 319 | 
            +
                    NftId newStakeNftId
         | 
| 293 320 | 
             
                )
         | 
| 294 321 | 
             
                    external
         | 
| 295 322 | 
             
                    virtual
         | 
| 296 323 | 
             
                    restricted() // only staking service
         | 
| 297 324 | 
             
                    onlyStake(stakeNftId)
         | 
| 298 | 
            -
                    returns ( | 
| 325 | 
            +
                    returns (Amount newStakeBalance)
         | 
| 299 326 | 
             
                {
         | 
| 327 | 
            +
                    _checkNftType(stakeNftId, STAKE());
         | 
| 328 | 
            +
                    _checkNftType(newStakeNftId, STAKE());
         | 
| 329 | 
            +
             | 
| 300 330 | 
             
                    // TODO add check that allows additional staking amount
         | 
| 301 331 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 302 | 
            -
             | 
| 303 | 
            -
             | 
| 304 | 
            -
             | 
| 305 | 
            -
             | 
| 332 | 
            +
                    newStakeBalance = StakeManagerLib.restake(
         | 
| 333 | 
            +
                        $._reader,
         | 
| 334 | 
            +
                        $._store,
         | 
| 335 | 
            +
                        stakeNftId,
         | 
| 336 | 
            +
                        newStakeNftId);    
         | 
| 337 | 
            +
                }
         | 
| 306 338 |  | 
| 307 339 | 
             
                function updateRewards(NftId stakeNftId)
         | 
| 308 340 | 
             
                    external
         | 
| @@ -350,9 +382,10 @@ contract Staking is | |
| 350 382 | 
             
                        Amount rewardsClaimedAmount
         | 
| 351 383 | 
             
                    )
         | 
| 352 384 | 
             
                {
         | 
| 353 | 
            -
                    // TODO add check that stake locking is in the past
         | 
| 354 385 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 355 | 
            -
             | 
| 386 | 
            +
                    
         | 
| 387 | 
            +
                    StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
         | 
| 388 | 
            +
                    
         | 
| 356 389 | 
             
                    // update rewards since last update
         | 
| 357 390 | 
             
                    NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
         | 
| 358 391 |  | 
| @@ -371,43 +404,6 @@ contract Staking is | |
| 371 404 | 
             
                }
         | 
| 372 405 |  | 
| 373 406 |  | 
| 374 | 
            -
             | 
| 375 | 
            -
                //--- other functions ---------------------------------------------------//
         | 
| 376 | 
            -
             | 
| 377 | 
            -
                function collectDipAmount(address from, Amount dipAmount)
         | 
| 378 | 
            -
                    external
         | 
| 379 | 
            -
                    restricted() // only staking service
         | 
| 380 | 
            -
                {
         | 
| 381 | 
            -
                    TokenHandler tokenHandler = getTokenHandler();
         | 
| 382 | 
            -
                    address stakingWallet = getWallet();
         | 
| 383 | 
            -
             | 
| 384 | 
            -
                    StakeManagerLib.checkDipBalanceAndAllowance(
         | 
| 385 | 
            -
                        getToken(), 
         | 
| 386 | 
            -
                        from, 
         | 
| 387 | 
            -
                        address(tokenHandler), 
         | 
| 388 | 
            -
                        dipAmount);
         | 
| 389 | 
            -
             | 
| 390 | 
            -
                    tokenHandler.transfer(from, stakingWallet, dipAmount);
         | 
| 391 | 
            -
                }
         | 
| 392 | 
            -
             | 
| 393 | 
            -
             | 
| 394 | 
            -
                function transferDipAmount(address to, Amount dipAmount)
         | 
| 395 | 
            -
                    external
         | 
| 396 | 
            -
                    restricted() // only staking service
         | 
| 397 | 
            -
                {
         | 
| 398 | 
            -
                    TokenHandler tokenHandler = getTokenHandler();
         | 
| 399 | 
            -
                    address stakingWallet = getWallet();
         | 
| 400 | 
            -
             | 
| 401 | 
            -
                    StakeManagerLib.checkDipBalanceAndAllowance(
         | 
| 402 | 
            -
                        getToken(), 
         | 
| 403 | 
            -
                        stakingWallet, 
         | 
| 404 | 
            -
                        address(tokenHandler), 
         | 
| 405 | 
            -
                        dipAmount);
         | 
| 406 | 
            -
             | 
| 407 | 
            -
                    tokenHandler.transfer(stakingWallet, to, dipAmount);
         | 
| 408 | 
            -
                }
         | 
| 409 | 
            -
             | 
| 410 | 
            -
             | 
| 411 407 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| 412 408 |  | 
| 413 409 | 
             
                function getStakingReader() public view returns (StakingReader reader) {
         | 
| @@ -422,15 +418,28 @@ contract Staking is | |
| 422 418 | 
             
                    return address(_getStakingStorage()._tokenRegistry);
         | 
| 423 419 | 
             
                }
         | 
| 424 420 |  | 
| 421 | 
            +
                function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
         | 
| 422 | 
            +
                    return _getStakingStorage()._tokenHandler;
         | 
| 423 | 
            +
                }
         | 
| 425 424 |  | 
| 426 | 
            -
                // from  | 
| 425 | 
            +
                // from IRegisterable
         | 
| 426 | 
            +
                function getRelease()
         | 
| 427 | 
            +
                    public 
         | 
| 428 | 
            +
                    pure 
         | 
| 429 | 
            +
                    virtual override (IRelease, Registerable)
         | 
| 430 | 
            +
                    returns(VersionPart)
         | 
| 431 | 
            +
                {
         | 
| 432 | 
            +
                    return VersionPartLib.toVersionPart(3);
         | 
| 433 | 
            +
                }
         | 
| 434 | 
            +
             | 
| 435 | 
            +
                // from IVersionable
         | 
| 427 436 | 
             
                function getVersion()
         | 
| 428 437 | 
             
                    public 
         | 
| 429 438 | 
             
                    pure 
         | 
| 430 | 
            -
                    virtual override (IVersionable, Versionable)
         | 
| 439 | 
            +
                    virtual override (Component, IVersionable, Versionable)
         | 
| 431 440 | 
             
                    returns(Version)
         | 
| 432 441 | 
             
                {
         | 
| 433 | 
            -
                    return VersionLib.toVersion( | 
| 442 | 
            +
                    return VersionLib.toVersion(3,0,0);
         | 
| 434 443 | 
             
                }
         | 
| 435 444 |  | 
| 436 445 | 
             
                //--- internal functions ------------------------------------------------//
         | 
| @@ -459,13 +468,23 @@ contract Staking is | |
| 459 468 | 
             
                }
         | 
| 460 469 |  | 
| 461 470 |  | 
| 471 | 
            +
                function _approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 472 | 
            +
                    internal
         | 
| 473 | 
            +
                    virtual override
         | 
| 474 | 
            +
                {
         | 
| 475 | 
            +
                    IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
         | 
| 476 | 
            +
                        token, 
         | 
| 477 | 
            +
                        amount);
         | 
| 478 | 
            +
                }
         | 
| 479 | 
            +
             | 
| 480 | 
            +
             | 
| 462 481 | 
             
                function _initialize(
         | 
| 463 482 | 
             
                    address owner, 
         | 
| 464 483 | 
             
                    bytes memory data
         | 
| 465 484 | 
             
                )
         | 
| 466 485 | 
             
                    internal
         | 
| 467 486 | 
             
                    virtual override
         | 
| 468 | 
            -
                    initializer
         | 
| 487 | 
            +
                    initializer()
         | 
| 469 488 | 
             
                {
         | 
| 470 489 | 
             
                    (
         | 
| 471 490 | 
             
                        address registryAddress,
         | 
| @@ -480,10 +499,17 @@ contract Staking is | |
| 480 499 | 
             
                    TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 481 500 | 
             
                    address dipTokenAddress = tokenRegistry.getDipTokenAddress();
         | 
| 482 501 |  | 
| 483 | 
            -
                     | 
| 502 | 
            +
                    // wiring to external contracts
         | 
| 503 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 504 | 
            +
                    $._protocolNftId = registry.getProtocolNftId();
         | 
| 505 | 
            +
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 506 | 
            +
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 507 | 
            +
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 508 | 
            +
             | 
| 509 | 
            +
                    _initializeComponent(
         | 
| 484 510 | 
             
                        authority,
         | 
| 485 511 | 
             
                        registryAddress, 
         | 
| 486 | 
            -
                        registry.getNftId(), 
         | 
| 512 | 
            +
                        registry.getNftId(), // parent nft id
         | 
| 487 513 | 
             
                        CONTRACT_NAME,
         | 
| 488 514 | 
             
                        dipTokenAddress,
         | 
| 489 515 | 
             
                        STAKING(), 
         | 
| @@ -492,16 +518,7 @@ contract Staking is | |
| 492 518 | 
             
                        "", // registry data
         | 
| 493 519 | 
             
                        ""); // component data
         | 
| 494 520 |  | 
| 495 | 
            -
                     | 
| 496 | 
            -
             | 
| 497 | 
            -
                    // wiring to external contracts
         | 
| 498 | 
            -
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 499 | 
            -
                    $._protocolNftId = getRegistry().getProtocolNftId();
         | 
| 500 | 
            -
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 501 | 
            -
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 502 | 
            -
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 503 | 
            -
             | 
| 504 | 
            -
                    registerInterface(type(IStaking).interfaceId);
         | 
| 521 | 
            +
                    _registerInterface(type(IStaking).interfaceId);
         | 
| 505 522 | 
             
                }
         | 
| 506 523 |  | 
| 507 524 |  | 
| @@ -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
         | 
| @@ -22,9 +18,9 @@ contract StakingManager is | |
| 22 18 | 
             
                    address registry,
         | 
| 23 19 | 
             
                    address tokenRegistry,
         | 
| 24 20 | 
             
                    address stakingStore,
         | 
| 25 | 
            -
                    address initialOwner
         | 
| 21 | 
            +
                    address initialOwner,
         | 
| 22 | 
            +
                    bytes32 salt
         | 
| 26 23 | 
             
                )
         | 
| 27 | 
            -
                    ProxyManager(registry)
         | 
| 28 24 | 
             
                {
         | 
| 29 25 | 
             
                    Staking stakingImplementation = new Staking();
         | 
| 30 26 |  | 
| @@ -34,10 +30,12 @@ contract StakingManager is | |
| 34 30 | 
             
                        tokenRegistry,
         | 
| 35 31 | 
             
                        stakingStore,
         | 
| 36 32 | 
             
                        initialOwner);
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                    IVersionable versionable =  | 
| 39 | 
            -
                         | 
| 40 | 
            -
                         | 
| 33 | 
            +
                    
         | 
| 34 | 
            +
                    IVersionable versionable = initialize(
         | 
| 35 | 
            +
                        registry,
         | 
| 36 | 
            +
                        _initialImplementation,
         | 
| 37 | 
            +
                        _initializationData,
         | 
| 38 | 
            +
                        salt);
         | 
| 41 39 |  | 
| 42 40 | 
             
                    _staking = Staking(address(versionable));
         | 
| 43 41 | 
             
                }
         |