@etherisc/gif-next 0.0.2-85cbb88-630 → 0.0.2-85e1eb3-876
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 +103 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +212 -473
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -381
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +814 -399
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +135 -187
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +582 -141
- 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 +1484 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1439 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +567 -67
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +385 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +573 -165
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1685 -774
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +983 -782
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +152 -350
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- 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 +129 -129
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +128 -318
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +198 -433
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +574 -270
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +158 -212
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -392
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +287 -427
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +272 -222
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +279 -419
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -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 +394 -35
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
- 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 +620 -92
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -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 +483 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +624 -560
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +198 -120
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -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 -93
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +118 -129
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +42 -6
- 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 +35 -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 +167 -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 +84 -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 +117 -318
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +48 -7
- 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 +41 -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 +141 -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 +86 -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 +1087 -160
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1273 -405
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +424 -0
- 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 +225 -104
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +175 -223
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +962 -729
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +135 -49
- 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 +63 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +174 -0
- 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 +98 -37
- 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 +33 -31
- 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 +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +69 -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 +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +109 -35
- 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 +120 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +458 -269
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +255 -25
- package/contracts/distribution/BasicDistribution.sol +21 -29
- package/contracts/distribution/BasicDistributionAuthorization.sol +34 -10
- package/contracts/distribution/Distribution.sol +48 -84
- package/contracts/distribution/DistributionService.sol +276 -130
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +11 -14
- package/contracts/distribution/IDistributionService.sol +56 -26
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +102 -43
- package/contracts/instance/IInstanceService.sol +59 -34
- package/contracts/instance/Instance.sol +193 -100
- package/contracts/instance/InstanceAdmin.sol +275 -158
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -56
- package/contracts/instance/InstanceReader.sol +478 -251
- package/contracts/instance/InstanceService.sol +293 -236
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +13 -10
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +2 -5
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +23 -26
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +39 -41
- package/contracts/pool/BasicPoolAuthorization.sol +43 -11
- package/contracts/pool/BundleService.sol +218 -128
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +43 -33
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +146 -124
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +419 -256
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +153 -80
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +13 -46
- package/contracts/product/BasicProductAuthorization.sol +33 -10
- package/contracts/product/ClaimService.sol +382 -194
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +48 -11
- package/contracts/product/IPolicyService.sol +61 -37
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +443 -273
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +201 -100
- package/contracts/product/RiskService.sol +190 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +83 -32
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +370 -212
- package/contracts/registry/RegistryAdmin.sol +110 -287
- package/contracts/registry/RegistryAuthorization.sol +308 -0
- package/contracts/registry/RegistryService.sol +42 -67
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +279 -241
- package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +70 -137
- package/contracts/shared/ComponentService.sol +452 -346
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +50 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +83 -40
- package/contracts/shared/KeyValueStore.sol +4 -4
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +33 -11
- package/contracts/shared/PolicyHolder.sol +20 -59
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +22 -38
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +164 -66
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/Staking.sol +639 -228
- package/contracts/staking/StakingLib.sol +168 -0
- package/contracts/staking/StakingManager.sol +11 -13
- package/contracts/staking/StakingReader.sol +55 -90
- package/contracts/staking/StakingService.sol +62 -152
- package/contracts/staking/StakingServiceManager.sol +9 -7
- package/contracts/staking/StakingStore.sol +640 -361
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +31 -5
- package/contracts/type/Blocknumber.sol +22 -16
- package/contracts/type/ChainId.sol +92 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- 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 +76 -44
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +26 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +14 -7
- package/contracts/type/UFixed.sol +57 -126
- package/contracts/type/Version.sol +57 -6
- package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
- package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
- package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
- package/package.json +5 -4
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
- 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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- 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/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/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/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
- package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -1,27 +1,36 @@
|
|
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 {
|
11
|
-
import {
|
12
|
-
|
13
|
-
import {
|
9
|
+
import {IStakingService} from "./IStakingService.sol";
|
10
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
11
|
+
|
12
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
13
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
14
|
+
import {ChainId, ChainIdLib} from "../type/ChainId.sol";
|
15
|
+
import {Component} from "../shared/Component.sol";
|
16
|
+
import {IComponent} from "../shared/IComponent.sol";
|
17
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
|
+
import {ObjectType, COMPONENT, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
14
20
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
|
-
import {
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
22
|
+
import {ReleaseRegistry} from "../registry/ReleaseRegistry.sol";
|
23
|
+
import {StakingLib} from "./StakingLib.sol";
|
16
24
|
import {StakingReader} from "./StakingReader.sol";
|
17
25
|
import {StakingStore} from "./StakingStore.sol";
|
18
26
|
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
19
|
-
import {Timestamp
|
27
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
20
28
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
21
30
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
22
|
-
import {UFixed
|
23
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
24
|
-
import {Versionable} from "../
|
31
|
+
import {UFixed} from "../type/UFixed.sol";
|
32
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
33
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
25
34
|
|
26
35
|
contract Staking is
|
27
36
|
Component,
|
@@ -29,14 +38,14 @@ contract Staking is
|
|
29
38
|
IStaking
|
30
39
|
{
|
31
40
|
string public constant CONTRACT_NAME = "Staking";
|
32
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
33
41
|
|
34
42
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
35
43
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
36
44
|
|
37
45
|
struct StakingStorage {
|
38
|
-
IRegistryService _registryService;
|
39
46
|
TokenRegistry _tokenRegistry;
|
47
|
+
TokenHandler _tokenHandler;
|
48
|
+
IStakingService _stakingService;
|
40
49
|
StakingStore _store;
|
41
50
|
StakingReader _reader;
|
42
51
|
NftId _protocolNftId;
|
@@ -44,83 +53,289 @@ contract Staking is
|
|
44
53
|
|
45
54
|
|
46
55
|
modifier onlyStake(NftId stakeNftId) {
|
47
|
-
|
48
|
-
|
49
|
-
|
56
|
+
_checkTypeAndOwner(stakeNftId, STAKE(), false);
|
57
|
+
_;
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
modifier onlyStakeOwner(NftId stakeNftId) {
|
62
|
+
_checkTypeAndOwner(stakeNftId, STAKE(), true);
|
50
63
|
_;
|
51
64
|
}
|
52
65
|
|
53
66
|
|
54
67
|
modifier onlyTarget(NftId targetNftId) {
|
55
|
-
|
56
|
-
|
57
|
-
|
68
|
+
_checkTypeAndOwner(targetNftId, TARGET(), false);
|
69
|
+
_;
|
70
|
+
}
|
71
|
+
|
72
|
+
|
73
|
+
modifier onlyTargetOwner(NftId targetNftId) {
|
74
|
+
_checkTypeAndOwner(targetNftId, TARGET(), true);
|
58
75
|
_;
|
59
76
|
}
|
60
77
|
|
61
|
-
|
78
|
+
//--- contract intitialization -------------------------------------------
|
79
|
+
|
80
|
+
function initializeTokenHandler()
|
81
|
+
external
|
82
|
+
virtual
|
83
|
+
{
|
84
|
+
if (msg.sender != address(getRegistry())) {
|
85
|
+
revert ErrorStakingNotRegistry(msg.sender);
|
86
|
+
}
|
87
|
+
|
88
|
+
StakingStorage storage $ = _getStakingStorage();
|
89
|
+
address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
|
90
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
91
|
+
address(getRegistry()),
|
92
|
+
address(this),
|
93
|
+
dipToken,
|
94
|
+
getRegistry().getAuthority());
|
95
|
+
}
|
96
|
+
|
97
|
+
//--- staking owner functions -------------------------------------------//
|
98
|
+
|
99
|
+
// TODO also make sure that protocol rewards can be refilled and withdrawn
|
100
|
+
|
101
|
+
/// @inheritdoc IStaking
|
102
|
+
function setProtocolLockingPeriod(Seconds newLockingPeriod)
|
103
|
+
external
|
104
|
+
virtual
|
105
|
+
restricted()
|
106
|
+
onlyOwner()
|
107
|
+
{
|
108
|
+
NftId protocolNftId = getRegistry().getProtocolNftId();
|
109
|
+
(
|
110
|
+
Seconds oldLockingPeriod,
|
111
|
+
Blocknumber lastUpdatedIn
|
112
|
+
) = _getStakingStorage()._store.setLockingPeriod(protocolNftId, newLockingPeriod);
|
113
|
+
|
114
|
+
emit LogStakingProtocolLockingPeriodSet(protocolNftId, newLockingPeriod, oldLockingPeriod, lastUpdatedIn);
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
/// @inheritdoc IStaking
|
119
|
+
function setProtocolRewardRate(UFixed newRewardRate)
|
120
|
+
external
|
121
|
+
virtual
|
122
|
+
restricted()
|
123
|
+
onlyOwner()
|
124
|
+
{
|
125
|
+
NftId protocolNftId = getRegistry().getProtocolNftId();
|
126
|
+
(
|
127
|
+
UFixed oldRewardRate,
|
128
|
+
Blocknumber lastUpdatedIn
|
129
|
+
) = _getStakingStorage()._store.setRewardRate(protocolNftId, newRewardRate);
|
130
|
+
|
131
|
+
emit LogStakingProtocolRewardRateSet(protocolNftId, newRewardRate, oldRewardRate, lastUpdatedIn);
|
132
|
+
}
|
133
|
+
|
134
|
+
|
135
|
+
/// @inheritdoc IStaking
|
136
|
+
function setStakingRate(
|
137
|
+
ChainId chainId,
|
138
|
+
address token,
|
139
|
+
UFixed stakingRate
|
140
|
+
)
|
141
|
+
external
|
142
|
+
virtual
|
143
|
+
restricted()
|
144
|
+
onlyOwner()
|
145
|
+
{
|
146
|
+
(
|
147
|
+
UFixed oldStakingRate,
|
148
|
+
Blocknumber lastUpdateIn
|
149
|
+
) = _getStakingStorage()._store.setStakingRate(chainId, token, stakingRate);
|
150
|
+
|
151
|
+
emit LogStakingStakingRateSet(chainId, token, stakingRate, oldStakingRate, lastUpdateIn);
|
152
|
+
}
|
153
|
+
|
154
|
+
|
155
|
+
/// @inheritdoc IStaking
|
156
|
+
function setStakingService(VersionPart release)
|
157
|
+
external
|
158
|
+
virtual
|
159
|
+
restricted()
|
160
|
+
onlyOwner()
|
161
|
+
{
|
162
|
+
// checks
|
163
|
+
if (!ReleaseRegistry(getRegistry().getReleaseRegistryAddress()).isActiveRelease(release)) {
|
164
|
+
revert ErrorStakingReleaseNotActive(release);
|
165
|
+
}
|
166
|
+
|
167
|
+
address stakingServiceAddress = getRegistry().getServiceAddress(STAKING(), release);
|
168
|
+
if (stakingServiceAddress == address(0)) {
|
169
|
+
revert ErrorStakingServiceNotFound(release);
|
170
|
+
}
|
171
|
+
|
172
|
+
// effects
|
173
|
+
address oldStakingService = address(_getStakingStorage()._stakingService);
|
174
|
+
_getStakingStorage()._stakingService = IStakingService(stakingServiceAddress);
|
175
|
+
|
176
|
+
emit LogStakingStakingServiceSet(stakingServiceAddress, release, oldStakingService);
|
177
|
+
}
|
178
|
+
|
179
|
+
|
180
|
+
/// @inheritdoc IStaking
|
62
181
|
function setStakingReader(StakingReader stakingReader)
|
63
182
|
external
|
64
183
|
virtual
|
184
|
+
restricted()
|
65
185
|
onlyOwner()
|
66
186
|
{
|
67
187
|
if(stakingReader.getStaking() != IStaking(this)) {
|
68
188
|
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
69
189
|
}
|
70
190
|
|
191
|
+
address oldReader = address(_getStakingStorage()._reader);
|
71
192
|
_getStakingStorage()._reader = stakingReader;
|
193
|
+
|
194
|
+
emit LogStakingStakingReaderSet(address(stakingReader), oldReader);
|
72
195
|
}
|
73
196
|
|
74
197
|
|
75
|
-
|
76
|
-
function
|
198
|
+
/// @inheritdoc IStaking
|
199
|
+
function addToken(
|
200
|
+
ChainId chainId,
|
201
|
+
address token
|
202
|
+
)
|
77
203
|
external
|
78
204
|
virtual
|
205
|
+
restricted()
|
79
206
|
onlyOwner()
|
80
207
|
{
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
208
|
+
_addToken(
|
209
|
+
_getStakingStorage(), chainId, token);
|
210
|
+
}
|
211
|
+
|
212
|
+
|
213
|
+
/// @inheritdoc IStaking
|
214
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
215
|
+
public
|
216
|
+
virtual
|
217
|
+
restricted()
|
218
|
+
onlyOwner()
|
219
|
+
{
|
220
|
+
Amount oldAllowanceAmount = AmountLib.toAmount(
|
221
|
+
token.allowance(
|
222
|
+
address(this),
|
223
|
+
address(_getStakingStorage()._tokenHandler)));
|
224
|
+
|
225
|
+
// staking token handler approval via its own implementation in staking service
|
226
|
+
IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
|
227
|
+
token,
|
228
|
+
amount);
|
229
|
+
|
230
|
+
emit LogStakingTokenHandlerApproved(address(token), amount, oldAllowanceAmount);
|
231
|
+
}
|
232
|
+
|
233
|
+
//--- target management -------------------------------------------------//
|
234
|
+
|
235
|
+
|
236
|
+
/// @inheritdoc IStaking
|
237
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
238
|
+
external
|
239
|
+
virtual
|
240
|
+
restricted()
|
241
|
+
onlyTarget(targetNftId)
|
242
|
+
returns (Amount newBalance)
|
243
|
+
{
|
244
|
+
address transferFrom = msg.sender;
|
245
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
246
|
+
}
|
247
|
+
|
248
|
+
|
249
|
+
/// @inheritdoc IStaking
|
250
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
251
|
+
external
|
252
|
+
virtual
|
253
|
+
restricted()
|
254
|
+
onlyTarget(targetNftId)
|
255
|
+
returns (Amount newBalance)
|
256
|
+
{
|
257
|
+
// special case 1: protocol target: staking owner is recipient
|
258
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
259
|
+
// verify that the caller is the staking owner
|
260
|
+
if (msg.sender != getOwner()) {
|
261
|
+
revert ErrorStakingNotStakingOwner();
|
262
|
+
}
|
263
|
+
|
264
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, getOwner());
|
265
|
+
}
|
266
|
+
|
267
|
+
// special case 2: off-chain targets
|
268
|
+
// TODO decide how to handle and implement
|
269
|
+
|
270
|
+
// default: on-chain target owner is recipient
|
271
|
+
address targetOwner = getRegistry().ownerOf(targetNftId);
|
272
|
+
// verify that the caller is the target owner
|
273
|
+
if (msg.sender != targetOwner) {
|
274
|
+
revert ErrorStakingNotNftOwner(targetNftId);
|
275
|
+
}
|
276
|
+
|
277
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
|
278
|
+
}
|
279
|
+
|
280
|
+
|
281
|
+
/// @inheritdoc IStaking
|
282
|
+
function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom)
|
283
|
+
external
|
284
|
+
virtual
|
285
|
+
restricted()
|
286
|
+
onlyTarget(targetNftId)
|
287
|
+
returns (Amount newBalance)
|
288
|
+
{
|
289
|
+
address fundingBy = msg.sender;
|
290
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
291
|
+
}
|
292
|
+
|
293
|
+
|
294
|
+
/// @inheritdoc IStaking
|
295
|
+
function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo)
|
296
|
+
external
|
297
|
+
virtual
|
298
|
+
restricted()
|
299
|
+
onlyTarget(targetNftId)
|
300
|
+
returns (Amount newBalance)
|
301
|
+
{
|
302
|
+
// special case 1: protocol target: staking owner is recipient
|
303
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
304
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, transferTo);
|
85
305
|
}
|
86
306
|
|
87
|
-
|
88
|
-
|
307
|
+
// special case 2: off-chain targets
|
308
|
+
// TODO decide how to handle and implement
|
89
309
|
|
90
|
-
|
310
|
+
// default: on-chain target owner is recipient
|
311
|
+
address targetOwner = getRegistry().ownerOf(targetNftId);
|
312
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
|
91
313
|
}
|
92
314
|
|
93
|
-
// target management
|
94
315
|
|
316
|
+
/// @inheritdoc IStaking
|
95
317
|
function registerTarget(
|
96
318
|
NftId targetNftId,
|
97
319
|
ObjectType expectedObjectType,
|
98
|
-
uint256 chainId,
|
99
320
|
Seconds initialLockingPeriod,
|
100
321
|
UFixed initialRewardRate
|
101
322
|
)
|
102
323
|
external
|
103
324
|
virtual
|
104
|
-
restricted()
|
325
|
+
restricted() // staking service
|
105
326
|
{
|
106
|
-
|
107
|
-
getRegistry(),
|
108
|
-
_getStakingStorage()._reader,
|
109
|
-
targetNftId,
|
110
|
-
expectedObjectType,
|
111
|
-
initialLockingPeriod,
|
112
|
-
initialRewardRate);
|
113
|
-
|
327
|
+
// checks done by staking store
|
114
328
|
_getStakingStorage()._store.createTarget(
|
115
329
|
targetNftId,
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
330
|
+
expectedObjectType,
|
331
|
+
initialLockingPeriod,
|
332
|
+
initialRewardRate);
|
333
|
+
|
334
|
+
emit LogStakingTargetCreated(targetNftId, expectedObjectType, initialLockingPeriod, initialRewardRate, AmountLib.max());
|
121
335
|
}
|
122
336
|
|
123
337
|
|
338
|
+
/// @inheritdoc IStaking
|
124
339
|
function setLockingPeriod(
|
125
340
|
NftId targetNftId,
|
126
341
|
Seconds lockingPeriod
|
@@ -130,66 +345,76 @@ contract Staking is
|
|
130
345
|
restricted()
|
131
346
|
onlyTarget(targetNftId)
|
132
347
|
{
|
133
|
-
(
|
134
|
-
Seconds oldLockingPeriod,
|
135
|
-
TargetInfo memory targetInfo
|
136
|
-
) = TargetManagerLib.updateLockingPeriod(
|
137
|
-
this,
|
138
|
-
targetNftId,
|
139
|
-
lockingPeriod);
|
140
|
-
|
141
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
348
|
+
(Seconds oldLockingPeriod, ) = _getStakingStorage()._store.setLockingPeriod(targetNftId, lockingPeriod);
|
142
349
|
|
143
|
-
emit
|
350
|
+
emit LogStakingTargetLockingPeriodSet(targetNftId, lockingPeriod, oldLockingPeriod);
|
144
351
|
}
|
145
352
|
|
146
|
-
// TODO add function to set protocol reward rate: onlyOwner
|
147
|
-
// get protocol nft id (from where)
|
148
353
|
|
354
|
+
/// @inheritdoc IStaking
|
149
355
|
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
150
356
|
external
|
151
357
|
virtual
|
152
358
|
restricted()
|
153
359
|
onlyTarget(targetNftId)
|
154
360
|
{
|
155
|
-
(
|
156
|
-
|
157
|
-
TargetInfo memory targetInfo
|
158
|
-
) = TargetManagerLib.updateRewardRate(
|
159
|
-
this,
|
160
|
-
targetNftId,
|
161
|
-
rewardRate);
|
162
|
-
|
163
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
164
|
-
|
165
|
-
emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
|
361
|
+
(UFixed oldRewardRate,) = _getStakingStorage()._store.setRewardRate(targetNftId, rewardRate);
|
362
|
+
emit LogStakingTargetRewardRateSet(targetNftId, rewardRate, oldRewardRate);
|
166
363
|
}
|
167
364
|
|
168
365
|
|
169
|
-
|
366
|
+
/// @inheritdoc IStaking
|
367
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
|
170
368
|
external
|
171
369
|
virtual
|
172
370
|
restricted()
|
173
|
-
|
371
|
+
onlyTarget(targetNftId)
|
174
372
|
{
|
175
|
-
|
176
|
-
|
177
|
-
newBalance = $._store.increaseReserves(targetNftId, dipAmount);
|
373
|
+
_getStakingStorage()._store.setMaxStakedAmount(targetNftId, maxStakedAmount);
|
374
|
+
emit LogStakingTargetMaxStakedAmountSet(targetNftId, maxStakedAmount);
|
178
375
|
}
|
179
376
|
|
180
|
-
|
181
|
-
|
377
|
+
// TODO cleanup
|
378
|
+
// /// @inheritdoc IStaking
|
379
|
+
// function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address from)
|
380
|
+
// external
|
381
|
+
// virtual
|
382
|
+
// restricted()
|
383
|
+
// returns (Amount newBalance)
|
384
|
+
// {
|
385
|
+
// _refillRewardReserves(targetNftId, dipAmount, from);
|
386
|
+
// }
|
387
|
+
|
388
|
+
|
389
|
+
// /// @inheritdoc IStaking
|
390
|
+
// function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address to)
|
391
|
+
// external
|
392
|
+
// virtual
|
393
|
+
// restricted()
|
394
|
+
// returns (Amount newBalance)
|
395
|
+
// {
|
396
|
+
// _withdrawRewardReserves(targetNftId, dipAmount, to);
|
397
|
+
// }
|
398
|
+
|
399
|
+
|
400
|
+
/// @inheritdoc IStaking
|
401
|
+
function addTargetToken(NftId targetNftId, address token)
|
182
402
|
external
|
183
403
|
virtual
|
184
404
|
restricted()
|
185
|
-
|
405
|
+
onlyTarget(targetNftId)
|
186
406
|
{
|
187
|
-
// update book keeping of reward reserves
|
188
407
|
StakingStorage storage $ = _getStakingStorage();
|
189
|
-
|
408
|
+
ChainId chainId = ChainIdLib.fromNftId(targetNftId);
|
409
|
+
_addToken($, chainId, token);
|
410
|
+
|
411
|
+
$._store.addTargetToken(targetNftId, token);
|
412
|
+
|
413
|
+
emit LogStakingTargetTokenAdded(targetNftId, chainId, token);
|
190
414
|
}
|
191
415
|
|
192
416
|
|
417
|
+
/// @inheritdoc IStaking
|
193
418
|
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
194
419
|
external
|
195
420
|
virtual
|
@@ -197,12 +422,13 @@ contract Staking is
|
|
197
422
|
returns (Amount newBalance)
|
198
423
|
{
|
199
424
|
StakingStorage storage $ = _getStakingStorage();
|
200
|
-
|
201
|
-
|
202
|
-
|
425
|
+
newBalance = $._store.increaseTotalValueLocked(targetNftId, token, amount);
|
426
|
+
|
427
|
+
emit LogStakingTotalValueLockedIncreased(targetNftId, token, amount, newBalance);
|
203
428
|
}
|
204
429
|
|
205
430
|
|
431
|
+
/// @inheritdoc IStaking
|
206
432
|
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
207
433
|
external
|
208
434
|
virtual
|
@@ -210,12 +436,14 @@ contract Staking is
|
|
210
436
|
returns (Amount newBalance)
|
211
437
|
{
|
212
438
|
StakingStorage storage $ = _getStakingStorage();
|
213
|
-
|
214
|
-
|
215
|
-
|
439
|
+
newBalance = $._store.decreaseTotalValueLocked(targetNftId, token, amount);
|
440
|
+
|
441
|
+
emit LogStakingTotalValueLockedDecreased(targetNftId, token, amount, newBalance);
|
216
442
|
}
|
217
443
|
|
218
444
|
|
445
|
+
// TODO add to interface and implement
|
446
|
+
/// inheritdoc IStaking
|
219
447
|
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
220
448
|
external
|
221
449
|
virtual
|
@@ -225,6 +453,8 @@ contract Staking is
|
|
225
453
|
|
226
454
|
}
|
227
455
|
|
456
|
+
// TODO add to interface and implement
|
457
|
+
/// @inheritdoc IStaking
|
228
458
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
229
459
|
external
|
230
460
|
virtual
|
@@ -236,270 +466,451 @@ contract Staking is
|
|
236
466
|
|
237
467
|
//--- staking functions -------------------------------------------------//
|
238
468
|
|
469
|
+
/// @inheritdoc IStaking
|
239
470
|
function createStake(
|
240
|
-
NftId stakeNftId,
|
241
471
|
NftId targetNftId,
|
242
|
-
Amount stakeAmount
|
472
|
+
Amount stakeAmount,
|
473
|
+
address stakeOwner
|
243
474
|
)
|
244
475
|
external
|
245
476
|
virtual
|
246
|
-
restricted()
|
477
|
+
restricted()
|
478
|
+
onlyTarget(targetNftId)
|
479
|
+
returns (NftId stakeNftId)
|
247
480
|
{
|
248
481
|
StakingStorage storage $ = _getStakingStorage();
|
249
|
-
Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
|
250
|
-
$._reader,
|
251
|
-
targetNftId,
|
252
|
-
stakeAmount);
|
253
482
|
|
254
|
-
//
|
255
|
-
$.
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
//
|
261
|
-
$.
|
262
|
-
stakeNftId,
|
263
|
-
targetNftId,
|
264
|
-
stakeAmount);
|
483
|
+
// effects (includes further checks in service)
|
484
|
+
stakeNftId = $._stakingService.createStakeObject(targetNftId, stakeOwner);
|
485
|
+
Timestamp lockedUntil = $._store.createStake(stakeNftId, targetNftId, stakeAmount);
|
486
|
+
|
487
|
+
emit LogStakingStakeCreated(stakeNftId, targetNftId, stakeAmount, lockedUntil, stakeOwner);
|
488
|
+
|
489
|
+
// interactions
|
490
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
265
491
|
}
|
266
492
|
|
267
493
|
|
494
|
+
/// @inheritdoc IStaking
|
268
495
|
function stake(
|
269
496
|
NftId stakeNftId,
|
270
497
|
Amount stakeAmount
|
271
498
|
)
|
272
499
|
external
|
273
500
|
virtual
|
274
|
-
restricted()
|
275
|
-
|
276
|
-
returns (Amount
|
501
|
+
restricted()
|
502
|
+
onlyStakeOwner(stakeNftId)
|
503
|
+
returns (Amount newStakeBalance)
|
277
504
|
{
|
278
505
|
StakingStorage storage $ = _getStakingStorage();
|
279
|
-
stakeBalance = StakeManagerLib.stake(
|
280
|
-
getRegistry(),
|
281
|
-
$._reader,
|
282
|
-
$._store,
|
283
|
-
stakeNftId,
|
284
|
-
stakeAmount);
|
285
|
-
}
|
286
506
|
|
507
|
+
// update rewards for stake (add rewards since last update)
|
508
|
+
(
|
509
|
+
Amount rewardIncreaseAmount,
|
510
|
+
Seconds targetLockingPeriod,
|
511
|
+
Amount stakeBalance,
|
512
|
+
Amount rewardBalance,
|
513
|
+
Timestamp lockedUntil
|
514
|
+
) = _updateRewards($, stakeNftId);
|
515
|
+
|
516
|
+
// no additional locking duration if no additional stakes
|
517
|
+
if (stakeAmount.eqz()) {
|
518
|
+
targetLockingPeriod = SecondsLib.zero();
|
519
|
+
}
|
287
520
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
virtual
|
294
|
-
restricted() // only staking service
|
295
|
-
onlyStake(stakeNftId)
|
296
|
-
returns (NftId newStakeNftId)
|
297
|
-
{
|
298
|
-
// TODO add check that allows additional staking amount
|
299
|
-
StakingStorage storage $ = _getStakingStorage();
|
521
|
+
// increase stakes and restake rewards
|
522
|
+
bool restakeRewards = true;
|
523
|
+
if (restakeRewards && rewardBalance.gtz()) {
|
524
|
+
emit LogStakingRewardsRestaked(stakeNftId, rewardBalance + rewardBalance, stakeBalance, AmountLib.zero(), lockedUntil);
|
525
|
+
}
|
300
526
|
|
301
|
-
|
302
|
-
|
527
|
+
(
|
528
|
+
stakeBalance,
|
529
|
+
rewardBalance,
|
530
|
+
lockedUntil
|
531
|
+
) = $._store.increaseStakes(
|
532
|
+
stakeNftId,
|
533
|
+
stakeAmount,
|
534
|
+
targetLockingPeriod,
|
535
|
+
restakeRewards);
|
303
536
|
|
537
|
+
// collect staked DIP token by staking service
|
538
|
+
if (stakeAmount.gtz()) {
|
539
|
+
emit LogStakingStaked(stakeNftId, stakeAmount, stakeBalance, rewardBalance, lockedUntil);
|
304
540
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
onlyStake(stakeNftId)
|
310
|
-
{
|
311
|
-
StakingStorage storage $ = _getStakingStorage();
|
312
|
-
_updateRewards($._reader, $._store, stakeNftId);
|
541
|
+
// interactions
|
542
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
543
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
544
|
+
}
|
313
545
|
}
|
314
546
|
|
315
547
|
|
316
|
-
|
548
|
+
/// @inheritdoc IStaking
|
549
|
+
function unstake(NftId stakeNftId)
|
317
550
|
external
|
318
551
|
virtual
|
319
552
|
restricted() // only staking service
|
320
|
-
|
553
|
+
onlyStakeOwner(stakeNftId)
|
321
554
|
returns (
|
555
|
+
Amount unstakedAmount,
|
322
556
|
Amount rewardsClaimedAmount
|
323
557
|
)
|
324
558
|
{
|
325
559
|
StakingStorage storage $ = _getStakingStorage();
|
560
|
+
bool restakeRewards = true;
|
561
|
+
Timestamp lockedUntil;
|
326
562
|
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
563
|
+
(
|
564
|
+
unstakedAmount,
|
565
|
+
rewardsClaimedAmount,
|
566
|
+
lockedUntil
|
567
|
+
) = _unstakeAll(
|
568
|
+
$,
|
332
569
|
stakeNftId,
|
333
|
-
|
334
|
-
AmountLib.max());
|
570
|
+
restakeRewards); // restake rewards
|
335
571
|
|
336
|
-
//
|
337
|
-
|
572
|
+
// collect staked DIP token by staking service
|
573
|
+
Amount collectedAmount = unstakedAmount + rewardsClaimedAmount;
|
574
|
+
if (collectedAmount.gtz()) {
|
575
|
+
|
576
|
+
// interactions
|
577
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
578
|
+
$._stakingService.pushDipToken(collectedAmount, stakeOwner);
|
579
|
+
}
|
338
580
|
}
|
339
581
|
|
340
582
|
|
341
|
-
|
583
|
+
/// @inheritdoc IStaking
|
584
|
+
function restake(
|
585
|
+
NftId stakeNftId,
|
586
|
+
NftId newTargetNftId
|
587
|
+
)
|
342
588
|
external
|
343
589
|
virtual
|
344
590
|
restricted() // only staking service
|
345
|
-
|
591
|
+
onlyStakeOwner(stakeNftId)
|
592
|
+
onlyTarget(newTargetNftId)
|
346
593
|
returns (
|
347
|
-
|
348
|
-
Amount
|
594
|
+
NftId newStakeNftId,
|
595
|
+
Amount newStakedAmount
|
349
596
|
)
|
350
597
|
{
|
351
|
-
// TODO add check that stake locking is in the past
|
352
598
|
StakingStorage storage $ = _getStakingStorage();
|
599
|
+
address stakeOwner = msg.sender;
|
353
600
|
|
354
|
-
// update rewards since last update
|
355
|
-
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
356
|
-
|
357
|
-
// unstake all available dips
|
358
601
|
(
|
359
|
-
unstakedAmount,
|
360
|
-
rewardsClaimedAmount
|
361
|
-
) =
|
362
|
-
stakeNftId,
|
363
|
-
targetNftId,
|
364
|
-
AmountLib.max(), // unstake all stakes
|
365
|
-
AmountLib.max()); // claim all rewards
|
366
|
-
|
367
|
-
// update reward reserves
|
368
|
-
$._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
|
369
|
-
}
|
602
|
+
Amount unstakedAmount,
|
603
|
+
Amount rewardsClaimedAmount,
|
604
|
+
) = _unstakeAll($, stakeNftId, true); // restake rewards
|
370
605
|
|
606
|
+
newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
|
607
|
+
newStakedAmount = unstakedAmount + rewardsClaimedAmount;
|
608
|
+
$._store.createStake(
|
609
|
+
newStakeNftId,
|
610
|
+
newTargetNftId,
|
611
|
+
newStakedAmount);
|
371
612
|
|
613
|
+
emit LogStakingStakeRestaked(newStakeNftId, newTargetNftId, newStakedAmount, stakeOwner, stakeNftId);
|
614
|
+
}
|
372
615
|
|
373
|
-
//--- other functions ---------------------------------------------------//
|
374
616
|
|
375
|
-
function
|
617
|
+
function updateRewards(NftId stakeNftId)
|
376
618
|
external
|
619
|
+
virtual
|
377
620
|
restricted() // only staking service
|
621
|
+
onlyStake(stakeNftId)
|
622
|
+
returns (Amount newRewardAmount)
|
378
623
|
{
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
383
|
-
getToken(),
|
384
|
-
from,
|
385
|
-
address(tokenHandler),
|
386
|
-
dipAmount);
|
387
|
-
|
388
|
-
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
624
|
+
_updateRewards(
|
625
|
+
_getStakingStorage(),
|
626
|
+
stakeNftId);
|
389
627
|
}
|
390
628
|
|
391
629
|
|
392
|
-
function
|
630
|
+
function claimRewards(NftId stakeNftId)
|
393
631
|
external
|
632
|
+
virtual
|
394
633
|
restricted() // only staking service
|
634
|
+
onlyStake(stakeNftId)
|
635
|
+
returns (
|
636
|
+
Amount rewardsClaimedAmount
|
637
|
+
)
|
395
638
|
{
|
396
|
-
|
397
|
-
|
639
|
+
StakingStorage storage $ = _getStakingStorage();
|
640
|
+
|
641
|
+
// update rewards since last update
|
642
|
+
_updateRewards($, stakeNftId);
|
643
|
+
|
644
|
+
(
|
645
|
+
Amount restakedRewardAmount,
|
646
|
+
Amount unstakedAmount,
|
647
|
+
Amount claimedAmount,
|
648
|
+
Amount stakedBalance,
|
649
|
+
Amount rewardBalance,
|
650
|
+
Timestamp lockedUntil
|
651
|
+
) = $._store.decreaseStakes(
|
652
|
+
stakeNftId,
|
653
|
+
AmountLib.zero(), // unstake dip amount
|
654
|
+
AmountLib.max(), // unstake reward amount
|
655
|
+
false); // restake rewards
|
398
656
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
address(tokenHandler),
|
403
|
-
dipAmount);
|
657
|
+
// collect staked DIP token by staking service
|
658
|
+
if (claimedAmount.gtz()) {
|
659
|
+
emit LogStakingRewardsClaimed(stakeNftId, claimedAmount, stakedBalance, rewardBalance, lockedUntil);
|
404
660
|
|
405
|
-
|
661
|
+
// interactions
|
662
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
663
|
+
$._stakingService.pushDipToken(claimedAmount, stakeOwner);
|
664
|
+
}
|
406
665
|
}
|
407
666
|
|
408
667
|
|
409
668
|
//--- view functions ----------------------------------------------------//
|
410
669
|
|
411
|
-
function getStakingReader() public view returns (StakingReader reader) {
|
670
|
+
function getStakingReader() public virtual view returns (StakingReader reader) {
|
412
671
|
return _getStakingStorage()._reader;
|
413
672
|
}
|
414
673
|
|
415
|
-
function getStakingStore() external view returns (StakingStore stakingStore) {
|
674
|
+
function getStakingStore() external virtual view returns (StakingStore stakingStore) {
|
416
675
|
return _getStakingStorage()._store;
|
417
676
|
}
|
418
677
|
|
419
|
-
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
678
|
+
function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
|
420
679
|
return address(_getStakingStorage()._tokenRegistry);
|
421
680
|
}
|
422
681
|
|
682
|
+
function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
|
683
|
+
return _getStakingStorage()._tokenHandler;
|
684
|
+
}
|
423
685
|
|
424
|
-
// from
|
686
|
+
// from IRegisterable
|
687
|
+
function getRelease()
|
688
|
+
public
|
689
|
+
pure
|
690
|
+
virtual override (IRelease, Registerable)
|
691
|
+
returns(VersionPart)
|
692
|
+
{
|
693
|
+
return VersionPartLib.toVersionPart(3);
|
694
|
+
}
|
695
|
+
|
696
|
+
// from IVersionable
|
425
697
|
function getVersion()
|
426
698
|
public
|
427
699
|
pure
|
428
|
-
virtual override (IVersionable, Versionable)
|
700
|
+
virtual override (Component, IVersionable, Versionable)
|
429
701
|
returns(Version)
|
430
702
|
{
|
431
|
-
return VersionLib.toVersion(
|
703
|
+
return VersionLib.toVersion(3,0,0);
|
432
704
|
}
|
433
705
|
|
434
706
|
//--- internal functions ------------------------------------------------//
|
435
707
|
|
708
|
+
|
709
|
+
function _refillRewardReserves(NftId targetNftId, Amount dipAmount, address transferFrom)
|
710
|
+
internal
|
711
|
+
virtual
|
712
|
+
returns (Amount newBalance)
|
713
|
+
{
|
714
|
+
// checks + effects
|
715
|
+
StakingStorage storage $ = _getStakingStorage();
|
716
|
+
newBalance = $._store.refillRewardReserves(targetNftId, dipAmount);
|
717
|
+
|
718
|
+
// interactions
|
719
|
+
// collect DIP token from target owner
|
720
|
+
if (dipAmount.gtz()) {
|
721
|
+
$._stakingService.pullDipToken(dipAmount, transferFrom);
|
722
|
+
}
|
723
|
+
}
|
724
|
+
|
725
|
+
|
726
|
+
function _withdrawRewardReserves(NftId targetNftId, Amount dipAmount, address transferTo)
|
727
|
+
internal
|
728
|
+
virtual
|
729
|
+
returns (Amount newBalance)
|
730
|
+
{
|
731
|
+
// checks + effects
|
732
|
+
StakingStorage storage $ = _getStakingStorage();
|
733
|
+
newBalance = $._store.withdrawRewardReserves(targetNftId, dipAmount);
|
734
|
+
|
735
|
+
// interactions
|
736
|
+
// transfer DIP token to designated address
|
737
|
+
if (dipAmount.gtz()) {
|
738
|
+
$._stakingService.pushDipToken(dipAmount, transferTo);
|
739
|
+
}
|
740
|
+
}
|
741
|
+
|
742
|
+
|
436
743
|
function _updateRewards(
|
437
|
-
|
438
|
-
StakingStore store,
|
744
|
+
StakingStorage storage $,
|
439
745
|
NftId stakeNftId
|
746
|
+
)
|
747
|
+
internal
|
748
|
+
virtual
|
749
|
+
returns (
|
750
|
+
Amount rewardIncreaseAmount,
|
751
|
+
Seconds targetLockingPeriod,
|
752
|
+
Amount stakeBalance,
|
753
|
+
Amount rewardBalance,
|
754
|
+
Timestamp lockedUntil
|
755
|
+
)
|
756
|
+
{
|
757
|
+
(
|
758
|
+
rewardIncreaseAmount,
|
759
|
+
targetLockingPeriod,
|
760
|
+
stakeBalance,
|
761
|
+
rewardBalance,
|
762
|
+
lockedUntil
|
763
|
+
) = $._store.updateRewards(stakeNftId);
|
764
|
+
|
765
|
+
if (rewardIncreaseAmount.gtz()) {
|
766
|
+
emit LogStakingStakeRewardsUpdated(stakeNftId, rewardIncreaseAmount, stakeBalance, rewardBalance, lockedUntil);
|
767
|
+
}
|
768
|
+
}
|
769
|
+
|
770
|
+
|
771
|
+
function _unstakeAll(
|
772
|
+
StakingStorage storage $,
|
773
|
+
NftId stakeNftId,
|
774
|
+
bool restakeRewards
|
440
775
|
)
|
441
776
|
internal
|
442
777
|
virtual
|
443
|
-
returns (
|
778
|
+
returns (
|
779
|
+
Amount unstakedAmount,
|
780
|
+
Amount claimedAmount,
|
781
|
+
Timestamp lockedUntil
|
782
|
+
)
|
444
783
|
{
|
445
|
-
|
784
|
+
// additional checks (most checks are done prior to calling this function)
|
785
|
+
if ($._store.isStakeLocked(stakeNftId)) {
|
786
|
+
revert ErrorStakingStakeLocked(stakeNftId, $._store.getStakeInfo(stakeNftId).lockedUntil);
|
787
|
+
}
|
788
|
+
|
789
|
+
// update rewards since last update
|
790
|
+
(,,,, lockedUntil) = _updateRewards($, stakeNftId);
|
791
|
+
Amount restakedRewardAmount;
|
792
|
+
Amount stakeBalance;
|
793
|
+
Amount rewardBalance;
|
446
794
|
|
447
|
-
(
|
448
|
-
|
449
|
-
|
795
|
+
(
|
796
|
+
restakedRewardAmount,
|
797
|
+
unstakedAmount,
|
798
|
+
claimedAmount,
|
799
|
+
stakeBalance,
|
800
|
+
rewardBalance,
|
801
|
+
) = $._store.decreaseStakes(
|
450
802
|
stakeNftId,
|
451
|
-
|
803
|
+
AmountLib.max(), // unstake all stakes
|
804
|
+
AmountLib.max(), // claim all rewards
|
805
|
+
restakeRewards);
|
452
806
|
|
453
|
-
|
454
|
-
stakeNftId,
|
455
|
-
|
456
|
-
|
807
|
+
if (restakedRewardAmount.gtz()) {
|
808
|
+
emit LogStakingRewardsRestaked(stakeNftId, restakedRewardAmount, stakeBalance + unstakedAmount, rewardBalance + claimedAmount, lockedUntil);
|
809
|
+
}
|
810
|
+
|
811
|
+
if (unstakedAmount.gtz() || claimedAmount.gtz()) {
|
812
|
+
emit LogStakingUnstaked(stakeNftId, unstakedAmount + claimedAmount, stakeBalance, rewardBalance, lockedUntil);
|
813
|
+
}
|
814
|
+
}
|
815
|
+
|
816
|
+
|
817
|
+
function _addToken(
|
818
|
+
StakingStorage storage $,
|
819
|
+
ChainId chainId,
|
820
|
+
address token
|
821
|
+
)
|
822
|
+
internal
|
823
|
+
virtual
|
824
|
+
{
|
825
|
+
if ($._store.getTokenInfo(chainId, token).lastUpdateIn.eqz()) {
|
826
|
+
$._store.addToken(chainId, token);
|
827
|
+
|
828
|
+
emit LogStakingTokenAdded(chainId, token);
|
829
|
+
}
|
457
830
|
}
|
458
831
|
|
459
832
|
|
833
|
+
/// @dev top level initializer (upgradable contract)
|
460
834
|
function _initialize(
|
461
835
|
address owner,
|
462
836
|
bytes memory data
|
463
837
|
)
|
464
838
|
internal
|
465
839
|
virtual override
|
466
|
-
|
840
|
+
onlyInitializing()
|
467
841
|
{
|
468
842
|
(
|
469
843
|
address registryAddress,
|
470
844
|
address tokenRegistryAddress,
|
471
|
-
address stakingStoreAddress
|
472
|
-
|
473
|
-
) = abi.decode(data, (address, address, address, address));
|
845
|
+
address stakingStoreAddress
|
846
|
+
) = abi.decode(data, (address, address, address));
|
474
847
|
|
475
|
-
//
|
848
|
+
// wiring to external contracts
|
476
849
|
IRegistry registry = IRegistry(registryAddress);
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
850
|
+
StakingStorage storage $ = _getStakingStorage();
|
851
|
+
$._protocolNftId = registry.getProtocolNftId();
|
852
|
+
$._store = StakingStore(stakingStoreAddress);
|
853
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
854
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
855
|
+
// staking service has to be set via setStakingService after deploying the first GIF release
|
856
|
+
|
857
|
+
__Component_init(
|
858
|
+
registry.getAuthority(),
|
859
|
+
address(registry),
|
860
|
+
registry.getNftId(), // parent nft id
|
485
861
|
CONTRACT_NAME,
|
486
|
-
dipTokenAddress,
|
487
862
|
STAKING(),
|
488
863
|
false, // is interceptor
|
489
|
-
|
864
|
+
owner,
|
490
865
|
"", // registry data
|
491
866
|
""); // component data
|
492
867
|
|
493
|
-
|
868
|
+
// Protocol target is created in the StakingStore constructor.
|
869
|
+
// This allows setting up the protocol target before the full
|
870
|
+
// staking authorization setup is in place.
|
871
|
+
_checkAndLogProtocolTargetCreation();
|
494
872
|
|
495
|
-
|
873
|
+
_registerInterface(type(IStaking).interfaceId);
|
874
|
+
}
|
875
|
+
|
876
|
+
|
877
|
+
function _checkAndLogProtocolTargetCreation()
|
878
|
+
internal
|
879
|
+
virtual
|
880
|
+
{
|
496
881
|
StakingStorage storage $ = _getStakingStorage();
|
497
|
-
|
498
|
-
$._store = StakingStore(stakingStoreAddress);
|
499
|
-
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
500
|
-
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
882
|
+
TargetInfo memory protocolInfo = $._store.getTargetInfo($._protocolNftId);
|
501
883
|
|
502
|
-
|
884
|
+
if (protocolInfo.lastUpdateIn.eqz()) {
|
885
|
+
revert ErrorStakingTargetNotFound($._protocolNftId);
|
886
|
+
}
|
887
|
+
|
888
|
+
emit LogStakingTargetCreated($._protocolNftId, protocolInfo.objectType, protocolInfo.lockingPeriod, protocolInfo.rewardRate, protocolInfo.maxStakedAmount);
|
889
|
+
}
|
890
|
+
|
891
|
+
|
892
|
+
function _checkTypeAndOwner(NftId nftId, ObjectType expectedObjectType, bool checkOwner)
|
893
|
+
internal
|
894
|
+
view
|
895
|
+
{
|
896
|
+
if (expectedObjectType == STAKE()) {
|
897
|
+
if (!_getStakingStorage()._store.exists(nftId)) {
|
898
|
+
revert ErrorStakingNotStake(nftId);
|
899
|
+
}
|
900
|
+
} else {
|
901
|
+
if (expectedObjectType == TARGET()) {
|
902
|
+
if (!_getStakingStorage()._store.getTargetSet().exists(nftId)) {
|
903
|
+
revert ErrorStakingNotTarget(nftId);
|
904
|
+
}
|
905
|
+
}
|
906
|
+
}
|
907
|
+
|
908
|
+
if (checkOwner) {
|
909
|
+
address nftOwner = getRegistry().ownerOf(nftId);
|
910
|
+
if (msg.sender != nftOwner) {
|
911
|
+
revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
|
912
|
+
}
|
913
|
+
}
|
503
914
|
}
|
504
915
|
|
505
916
|
|