@etherisc/gif-next 0.0.2-de7c770-422 → 0.0.2-deb924b-641
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 +28 -7
- 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 +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
- 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 +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +194 -214
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +132 -128
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +280 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +146 -69
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +119 -110
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +234 -166
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +175 -151
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +321 -183
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +778 -330
- 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 +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +781 -202
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +134 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +473 -342
- 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 +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +151 -171
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +113 -104
- 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 -123
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +156 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +130 -45
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +146 -142
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +161 -262
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -85
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -111
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +133 -135
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +279 -247
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +146 -153
- 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 +495 -390
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +168 -55
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +135 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -45
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +260 -195
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +319 -148
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -72
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +199 -21
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +244 -48
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +246 -176
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +377 -148
- 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 +153 -60
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +185 -115
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +123 -54
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +256 -191
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +117 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +115 -42
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +117 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- 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 +161 -53
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +326 -259
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +112 -183
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +102 -37
- 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 +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +414 -250
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -83
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +498 -495
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +144 -77
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +60 -2
- 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 +92 -65
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +113 -104
- 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 +16 -6
- 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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +126 -122
- 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 +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -8
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +60 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- 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 +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -115
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +119 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -44
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -185
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +131 -53
- 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 +175 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -42
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +171 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- 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 +2 -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 +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/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 +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
- 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 +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.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/authorization/AccessAdmin.sol +231 -131
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -201
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +104 -82
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- 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 +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +254 -102
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +246 -39
- package/contracts/instance/InstanceService.sol +86 -149
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +13 -8
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +111 -80
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +91 -134
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +15 -34
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +70 -65
- package/contracts/pool/Pool.sol +136 -117
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +484 -236
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +32 -21
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +300 -155
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +17 -4
- package/contracts/product/IPolicyService.sol +33 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +27 -4
- package/contracts/product/PolicyService.sol +343 -234
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +31 -28
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +125 -72
- package/contracts/product/RiskService.sol +75 -27
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +16 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +36 -8
- package/contracts/registry/RegistryAdmin.sol +132 -242
- package/contracts/registry/RegistryService.sol +36 -47
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +257 -237
- package/contracts/registry/ServiceAuthorizationV3.sol +98 -50
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -110
- package/contracts/shared/ComponentService.sol +424 -373
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -13
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +69 -44
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +12 -6
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +11 -4
- package/contracts/staking/StakeManagerLib.sol +67 -16
- package/contracts/staking/Staking.sol +74 -42
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -21
- package/contracts/staking/StakingService.sol +66 -24
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/type/Amount.sol +15 -0
- 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 +49 -21
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +13 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -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
|
+
NftId oldTargetNftId = stakingReader.getTargetNftId(oldStakeNftId);
|
79
|
+
(UFixed oldRewardRate,) = checkUnstakeParameters(stakingReader, 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,11 +160,11 @@ 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;
|
@@ -146,11 +202,6 @@ library StakeManagerLib {
|
|
146
202
|
revert IStaking.ErrorStakingNotTarget(targetNftId);
|
147
203
|
}
|
148
204
|
|
149
|
-
// only accept stakes for active targets
|
150
|
-
if (!stakingReader.isActive(targetNftId)) {
|
151
|
-
revert IStaking.ErrorStakingTargetNotActive(targetNftId);
|
152
|
-
}
|
153
|
-
|
154
205
|
lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
|
155
206
|
}
|
156
207
|
|
@@ -1,17 +1,21 @@
|
|
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
|
+
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
-
import {
|
7
|
+
import {IRelease} from "../registry/IRelease.sol";
|
6
8
|
import {IStaking} from "./IStaking.sol";
|
7
9
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
8
10
|
|
9
11
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
12
|
import {Component} from "../shared/Component.sol";
|
11
13
|
import {IComponent} from "../shared/IComponent.sol";
|
14
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
12
15
|
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, STAKING} from "../type/ObjectType.sol";
|
16
|
+
import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
|
14
17
|
import {Seconds} from "../type/Seconds.sol";
|
18
|
+
import {Registerable} from "../shared/Registerable.sol";
|
15
19
|
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
16
20
|
import {StakingReader} from "./StakingReader.sol";
|
17
21
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -21,7 +25,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
21
25
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
22
26
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
23
27
|
import {UFixed} from "../type/UFixed.sol";
|
24
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
28
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
25
29
|
import {Versionable} from "../upgradeability/Versionable.sol";
|
26
30
|
|
27
31
|
contract Staking is
|
@@ -30,13 +34,11 @@ contract Staking is
|
|
30
34
|
IStaking
|
31
35
|
{
|
32
36
|
string public constant CONTRACT_NAME = "Staking";
|
33
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
34
37
|
|
35
38
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
36
39
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
37
40
|
|
38
41
|
struct StakingStorage {
|
39
|
-
IRegistryService _registryService;
|
40
42
|
TokenRegistry _tokenRegistry;
|
41
43
|
TokenHandler _tokenHandler;
|
42
44
|
StakingStore _store;
|
@@ -60,6 +62,31 @@ contract Staking is
|
|
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,21 +316,26 @@ 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
|
-
|
332
|
+
newStakeBalance = StakeManagerLib.restake(
|
333
|
+
$._reader,
|
334
|
+
$._store,
|
335
|
+
stakeNftId,
|
336
|
+
newStakeNftId);
|
304
337
|
}
|
305
338
|
|
306
|
-
|
307
339
|
function updateRewards(NftId stakeNftId)
|
308
340
|
external
|
309
341
|
virtual
|
@@ -372,25 +404,6 @@ contract Staking is
|
|
372
404
|
}
|
373
405
|
|
374
406
|
|
375
|
-
|
376
|
-
//--- other functions ---------------------------------------------------//
|
377
|
-
|
378
|
-
function collectDipAmount(address from, Amount dipAmount)
|
379
|
-
external
|
380
|
-
restricted() // only staking service
|
381
|
-
{
|
382
|
-
getTokenHandler().collectTokens(from, getWallet(), dipAmount);
|
383
|
-
}
|
384
|
-
|
385
|
-
|
386
|
-
function transferDipAmount(address to, Amount dipAmount)
|
387
|
-
external
|
388
|
-
restricted() // only staking service
|
389
|
-
{
|
390
|
-
getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
|
391
|
-
}
|
392
|
-
|
393
|
-
|
394
407
|
//--- view functions ----------------------------------------------------//
|
395
408
|
|
396
409
|
function getStakingReader() public view returns (StakingReader reader) {
|
@@ -409,14 +422,24 @@ contract Staking is
|
|
409
422
|
return _getStakingStorage()._tokenHandler;
|
410
423
|
}
|
411
424
|
|
412
|
-
// 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
|
413
436
|
function getVersion()
|
414
437
|
public
|
415
438
|
pure
|
416
|
-
virtual override (IVersionable, Versionable)
|
439
|
+
virtual override (Component, IVersionable, Versionable)
|
417
440
|
returns(Version)
|
418
441
|
{
|
419
|
-
return VersionLib.toVersion(
|
442
|
+
return VersionLib.toVersion(3,0,0);
|
420
443
|
}
|
421
444
|
|
422
445
|
//--- internal functions ------------------------------------------------//
|
@@ -445,13 +468,23 @@ contract Staking is
|
|
445
468
|
}
|
446
469
|
|
447
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
|
+
|
448
481
|
function _initialize(
|
449
482
|
address owner,
|
450
483
|
bytes memory data
|
451
484
|
)
|
452
485
|
internal
|
453
486
|
virtual override
|
454
|
-
initializer
|
487
|
+
initializer()
|
455
488
|
{
|
456
489
|
(
|
457
490
|
address registryAddress,
|
@@ -466,10 +499,17 @@ contract Staking is
|
|
466
499
|
TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
467
500
|
address dipTokenAddress = tokenRegistry.getDipTokenAddress();
|
468
501
|
|
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
|
+
|
469
509
|
_initializeComponent(
|
470
510
|
authority,
|
471
511
|
registryAddress,
|
472
|
-
registry.getNftId(),
|
512
|
+
registry.getNftId(), // parent nft id
|
473
513
|
CONTRACT_NAME,
|
474
514
|
dipTokenAddress,
|
475
515
|
STAKING(),
|
@@ -478,14 +518,6 @@ contract Staking is
|
|
478
518
|
"", // registry data
|
479
519
|
""); // component data
|
480
520
|
|
481
|
-
// wiring to external contracts
|
482
|
-
StakingStorage storage $ = _getStakingStorage();
|
483
|
-
$._protocolNftId = getRegistry().getProtocolNftId();
|
484
|
-
$._store = StakingStore(stakingStoreAddress);
|
485
|
-
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
486
|
-
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
487
|
-
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
|
488
|
-
|
489
521
|
_registerInterface(type(IStaking).interfaceId);
|
490
522
|
}
|
491
523
|
|
@@ -18,9 +18,9 @@ contract StakingManager is
|
|
18
18
|
address registry,
|
19
19
|
address tokenRegistry,
|
20
20
|
address stakingStore,
|
21
|
-
address initialOwner
|
21
|
+
address initialOwner,
|
22
|
+
bytes32 salt
|
22
23
|
)
|
23
|
-
ProxyManager(registry)
|
24
24
|
{
|
25
25
|
Staking stakingImplementation = new Staking();
|
26
26
|
|
@@ -30,10 +30,12 @@ contract StakingManager is
|
|
30
30
|
tokenRegistry,
|
31
31
|
stakingStore,
|
32
32
|
initialOwner);
|
33
|
-
|
34
|
-
IVersionable versionable =
|
35
|
-
|
36
|
-
|
33
|
+
|
34
|
+
IVersionable versionable = initialize(
|
35
|
+
registry,
|
36
|
+
_initialImplementation,
|
37
|
+
_initializationData,
|
38
|
+
salt);
|
37
39
|
|
38
40
|
_staking = Staking(address(versionable));
|
39
41
|
}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
|
+
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
6
8
|
import {IStaking} from "../staking/IStaking.sol";
|
7
9
|
|
8
10
|
import {Amount} from "../type/Amount.sol";
|
9
11
|
import {Blocknumber} from "../type/Blocknumber.sol";
|
10
|
-
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
11
12
|
import {NftId} from "../type/NftId.sol";
|
12
13
|
import {STAKE, TARGET} from "../type/ObjectType.sol";
|
13
14
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -16,16 +17,18 @@ import {UFixed} from "../type/UFixed.sol";
|
|
16
17
|
|
17
18
|
contract StakingReader is
|
18
19
|
IRegistryLinked,
|
19
|
-
|
20
|
+
Initializable
|
20
21
|
{
|
21
22
|
|
22
|
-
error
|
23
|
+
error ErrorStakingReaderUnauthorizedCaler();
|
23
24
|
|
25
|
+
address private _initializeOwner;
|
24
26
|
IRegistry private _registry;
|
25
27
|
IStaking private _staking;
|
26
28
|
StakingStore private _store;
|
27
29
|
|
28
|
-
constructor(IRegistry registry)
|
30
|
+
constructor(IRegistry registry) {
|
31
|
+
_initializeOwner = msg.sender;
|
29
32
|
_registry = registry;
|
30
33
|
}
|
31
34
|
|
@@ -34,8 +37,12 @@ contract StakingReader is
|
|
34
37
|
address stakingStoreAddress
|
35
38
|
)
|
36
39
|
external
|
37
|
-
initializer
|
40
|
+
initializer()
|
38
41
|
{
|
42
|
+
if (msg.sender != _initializeOwner) {
|
43
|
+
revert ErrorStakingReaderUnauthorizedCaler();
|
44
|
+
}
|
45
|
+
|
39
46
|
_staking = IStaking(stakingAddress);
|
40
47
|
_store = StakingStore(stakingStoreAddress);
|
41
48
|
}
|
@@ -70,23 +77,8 @@ contract StakingReader is
|
|
70
77
|
}
|
71
78
|
|
72
79
|
|
73
|
-
function isActive(NftId targetNftId) external view returns (bool) {
|
74
|
-
return _store.getTargetNftIdSet().isActive(targetNftId);
|
75
|
-
}
|
76
|
-
|
77
|
-
|
78
|
-
function activeTargets() external view returns (uint256) {
|
79
|
-
return _store.getTargetNftIdSet().activeNftIds();
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
|
84
|
-
return _store.getTargetNftIdSet().getActiveNftId(idx);
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
80
|
function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
|
89
|
-
return _registry.
|
81
|
+
return _registry.getParentNftId(stakeNftId);
|
90
82
|
}
|
91
83
|
|
92
84
|
|
@@ -4,21 +4,15 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
8
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
9
7
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
9
|
import {RegistryService} from "../registry/RegistryService.sol";
|
12
10
|
import {IStaking} from "./IStaking.sol";
|
13
11
|
import {IStakingService} from "./IStakingService.sol";
|
14
12
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {ObjectType, INSTANCE,
|
13
|
+
import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
16
14
|
import {Seconds} from "../type/Seconds.sol";
|
17
15
|
import {Service} from "../shared/Service.sol";
|
18
|
-
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
19
|
-
import {StakingReader} from "./StakingReader.sol";
|
20
|
-
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
21
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
22
16
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
17
|
import {UFixed} from "../type/UFixed.sol";
|
24
18
|
|
@@ -38,14 +32,28 @@ contract StakingService is
|
|
38
32
|
TokenHandler _tokenHandler;
|
39
33
|
}
|
40
34
|
|
41
|
-
|
42
|
-
|
43
|
-
|
35
|
+
|
36
|
+
modifier onlyStaking() {
|
37
|
+
if (msg.sender != address(_getStakingServiceStorage()._staking)) {
|
38
|
+
revert ErrorStakingServiceNotStaking(msg.sender);
|
44
39
|
}
|
45
40
|
_;
|
46
41
|
}
|
47
42
|
|
48
43
|
|
44
|
+
function approveTokenHandler(
|
45
|
+
IERC20Metadata token,
|
46
|
+
Amount amount
|
47
|
+
)
|
48
|
+
external
|
49
|
+
virtual
|
50
|
+
onlyStaking()
|
51
|
+
{
|
52
|
+
_getStakingServiceStorage()._tokenHandler.approve(
|
53
|
+
token, amount);
|
54
|
+
}
|
55
|
+
|
56
|
+
|
49
57
|
function createInstanceTarget(
|
50
58
|
NftId targetNftId,
|
51
59
|
Seconds initialLockingPeriod,
|
@@ -72,6 +80,7 @@ contract StakingService is
|
|
72
80
|
virtual
|
73
81
|
restricted()
|
74
82
|
{
|
83
|
+
_checkNftType(instanceNftId, INSTANCE());
|
75
84
|
_getStakingServiceStorage()._staking.setLockingPeriod(
|
76
85
|
instanceNftId,
|
77
86
|
lockingPeriod);
|
@@ -83,6 +92,7 @@ contract StakingService is
|
|
83
92
|
virtual
|
84
93
|
restricted()
|
85
94
|
{
|
95
|
+
_checkNftType(instanceNftId, INSTANCE());
|
86
96
|
_getStakingServiceStorage()._staking.setRewardRate(
|
87
97
|
instanceNftId,
|
88
98
|
rewardRate);
|
@@ -95,6 +105,7 @@ contract StakingService is
|
|
95
105
|
restricted()
|
96
106
|
returns (Amount newBalance)
|
97
107
|
{
|
108
|
+
_checkNftType(instanceNftId, INSTANCE());
|
98
109
|
return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
|
99
110
|
}
|
100
111
|
|
@@ -116,6 +127,7 @@ contract StakingService is
|
|
116
127
|
restricted()
|
117
128
|
returns (Amount newBalance)
|
118
129
|
{
|
130
|
+
_checkNftType(instanceNftId, INSTANCE());
|
119
131
|
// update reward reserve book keeping
|
120
132
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
121
133
|
newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
|
@@ -123,7 +135,7 @@ contract StakingService is
|
|
123
135
|
// transfer withdrawal amount to target owner
|
124
136
|
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
125
137
|
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
126
|
-
$.
|
138
|
+
$._tokenHandler.pushToken(
|
127
139
|
instanceOwner,
|
128
140
|
dipAmount);
|
129
141
|
}
|
@@ -171,8 +183,8 @@ contract StakingService is
|
|
171
183
|
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
172
184
|
|
173
185
|
// collect staked dip by staking
|
174
|
-
$.
|
175
|
-
stakeOwner,
|
186
|
+
$._tokenHandler.pullToken(
|
187
|
+
stakeOwner,
|
176
188
|
dipAmount);
|
177
189
|
}
|
178
190
|
|
@@ -186,6 +198,8 @@ contract StakingService is
|
|
186
198
|
restricted()
|
187
199
|
onlyNftOwner(stakeNftId)
|
188
200
|
{
|
201
|
+
_checkNftType(stakeNftId, STAKE());
|
202
|
+
|
189
203
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
190
204
|
address stakeOwner = msg.sender;
|
191
205
|
|
@@ -197,7 +211,7 @@ contract StakingService is
|
|
197
211
|
// collect staked dip by staking
|
198
212
|
if (dipAmount.gtz()) {
|
199
213
|
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
200
|
-
|
214
|
+
$._tokenHandler.pullToken(
|
201
215
|
stakeOwner,
|
202
216
|
dipAmount);
|
203
217
|
}
|
@@ -213,11 +227,32 @@ contract StakingService is
|
|
213
227
|
restricted()
|
214
228
|
onlyNftOwner(stakeNftId)
|
215
229
|
returns (
|
216
|
-
NftId newStakeNftId
|
230
|
+
NftId newStakeNftId,
|
231
|
+
Amount newStakeBalance
|
217
232
|
)
|
218
233
|
{
|
234
|
+
_checkNftType(stakeNftId, STAKE());
|
235
|
+
|
219
236
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
220
|
-
|
237
|
+
address stakeOwner = msg.sender;
|
238
|
+
|
239
|
+
// register new stake object with registry
|
240
|
+
newStakeNftId = $._registryService.registerStake(
|
241
|
+
IRegistry.ObjectInfo({
|
242
|
+
nftId: NftIdLib.zero(),
|
243
|
+
parentNftId: newTargetNftId,
|
244
|
+
objectType: STAKE(),
|
245
|
+
isInterceptor: false,
|
246
|
+
objectAddress: address(0),
|
247
|
+
initialOwner: stakeOwner,
|
248
|
+
data: ""
|
249
|
+
}));
|
250
|
+
|
251
|
+
newStakeBalance = $._staking.restake(
|
252
|
+
stakeNftId,
|
253
|
+
newStakeNftId);
|
254
|
+
|
255
|
+
emit LogStakingServiceStakeRestaked(stakeOwner, stakeNftId, newStakeNftId, newTargetNftId, newStakeBalance);
|
221
256
|
}
|
222
257
|
|
223
258
|
|
@@ -228,6 +263,8 @@ contract StakingService is
|
|
228
263
|
virtual
|
229
264
|
restricted()
|
230
265
|
{
|
266
|
+
_checkNftType(stakeNftId, STAKE());
|
267
|
+
|
231
268
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
232
269
|
$._staking.updateRewards(stakeNftId);
|
233
270
|
|
@@ -241,12 +278,14 @@ contract StakingService is
|
|
241
278
|
restricted()
|
242
279
|
onlyNftOwner(stakeNftId)
|
243
280
|
{
|
281
|
+
_checkNftType(stakeNftId, STAKE());
|
282
|
+
|
244
283
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
245
284
|
address stakeOwner = msg.sender;
|
246
285
|
|
247
286
|
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
248
287
|
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
249
|
-
$.
|
288
|
+
$._tokenHandler.pushToken(
|
250
289
|
stakeOwner,
|
251
290
|
rewardsClaimedAmount);
|
252
291
|
}
|
@@ -258,6 +297,8 @@ contract StakingService is
|
|
258
297
|
restricted()
|
259
298
|
onlyNftOwner(stakeNftId)
|
260
299
|
{
|
300
|
+
_checkNftType(stakeNftId, STAKE());
|
301
|
+
|
261
302
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
262
303
|
address stakeOwner = msg.sender;
|
263
304
|
|
@@ -268,8 +309,9 @@ contract StakingService is
|
|
268
309
|
|
269
310
|
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
270
311
|
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
271
|
-
|
272
|
-
|
312
|
+
|
313
|
+
$._tokenHandler.pushToken(
|
314
|
+
stakeOwner,
|
273
315
|
totalAmount);
|
274
316
|
}
|
275
317
|
|
@@ -327,15 +369,15 @@ contract StakingService is
|
|
327
369
|
{
|
328
370
|
(
|
329
371
|
address authority,
|
330
|
-
address
|
331
|
-
address
|
372
|
+
address registry,
|
373
|
+
address staking
|
332
374
|
) = abi.decode(data, (address, address, address));
|
333
375
|
|
334
|
-
|
376
|
+
__Service_init(authority, registry, owner);
|
335
377
|
|
336
378
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
337
379
|
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
338
|
-
$._staking = _registerStaking(
|
380
|
+
$._staking = _registerStaking(staking);
|
339
381
|
$._dip = $._staking.getToken();
|
340
382
|
$._tokenHandler = $._staking.getTokenHandler();
|
341
383
|
|
@@ -388,7 +430,7 @@ contract StakingService is
|
|
388
430
|
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
389
431
|
|
390
432
|
// collect reward dip from provider
|
391
|
-
$.
|
433
|
+
$._tokenHandler.pullToken(
|
392
434
|
rewardProvider,
|
393
435
|
dipAmount);
|
394
436
|
}
|