@etherisc/gif-next 0.0.2-83889c4-030 → 0.0.2-839c4b8-393
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 +137 -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 +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
- 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 +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared/IAccessManagerExtended.sol/IAccessManagerExtended.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +605 -795
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -616
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +763 -303
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +235 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -282
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +547 -77
- 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 +1474 -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 +2043 -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 +1429 -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 +1161 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -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 +2575 -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/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -195
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +594 -101
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +510 -68
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +600 -235
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1663 -845
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +498 -213
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1500 -2103
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- 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/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -139
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +110 -10
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -423
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +222 -177
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +184 -92
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +576 -243
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +223 -103
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +395 -52
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -406
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +756 -372
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -694
- 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 +934 -533
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -102
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +372 -170
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +166 -98
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +489 -231
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +195 -119
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +313 -8
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +362 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +429 -100
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -79
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -271
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +289 -150
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +567 -309
- 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 +203 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +258 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -129
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +316 -606
- 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 +384 -69
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +109 -147
- 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 +617 -133
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1908 -155
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +159 -276
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +148 -84
- 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 +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
- 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 -287
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +620 -559
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -127
- 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 -103
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +545 -237
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -139
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- 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 +96 -1
- 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 +125 -376
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +92 -104
- 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 +1513 -204
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +261 -107
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1653 -523
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +186 -116
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +315 -295
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -104
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1725 -817
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +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 +193 -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 +4 -4
- 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 +140 -4
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
- 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 +126 -33
- 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 +780 -0
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +158 -0
- package/contracts/authorization/Authorization.sol +169 -0
- package/contracts/authorization/IAccess.sol +67 -0
- package/contracts/authorization/IAccessAdmin.sol +144 -0
- package/contracts/authorization/IAuthorization.sol +26 -0
- package/contracts/authorization/IServiceAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +320 -0
- package/contracts/distribution/BasicDistribution.sol +140 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
- package/contracts/distribution/Distribution.sol +125 -141
- package/contracts/distribution/DistributionService.sol +287 -137
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +21 -42
- package/contracts/distribution/IDistributionService.sol +60 -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/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +121 -47
- package/contracts/instance/IInstanceService.sol +80 -42
- package/contracts/instance/Instance.sol +251 -136
- package/contracts/instance/InstanceAdmin.sol +297 -249
- package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
- package/contracts/instance/InstanceReader.sol +478 -256
- package/contracts/instance/InstanceService.sol +389 -237
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +163 -121
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +15 -12
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +109 -0
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -21
- 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 +44 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
- package/contracts/oracle/IOracle.sol +25 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +60 -53
- package/contracts/oracle/OracleService.sol +120 -87
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +161 -0
- package/contracts/pool/BasicPoolAuthorization.sol +81 -0
- package/contracts/pool/BundleService.sol +225 -135
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +43 -33
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +196 -164
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +424 -263
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +159 -86
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +48 -0
- package/contracts/product/BasicProductAuthorization.sol +63 -0
- package/contracts/product/ClaimService.sol +396 -212
- 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 +29 -9
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +450 -280
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +93 -88
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +261 -147
- package/contracts/product/RiskService.sol +189 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +84 -36
- 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 +378 -218
- package/contracts/registry/RegistryAdmin.sol +125 -171
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +47 -72
- package/contracts/registry/RegistryServiceManager.sol +5 -10
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +32 -0
- package/contracts/registry/ReleaseRegistry.sol +525 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +71 -142
- package/contracts/shared/ComponentService.sol +462 -389
- 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 +10 -26
- package/contracts/shared/ILifecycle.sol +3 -2
- 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 +10 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +96 -48
- package/contracts/shared/Lifecycle.sol +30 -72
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- 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 +31 -41
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +272 -73
- package/contracts/staking/IStakingService.sol +54 -76
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +540 -294
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +72 -56
- package/contracts/staking/StakingManager.sol +14 -15
- package/contracts/staking/StakingReader.sol +72 -88
- package/contracts/staking/StakingService.sol +90 -175
- package/contracts/staking/StakingServiceManager.sol +9 -8
- package/contracts/staking/StakingStore.sol +1131 -335
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +31 -5
- package/contracts/type/Blocknumber.sol +22 -16
- package/contracts/type/ChainId.sol +101 -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 +200 -61
- 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 +121 -87
- package/contracts/type/Seconds.sol +40 -1
- package/contracts/type/Selector.sol +107 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +65 -0
- package/contracts/type/Timestamp.sol +14 -7
- package/contracts/type/UFixed.sol +62 -125
- 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 +10 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- 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 -387
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
- 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/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- 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/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -571
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -444
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -82
- 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/registry/ReleaseManager.sol +0 -600
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -470
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/IKeyValueStore.sol +0 -53
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/KeyValueStore.sol +0 -127
- package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -1,30 +1,35 @@
|
|
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
|
-
import {
|
13
|
-
|
14
|
-
import {
|
15
|
-
import {
|
16
|
-
import {
|
9
|
+
import {IStakingService} from "./IStakingService.sol";
|
10
|
+
import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
|
11
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
12
|
+
|
13
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
14
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
15
|
+
import {ChainId, ChainIdLib} from "../type/ChainId.sol";
|
16
|
+
import {Component} from "../shared/Component.sol";
|
17
|
+
import {IComponent} from "../shared/IComponent.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
|
+
import {ObjectType, PROTOCOL, INSTANCE, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
17
20
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
18
|
-
import {
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
22
|
+
import {StakingLib} from "./StakingLib.sol";
|
19
23
|
import {StakingReader} from "./StakingReader.sol";
|
20
24
|
import {StakingStore} from "./StakingStore.sol";
|
21
|
-
import {
|
22
|
-
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
25
|
+
import {TargetHandler} from "./TargetHandler.sol";
|
23
26
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
24
28
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
25
29
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
26
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
27
|
-
import {Versionable} from "../
|
30
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
31
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
32
|
+
|
28
33
|
|
29
34
|
contract Staking is
|
30
35
|
Component,
|
@@ -32,513 +37,755 @@ contract Staking is
|
|
32
37
|
IStaking
|
33
38
|
{
|
34
39
|
string public constant CONTRACT_NAME = "Staking";
|
35
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
36
40
|
|
37
41
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
38
42
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
39
43
|
|
40
44
|
struct StakingStorage {
|
41
|
-
IRegistryService _registryService;
|
42
45
|
TokenRegistry _tokenRegistry;
|
46
|
+
TokenHandler _tokenHandler;
|
47
|
+
IStakingService _stakingService;
|
48
|
+
TargetHandler _targetHandler;
|
43
49
|
StakingStore _store;
|
44
50
|
StakingReader _reader;
|
45
51
|
NftId _protocolNftId;
|
46
52
|
}
|
47
53
|
|
48
54
|
|
49
|
-
modifier
|
50
|
-
|
51
|
-
revert ErrorStakingNotStake(stakeNftId);
|
52
|
-
}
|
55
|
+
modifier onlyStakeOwner(NftId stakeNftId) {
|
56
|
+
_checkTypeAndOwner(stakeNftId, STAKE(), true);
|
53
57
|
_;
|
54
58
|
}
|
55
59
|
|
56
60
|
|
57
61
|
modifier onlyTarget(NftId targetNftId) {
|
58
|
-
|
59
|
-
revert ErrorStakingNotTarget(targetNftId);
|
60
|
-
}
|
62
|
+
_checkTypeAndOwner(targetNftId, TARGET(), false);
|
61
63
|
_;
|
62
64
|
}
|
63
65
|
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
modifier onlyTargetOwner(NftId targetNftId) {
|
68
|
+
_checkTypeAndOwner(targetNftId, TARGET(), true);
|
69
|
+
_;
|
70
|
+
}
|
71
|
+
|
72
|
+
//--- contract intitialization -------------------------------------------
|
73
|
+
|
74
|
+
function initializeTokenHandler()
|
75
|
+
external
|
76
|
+
virtual
|
71
77
|
{
|
72
|
-
|
78
|
+
if (msg.sender != address(getRegistry())) {
|
79
|
+
revert ErrorStakingNotRegistry(msg.sender);
|
80
|
+
}
|
81
|
+
|
82
|
+
StakingStorage storage $ = _getStakingStorage();
|
83
|
+
address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
|
84
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
85
|
+
address(getRegistry()),
|
86
|
+
address(this),
|
87
|
+
dipToken,
|
88
|
+
getRegistry().getAuthority());
|
73
89
|
}
|
74
90
|
|
75
|
-
|
76
|
-
|
91
|
+
|
92
|
+
//--- staking owner functions -------------------------------------------//
|
93
|
+
|
94
|
+
function setSupportInfo(
|
95
|
+
ObjectType targetType,
|
96
|
+
bool isSupported,
|
97
|
+
bool allowNewTargets,
|
98
|
+
bool allowCrossChain,
|
99
|
+
Amount minStakingAmount,
|
100
|
+
Amount maxStakingAmount,
|
101
|
+
Seconds minLockingPeriod,
|
102
|
+
Seconds maxLockingPeriod,
|
103
|
+
UFixed minRewardRate,
|
104
|
+
UFixed maxRewardRate
|
105
|
+
)
|
77
106
|
external
|
78
107
|
virtual
|
79
|
-
|
108
|
+
restricted()
|
109
|
+
onlyOwner()
|
80
110
|
{
|
111
|
+
StakingStorage storage $ = _getStakingStorage();
|
112
|
+
$._store.setSupportInfo(
|
113
|
+
targetType,
|
114
|
+
isSupported,
|
115
|
+
allowNewTargets,
|
116
|
+
allowCrossChain,
|
117
|
+
minStakingAmount,
|
118
|
+
maxStakingAmount,
|
119
|
+
minLockingPeriod,
|
120
|
+
maxLockingPeriod,
|
121
|
+
minRewardRate,
|
122
|
+
maxRewardRate);
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
/// @inheritdoc IStaking
|
127
|
+
function setUpdateTriggers(
|
128
|
+
uint16 tvlUpdatesTrigger,
|
129
|
+
UFixed minTvlRatioTrigger
|
130
|
+
)
|
131
|
+
external
|
132
|
+
restricted()
|
133
|
+
{
|
134
|
+
StakingStorage storage $ = _getStakingStorage();
|
135
|
+
$._targetHandler.setUpdateTriggers(tvlUpdatesTrigger, minTvlRatioTrigger);
|
136
|
+
}
|
137
|
+
|
138
|
+
|
139
|
+
/// @inheritdoc IStaking
|
140
|
+
function setProtocolLockingPeriod(Seconds newLockingPeriod)
|
141
|
+
external
|
142
|
+
virtual
|
143
|
+
restricted()
|
144
|
+
onlyOwner()
|
145
|
+
{
|
146
|
+
StakingStorage storage $ = _getStakingStorage();
|
147
|
+
$._store.setLockingPeriod($._protocolNftId, newLockingPeriod);
|
148
|
+
}
|
149
|
+
|
150
|
+
|
151
|
+
/// @inheritdoc IStaking
|
152
|
+
function setProtocolRewardRate(UFixed newRewardRate)
|
153
|
+
external
|
154
|
+
virtual
|
155
|
+
restricted()
|
156
|
+
onlyOwner()
|
157
|
+
{
|
158
|
+
StakingStorage storage $ = _getStakingStorage();
|
159
|
+
$._store.setRewardRate($._protocolNftId, newRewardRate);
|
160
|
+
}
|
161
|
+
|
162
|
+
|
163
|
+
/// @inheritdoc IStaking
|
164
|
+
function setStakingRate(
|
165
|
+
ChainId chainId,
|
166
|
+
address token,
|
167
|
+
UFixed stakingRate
|
168
|
+
)
|
169
|
+
external
|
170
|
+
virtual
|
171
|
+
restricted()
|
172
|
+
onlyOwner()
|
173
|
+
{
|
174
|
+
(
|
175
|
+
UFixed oldStakingRate,
|
176
|
+
Blocknumber lastUpdateIn
|
177
|
+
) = _getStakingStorage()._store.setStakingRate(chainId, token, stakingRate);
|
178
|
+
|
179
|
+
emit LogStakingStakingRateSet(chainId, token, stakingRate, oldStakingRate, lastUpdateIn);
|
180
|
+
}
|
181
|
+
|
182
|
+
|
183
|
+
/// @inheritdoc IStaking
|
184
|
+
function setStakingService(VersionPart release)
|
185
|
+
external
|
186
|
+
virtual
|
187
|
+
restricted()
|
188
|
+
onlyOwner()
|
189
|
+
{
|
190
|
+
// effects
|
191
|
+
StakingStorage storage $ = _getStakingStorage();
|
192
|
+
address oldStakingService = address($._stakingService);
|
193
|
+
$._stakingService = StakingLib.checkAndGetStakingService(getRegistry(), release);
|
194
|
+
|
195
|
+
emit LogStakingStakingServiceSet(address($._stakingService), release, oldStakingService);
|
196
|
+
}
|
197
|
+
|
198
|
+
|
199
|
+
/// @inheritdoc IStaking
|
200
|
+
function setStakingReader(address reader)
|
201
|
+
external
|
202
|
+
virtual
|
203
|
+
restricted()
|
204
|
+
onlyOwner()
|
205
|
+
{
|
206
|
+
StakingReader stakingReader = StakingReader(reader);
|
207
|
+
|
81
208
|
if(stakingReader.getStaking() != IStaking(this)) {
|
82
209
|
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
83
210
|
}
|
84
211
|
|
85
|
-
_getStakingStorage()
|
212
|
+
StakingStorage storage $ = _getStakingStorage();
|
213
|
+
$._reader = stakingReader;
|
214
|
+
$._store.setStakingReader(reader);
|
86
215
|
}
|
87
216
|
|
88
217
|
|
89
|
-
//
|
90
|
-
|
218
|
+
// TODO move to TargetHandler?
|
219
|
+
/// @inheritdoc IStaking
|
220
|
+
function addToken(
|
221
|
+
ChainId chainId,
|
222
|
+
address token
|
223
|
+
)
|
91
224
|
external
|
92
225
|
virtual
|
93
|
-
|
226
|
+
restricted()
|
227
|
+
onlyOwner()
|
228
|
+
{
|
229
|
+
_addToken(
|
230
|
+
_getStakingStorage(), chainId, token);
|
231
|
+
}
|
232
|
+
|
233
|
+
|
234
|
+
/// @inheritdoc IStaking
|
235
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
236
|
+
public
|
237
|
+
virtual
|
238
|
+
restricted()
|
239
|
+
onlyOwner()
|
94
240
|
{
|
95
241
|
StakingStorage storage $ = _getStakingStorage();
|
96
|
-
|
97
|
-
|
98
|
-
|
242
|
+
Amount oldAllowanceAmount = AmountLib.toAmount(
|
243
|
+
token.allowance(
|
244
|
+
address(this),
|
245
|
+
address($._tokenHandler)));
|
246
|
+
|
247
|
+
// staking token handler approval via its own implementation in staking service
|
248
|
+
$._stakingService.approveTokenHandler(
|
249
|
+
token,
|
250
|
+
amount);
|
251
|
+
|
252
|
+
emit LogStakingTokenHandlerApproved(address(token), amount, oldAllowanceAmount);
|
253
|
+
}
|
254
|
+
|
255
|
+
//--- target management -------------------------------------------------//
|
256
|
+
|
257
|
+
|
258
|
+
/// @inheritdoc IStaking
|
259
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
260
|
+
external
|
261
|
+
virtual
|
262
|
+
restricted()
|
263
|
+
onlyTarget(targetNftId)
|
264
|
+
returns (Amount newBalance)
|
265
|
+
{
|
266
|
+
address transferFrom = msg.sender;
|
267
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
268
|
+
}
|
269
|
+
|
270
|
+
|
271
|
+
/// @inheritdoc IStaking
|
272
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
273
|
+
external
|
274
|
+
virtual
|
275
|
+
restricted()
|
276
|
+
onlyTarget(targetNftId)
|
277
|
+
returns (Amount newBalance)
|
278
|
+
{
|
279
|
+
address transferTo;
|
280
|
+
|
281
|
+
// case 1: protocol target: staking owner is recipient
|
282
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
283
|
+
// verify that the caller is the staking owner
|
284
|
+
transferTo = getOwner();
|
285
|
+
if (msg.sender != transferTo) {
|
286
|
+
revert ErrorStakingNotStakingOwner();
|
287
|
+
}
|
288
|
+
|
289
|
+
// case 2: same chain target: target owner is recipient
|
290
|
+
} else if (ChainIdLib.isCurrentChain(targetNftId)) {
|
291
|
+
// verify that the caller is the target owner
|
292
|
+
transferTo = getRegistry().ownerOf(targetNftId);
|
293
|
+
if (msg.sender != transferTo) {
|
294
|
+
revert ErrorStakingNotNftOwner(targetNftId);
|
295
|
+
}
|
296
|
+
|
297
|
+
// case 3: cross-chain target: TODO decide how to handle and implement
|
298
|
+
} else {
|
299
|
+
revert("Cross-chain target not supported");
|
99
300
|
}
|
100
301
|
|
101
|
-
|
102
|
-
|
302
|
+
newBalance = _withdrawRewardReserves(targetNftId, dipAmount, transferTo);
|
303
|
+
}
|
304
|
+
|
103
305
|
|
104
|
-
|
306
|
+
/// @inheritdoc IStaking
|
307
|
+
function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom)
|
308
|
+
external
|
309
|
+
virtual
|
310
|
+
restricted()
|
311
|
+
onlyTarget(targetNftId)
|
312
|
+
returns (Amount newBalance)
|
313
|
+
{
|
314
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
105
315
|
}
|
106
316
|
|
107
|
-
// reward management
|
108
317
|
|
109
|
-
|
318
|
+
/// @inheritdoc IStaking
|
319
|
+
function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo)
|
320
|
+
external
|
321
|
+
virtual
|
322
|
+
restricted()
|
323
|
+
onlyTarget(targetNftId)
|
324
|
+
returns (Amount newBalance)
|
325
|
+
{
|
326
|
+
// check that service does not withdraw from protocol target
|
327
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
328
|
+
revert ErrorStakingTargetTypeNotSupported(targetNftId, PROTOCOL());
|
329
|
+
}
|
110
330
|
|
331
|
+
// default: on-chain target owner is recipient
|
332
|
+
address targetOwner = getRegistry().ownerOf(targetNftId);
|
333
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
|
334
|
+
}
|
335
|
+
|
336
|
+
|
337
|
+
/// @inheritdoc IStaking
|
111
338
|
function registerTarget(
|
112
339
|
NftId targetNftId,
|
113
340
|
ObjectType expectedObjectType,
|
114
|
-
uint256 chainId,
|
115
341
|
Seconds initialLockingPeriod,
|
116
342
|
UFixed initialRewardRate
|
117
343
|
)
|
118
344
|
external
|
119
345
|
virtual
|
120
|
-
|
346
|
+
restricted() // staking service
|
121
347
|
{
|
122
|
-
|
123
|
-
getRegistry(),
|
124
|
-
_getStakingStorage()._reader,
|
125
|
-
targetNftId,
|
126
|
-
expectedObjectType,
|
127
|
-
initialLockingPeriod,
|
128
|
-
initialRewardRate);
|
129
|
-
|
348
|
+
// checks done by staking store
|
130
349
|
_getStakingStorage()._store.createTarget(
|
131
350
|
targetNftId,
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
lockingPeriod: initialLockingPeriod,
|
136
|
-
rewardRate: initialRewardRate}));
|
351
|
+
expectedObjectType,
|
352
|
+
initialLockingPeriod,
|
353
|
+
initialRewardRate);
|
137
354
|
}
|
138
355
|
|
139
356
|
|
357
|
+
/// @inheritdoc IStaking
|
140
358
|
function setLockingPeriod(
|
141
359
|
NftId targetNftId,
|
142
360
|
Seconds lockingPeriod
|
143
361
|
)
|
144
362
|
external
|
145
363
|
virtual
|
146
|
-
|
364
|
+
restricted()
|
147
365
|
onlyTarget(targetNftId)
|
148
366
|
{
|
149
|
-
(
|
150
|
-
Seconds oldLockingPeriod,
|
151
|
-
TargetInfo memory targetInfo
|
152
|
-
) = TargetManagerLib.updateLockingPeriod(
|
153
|
-
this,
|
154
|
-
targetNftId,
|
155
|
-
lockingPeriod);
|
156
|
-
|
157
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
158
|
-
|
159
|
-
emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
|
367
|
+
_getStakingStorage()._store.setLockingPeriod(targetNftId, lockingPeriod);
|
160
368
|
}
|
161
369
|
|
162
|
-
// TODO add function to set protocol reward rate: onlyOwner
|
163
|
-
// get protocol nft id (from where)
|
164
370
|
|
371
|
+
/// @inheritdoc IStaking
|
165
372
|
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
166
373
|
external
|
167
374
|
virtual
|
168
|
-
|
375
|
+
restricted()
|
169
376
|
onlyTarget(targetNftId)
|
170
377
|
{
|
171
|
-
(
|
172
|
-
|
173
|
-
TargetInfo memory targetInfo
|
174
|
-
) = TargetManagerLib.updateRewardRate(
|
175
|
-
this,
|
176
|
-
targetNftId,
|
177
|
-
rewardRate);
|
178
|
-
|
179
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
378
|
+
_getStakingStorage()._store.setRewardRate(targetNftId, rewardRate);
|
379
|
+
}
|
180
380
|
|
181
|
-
|
381
|
+
|
382
|
+
// TODO refactor into setTargetLimits
|
383
|
+
/// @inheritdoc IStaking
|
384
|
+
function setMaxStakedAmount(NftId targetNftId, Amount stakeLimitAmount)
|
385
|
+
external
|
386
|
+
virtual
|
387
|
+
restricted()
|
388
|
+
onlyTarget(targetNftId)
|
389
|
+
{
|
390
|
+
StakingStorage storage $ = _getStakingStorage();
|
391
|
+
$._store.setMaxStakedAmount(targetNftId, stakeLimitAmount);
|
182
392
|
}
|
183
393
|
|
184
394
|
|
185
|
-
|
395
|
+
/// @inheritdoc IStaking
|
396
|
+
function setTargetLimits(NftId targetNftId, Amount marginAmount, Amount limitAmount)
|
186
397
|
external
|
187
398
|
virtual
|
188
|
-
|
189
|
-
|
399
|
+
restricted()
|
400
|
+
onlyTargetOwner(targetNftId)
|
190
401
|
{
|
191
|
-
// update book keeping of reward reserves
|
192
402
|
StakingStorage storage $ = _getStakingStorage();
|
193
|
-
|
403
|
+
$._store.setTargetLimits(targetNftId, marginAmount, limitAmount);
|
194
404
|
}
|
195
405
|
|
196
406
|
|
197
|
-
|
407
|
+
/// @inheritdoc IStaking
|
408
|
+
function addTargetToken(NftId targetNftId, address token)
|
198
409
|
external
|
199
410
|
virtual
|
200
|
-
|
201
|
-
|
202
|
-
returns (Amount newBalance)
|
411
|
+
restricted()
|
412
|
+
onlyTarget(targetNftId)
|
203
413
|
{
|
204
|
-
// update book keeping of reward reserves
|
205
414
|
StakingStorage storage $ = _getStakingStorage();
|
206
|
-
|
415
|
+
ChainId chainId = ChainIdLib.fromNftId(targetNftId);
|
416
|
+
|
417
|
+
if (! $._store.hasTokenInfo(chainId, token)) {
|
418
|
+
_addToken($, chainId, token);
|
419
|
+
}
|
420
|
+
|
421
|
+
$._store.addTargetToken(targetNftId, token);
|
422
|
+
|
423
|
+
// TODO move logging to store
|
424
|
+
emit LogStakingTargetTokenAdded(targetNftId, chainId, token);
|
207
425
|
}
|
208
426
|
|
209
427
|
|
428
|
+
/// @inheritdoc IStaking
|
210
429
|
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
211
430
|
external
|
212
431
|
virtual
|
213
|
-
|
214
|
-
returns (Amount newBalance)
|
432
|
+
restricted() // only pool service
|
215
433
|
{
|
216
434
|
StakingStorage storage $ = _getStakingStorage();
|
217
|
-
|
218
|
-
UFixed stakingRate = $._reader.getStakingRate(chainId, token);
|
219
|
-
newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
|
435
|
+
$._store.increaseTotalValueLocked(targetNftId, token, amount);
|
220
436
|
}
|
221
437
|
|
222
438
|
|
439
|
+
/// @inheritdoc IStaking
|
223
440
|
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
224
441
|
external
|
225
442
|
virtual
|
226
|
-
|
227
|
-
returns (Amount newBalance)
|
443
|
+
restricted() // only pool service
|
228
444
|
{
|
229
445
|
StakingStorage storage $ = _getStakingStorage();
|
230
|
-
|
231
|
-
UFixed stakingRate = $._reader.getStakingRate(chainId, token);
|
232
|
-
newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
|
446
|
+
$._store.decreaseTotalValueLocked(targetNftId, token, amount);
|
233
447
|
}
|
234
448
|
|
235
449
|
|
450
|
+
// TODO add to interface and implement
|
451
|
+
/// inheritdoc IStaking
|
236
452
|
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
237
453
|
external
|
238
454
|
virtual
|
455
|
+
restricted()
|
239
456
|
onlyOwner // or CCIP
|
240
457
|
{
|
241
458
|
|
242
459
|
}
|
243
460
|
|
461
|
+
// TODO add to interface and implement
|
462
|
+
/// @inheritdoc IStaking
|
244
463
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
245
464
|
external
|
246
465
|
virtual
|
466
|
+
restricted()
|
247
467
|
onlyOwner // or CCIP
|
248
468
|
{
|
249
469
|
|
250
470
|
}
|
251
471
|
|
252
|
-
//---
|
472
|
+
//--- public functions --------------------------------------------------//
|
473
|
+
|
474
|
+
/// @inheritdoc IStaking
|
475
|
+
function updateTargetLimit(NftId targetNftId)
|
476
|
+
external
|
477
|
+
restricted()
|
478
|
+
{
|
479
|
+
StakingStorage storage $ = _getStakingStorage();
|
480
|
+
$._store.updateTargetLimit(targetNftId);
|
481
|
+
}
|
482
|
+
|
253
483
|
|
484
|
+
/// @inheritdoc IStaking
|
254
485
|
function createStake(
|
255
|
-
NftId stakeNftId,
|
256
486
|
NftId targetNftId,
|
257
|
-
Amount stakeAmount
|
487
|
+
Amount stakeAmount,
|
488
|
+
address stakeOwner
|
258
489
|
)
|
259
490
|
external
|
260
491
|
virtual
|
261
|
-
|
492
|
+
restricted()
|
493
|
+
onlyTarget(targetNftId)
|
494
|
+
returns (NftId stakeNftId)
|
262
495
|
{
|
496
|
+
// effects (includes further checks in service)
|
263
497
|
StakingStorage storage $ = _getStakingStorage();
|
264
|
-
|
265
|
-
|
266
|
-
targetNftId,
|
267
|
-
stakeAmount);
|
498
|
+
stakeNftId = $._stakingService.createStakeObject(targetNftId, stakeOwner);
|
499
|
+
$._store.createStake(stakeNftId, targetNftId, stakeOwner, stakeAmount);
|
268
500
|
|
269
|
-
//
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
lockedUntil: lockedUntil}));
|
274
|
-
|
275
|
-
// update target stake balance
|
276
|
-
$._store.increaseStake(
|
277
|
-
stakeNftId,
|
278
|
-
targetNftId,
|
279
|
-
stakeAmount);
|
501
|
+
// interactions
|
502
|
+
if (stakeAmount.gtz()) {
|
503
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
504
|
+
}
|
280
505
|
}
|
281
506
|
|
507
|
+
//--- stake owner functions ---------------------------------------------//
|
282
508
|
|
509
|
+
|
510
|
+
/// @inheritdoc IStaking
|
283
511
|
function stake(
|
284
512
|
NftId stakeNftId,
|
285
513
|
Amount stakeAmount
|
286
514
|
)
|
287
515
|
external
|
288
516
|
virtual
|
289
|
-
|
290
|
-
|
291
|
-
returns (Amount
|
517
|
+
restricted()
|
518
|
+
onlyStakeOwner(stakeNftId)
|
519
|
+
returns (Amount newStakeBalance)
|
292
520
|
{
|
293
521
|
StakingStorage storage $ = _getStakingStorage();
|
294
|
-
|
295
|
-
// check that target is active for staking
|
296
|
-
(
|
297
|
-
UFixed rewardRate,
|
298
|
-
Seconds lockingPeriod
|
299
|
-
) = StakeManagerLib.checkStakeParameters(
|
300
|
-
$._reader,
|
301
|
-
stakeNftId);
|
302
|
-
|
303
|
-
// calculate new rewards (if any)
|
304
|
-
(
|
305
|
-
Amount rewardIncrementAmount,
|
306
|
-
Amount currentTotalDipAmount
|
307
|
-
) = StakeManagerLib.calculateRewardIncrease(
|
308
|
-
$._reader,
|
309
|
-
stakeNftId,
|
310
|
-
rewardRate);
|
311
|
-
|
312
|
-
stakeBalance = currentTotalDipAmount + stakeAmount;
|
313
|
-
|
314
|
-
// TODO check that additional dip, rewards and rewards increment
|
315
|
-
// are still ok with max target staking amount
|
316
|
-
NftId targetNftId = getRegistry().getObjectInfo(stakeNftId).parentNftId;
|
317
|
-
|
318
|
-
$._store.restakeRewards(
|
522
|
+
$._store.stake(
|
319
523
|
stakeNftId,
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
$._store.increaseStake(
|
324
|
-
stakeNftId,
|
325
|
-
targetNftId,
|
524
|
+
true, // update rewards
|
525
|
+
true, // restake rewards
|
526
|
+
SecondsLib.max(), // max additional locking duration
|
326
527
|
stakeAmount);
|
327
528
|
|
328
|
-
//
|
329
|
-
|
529
|
+
// collect staked DIP token via staking service
|
530
|
+
if (stakeAmount.gtz()) {
|
531
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
532
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
533
|
+
}
|
534
|
+
}
|
535
|
+
|
536
|
+
|
537
|
+
/// @inheritdoc IStaking
|
538
|
+
function unstake(NftId stakeNftId)
|
539
|
+
external
|
540
|
+
virtual
|
541
|
+
restricted()
|
542
|
+
onlyStakeOwner(stakeNftId)
|
543
|
+
returns (Amount unstakedAmount)
|
544
|
+
{
|
545
|
+
StakingStorage storage $ = _getStakingStorage();
|
546
|
+
unstakedAmount = $._store.unstake(
|
330
547
|
stakeNftId,
|
331
|
-
|
332
|
-
|
333
|
-
|
548
|
+
true, // update rewards
|
549
|
+
true, // restake rewards
|
550
|
+
AmountLib.max()); // unstake up to this amount
|
551
|
+
|
552
|
+
// transfer unstaked DIP token via staking service
|
553
|
+
if (unstakedAmount.gtz()) {
|
554
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
555
|
+
$._stakingService.pushDipToken(unstakedAmount, stakeOwner);
|
556
|
+
}
|
334
557
|
}
|
335
558
|
|
336
559
|
|
560
|
+
/// @inheritdoc IStaking
|
337
561
|
function restake(
|
338
562
|
NftId stakeNftId,
|
339
563
|
NftId newTargetNftId
|
340
564
|
)
|
341
565
|
external
|
342
566
|
virtual
|
343
|
-
|
344
|
-
|
345
|
-
|
567
|
+
restricted() // only staking service
|
568
|
+
onlyStakeOwner(stakeNftId)
|
569
|
+
onlyTarget(newTargetNftId)
|
570
|
+
returns (
|
571
|
+
NftId newStakeNftId,
|
572
|
+
Amount newStakedAmount
|
573
|
+
)
|
346
574
|
{
|
347
|
-
// TODO add check that allows additional staking amount
|
348
575
|
StakingStorage storage $ = _getStakingStorage();
|
349
576
|
|
350
|
-
//
|
351
|
-
|
577
|
+
// step 1: unstake as much as possible
|
578
|
+
newStakedAmount = $._store.unstake(
|
579
|
+
stakeNftId,
|
580
|
+
true, // update rewards
|
581
|
+
true, // restake rewards
|
582
|
+
AmountLib.max()); // unstake up to this amount
|
583
|
+
|
584
|
+
// step 2: create new stake with full unstaked amount
|
585
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
586
|
+
newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
|
587
|
+
$._store.createStake(newStakeNftId, newTargetNftId, stakeOwner, newStakedAmount);
|
588
|
+
|
589
|
+
// logging
|
590
|
+
emit LogStakingStakeRestaked(newStakeNftId, newTargetNftId, newStakedAmount, stakeOwner, stakeNftId);
|
591
|
+
}
|
352
592
|
|
353
593
|
|
354
594
|
function updateRewards(NftId stakeNftId)
|
355
595
|
external
|
356
596
|
virtual
|
357
|
-
|
358
|
-
|
597
|
+
restricted()
|
598
|
+
onlyStakeOwner(stakeNftId)
|
599
|
+
returns (Amount newRewardAmount)
|
359
600
|
{
|
360
601
|
StakingStorage storage $ = _getStakingStorage();
|
361
|
-
|
602
|
+
$._store.updateRewards(stakeNftId);
|
362
603
|
}
|
363
604
|
|
364
605
|
|
365
606
|
function claimRewards(NftId stakeNftId)
|
366
607
|
external
|
367
608
|
virtual
|
368
|
-
|
369
|
-
|
609
|
+
restricted()
|
610
|
+
onlyStakeOwner(stakeNftId)
|
370
611
|
returns (
|
371
|
-
Amount
|
612
|
+
Amount claimedAmount
|
372
613
|
)
|
373
614
|
{
|
374
615
|
StakingStorage storage $ = _getStakingStorage();
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
// unstake all available rewards
|
380
|
-
rewardsClaimedAmount = $._store.claimUpTo(
|
381
|
-
stakeNftId,
|
382
|
-
targetNftId,
|
616
|
+
claimedAmount = $._store.claimRewards(
|
617
|
+
stakeNftId,
|
618
|
+
true,
|
383
619
|
AmountLib.max());
|
384
620
|
|
385
|
-
//
|
386
|
-
|
621
|
+
// collect staked DIP token by staking service
|
622
|
+
if (claimedAmount.gtz()) {
|
623
|
+
// interactions
|
624
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
625
|
+
$._stakingService.pushDipToken(claimedAmount, stakeOwner);
|
626
|
+
}
|
387
627
|
}
|
388
628
|
|
389
629
|
|
390
|
-
|
391
|
-
external
|
392
|
-
virtual
|
393
|
-
// TODO add restricted() // only staking service
|
394
|
-
onlyStake(stakeNftId)
|
395
|
-
returns (
|
396
|
-
Amount unstakedAmount,
|
397
|
-
Amount rewardsClaimedAmount
|
398
|
-
)
|
399
|
-
{
|
400
|
-
// TODO add check that stake locking is in the past
|
401
|
-
StakingStorage storage $ = _getStakingStorage();
|
630
|
+
//--- view functions ----------------------------------------------------//
|
402
631
|
|
403
|
-
|
404
|
-
|
632
|
+
function getStakingReader() public virtual view returns (StakingReader reader) {
|
633
|
+
return _getStakingStorage()._reader;
|
634
|
+
}
|
405
635
|
|
406
|
-
|
407
|
-
(
|
408
|
-
|
409
|
-
rewardsClaimedAmount
|
410
|
-
) = $._store.unstakeUpTo(
|
411
|
-
stakeNftId,
|
412
|
-
targetNftId,
|
413
|
-
AmountLib.max(), // unstake all stakes
|
414
|
-
AmountLib.max()); // claim all rewards
|
636
|
+
function getTargetHandler() external virtual view returns (TargetHandler targetHandler) {
|
637
|
+
return _getStakingStorage()._targetHandler;
|
638
|
+
}
|
415
639
|
|
416
|
-
|
417
|
-
|
640
|
+
function getStakingStore() external virtual view returns (StakingStore stakingStore) {
|
641
|
+
return _getStakingStorage()._store;
|
418
642
|
}
|
419
643
|
|
644
|
+
function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
|
645
|
+
return address(_getStakingStorage()._tokenRegistry);
|
646
|
+
}
|
420
647
|
|
648
|
+
function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
|
649
|
+
return _getStakingStorage()._tokenHandler;
|
650
|
+
}
|
421
651
|
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
virtual
|
429
|
-
returns (NftId targetNftId)
|
652
|
+
// from IRegisterable
|
653
|
+
function getRelease()
|
654
|
+
public
|
655
|
+
pure
|
656
|
+
virtual override (IRelease, Registerable)
|
657
|
+
returns(VersionPart)
|
430
658
|
{
|
431
|
-
|
432
|
-
|
433
|
-
(targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
|
434
|
-
(Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
|
435
|
-
reader,
|
436
|
-
stakeNftId,
|
437
|
-
rewardRate);
|
438
|
-
|
439
|
-
store.updateRewards(
|
440
|
-
stakeNftId,
|
441
|
-
targetNftId,
|
442
|
-
rewardIncrement);
|
659
|
+
return VersionPartLib.toVersionPart(3);
|
443
660
|
}
|
444
661
|
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
662
|
+
// from IVersionable
|
663
|
+
function getVersion()
|
664
|
+
public
|
665
|
+
pure
|
666
|
+
virtual override (Component, IVersionable, Versionable)
|
667
|
+
returns(Version)
|
451
668
|
{
|
452
|
-
|
453
|
-
address stakingWallet = getWallet();
|
454
|
-
|
455
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
456
|
-
getToken(),
|
457
|
-
from,
|
458
|
-
address(tokenHandler),
|
459
|
-
dipAmount);
|
460
|
-
|
461
|
-
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
669
|
+
return VersionLib.toVersion(3,0,0);
|
462
670
|
}
|
463
671
|
|
672
|
+
//--- internal functions ------------------------------------------------//
|
673
|
+
|
464
674
|
|
465
|
-
function
|
466
|
-
|
467
|
-
|
675
|
+
function _refillRewardReserves(NftId targetNftId, Amount dipAmount, address transferFrom)
|
676
|
+
internal
|
677
|
+
virtual
|
678
|
+
returns (Amount newBalance)
|
468
679
|
{
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
473
|
-
getToken(),
|
474
|
-
stakingWallet,
|
475
|
-
address(tokenHandler),
|
476
|
-
dipAmount);
|
680
|
+
// checks + effects
|
681
|
+
StakingStorage storage $ = _getStakingStorage();
|
682
|
+
newBalance = $._store.refillRewardReserves(targetNftId, dipAmount);
|
477
683
|
|
478
|
-
|
684
|
+
// interactions
|
685
|
+
// collect DIP token from target owner
|
686
|
+
if (dipAmount.gtz()) {
|
687
|
+
$._stakingService.pullDipToken(dipAmount, transferFrom);
|
688
|
+
}
|
479
689
|
}
|
480
690
|
|
481
691
|
|
482
|
-
|
692
|
+
function _withdrawRewardReserves(NftId targetNftId, Amount dipAmount, address transferTo)
|
693
|
+
internal
|
694
|
+
virtual
|
695
|
+
returns (Amount newBalance)
|
696
|
+
{
|
697
|
+
// checks + effects
|
698
|
+
StakingStorage storage $ = _getStakingStorage();
|
699
|
+
newBalance = $._store.withdrawRewardReserves(targetNftId, dipAmount);
|
483
700
|
|
484
|
-
|
485
|
-
|
701
|
+
// interactions
|
702
|
+
// transfer DIP token to designated address
|
703
|
+
if (dipAmount.gtz()) {
|
704
|
+
$._stakingService.pushDipToken(dipAmount, transferTo);
|
705
|
+
}
|
486
706
|
}
|
487
707
|
|
488
|
-
function getStakingStore() external view returns (StakingStore stakingStore) {
|
489
|
-
return _getStakingStorage()._store;
|
490
|
-
}
|
491
708
|
|
492
|
-
function
|
493
|
-
|
709
|
+
function _addToken(
|
710
|
+
StakingStorage storage $,
|
711
|
+
ChainId chainId,
|
712
|
+
address token
|
713
|
+
)
|
714
|
+
internal
|
715
|
+
virtual
|
716
|
+
{
|
717
|
+
$._store.addToken(chainId, token);
|
494
718
|
}
|
495
719
|
|
496
|
-
//--- internal functions ------------------------------------------------//
|
497
720
|
|
721
|
+
/// @dev top level initializer (upgradable contract)
|
498
722
|
function _initialize(
|
499
723
|
address owner,
|
500
724
|
bytes memory data
|
501
725
|
)
|
502
726
|
internal
|
503
727
|
virtual override
|
504
|
-
|
728
|
+
onlyInitializing()
|
505
729
|
{
|
506
730
|
(
|
507
731
|
address registryAddress,
|
508
|
-
address
|
732
|
+
address targetHandlerAddress,
|
509
733
|
address stakingStoreAddress,
|
510
|
-
address
|
734
|
+
address tokenRegistryAddress
|
511
735
|
) = abi.decode(data, (address, address, address, address));
|
512
736
|
|
513
|
-
//
|
737
|
+
// wiring to external contracts
|
514
738
|
IRegistry registry = IRegistry(registryAddress);
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
739
|
+
StakingStorage storage $ = _getStakingStorage();
|
740
|
+
$._protocolNftId = registry.getProtocolNftId();
|
741
|
+
$._targetHandler = TargetHandler(targetHandlerAddress);
|
742
|
+
$._store = StakingStore(stakingStoreAddress);
|
743
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
744
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
745
|
+
// staking service has to be set via setStakingService after deploying the first GIF release
|
746
|
+
|
747
|
+
// initialize component
|
748
|
+
__Component_init(
|
749
|
+
registry.getAuthority(),
|
750
|
+
address(registry),
|
751
|
+
registry.getNftId(), // parent nft id
|
523
752
|
CONTRACT_NAME,
|
524
|
-
dipTokenAddress,
|
525
753
|
STAKING(),
|
526
754
|
false, // is interceptor
|
527
|
-
|
528
|
-
""
|
529
|
-
|
755
|
+
owner,
|
756
|
+
""); // registry data
|
757
|
+
|
758
|
+
// Protocol target is created in the StakingStore constructor.
|
759
|
+
// This allows setting up the protocol target before the full
|
760
|
+
// staking authorization setup is in place.
|
530
761
|
|
531
|
-
|
762
|
+
_registerInterface(type(IStaking).interfaceId);
|
763
|
+
}
|
532
764
|
|
533
765
|
|
534
|
-
|
766
|
+
function _checkTypeAndOwner(NftId nftId, ObjectType expectedObjectType, bool checkOwner)
|
767
|
+
internal
|
768
|
+
view
|
769
|
+
{
|
535
770
|
StakingStorage storage $ = _getStakingStorage();
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
771
|
+
if (expectedObjectType == STAKE()) {
|
772
|
+
if (!$._store.exists(nftId)) {
|
773
|
+
revert ErrorStakingNotStake(nftId);
|
774
|
+
}
|
775
|
+
} else {
|
776
|
+
if (expectedObjectType == TARGET()) {
|
777
|
+
if (!$._store.getTargetSet().exists(nftId)) {
|
778
|
+
revert ErrorStakingNotTarget(nftId);
|
779
|
+
}
|
780
|
+
}
|
781
|
+
}
|
540
782
|
|
541
|
-
|
783
|
+
if (checkOwner) {
|
784
|
+
address nftOwner = getRegistry().ownerOf(nftId);
|
785
|
+
if (msg.sender != nftOwner) {
|
786
|
+
revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
|
787
|
+
}
|
788
|
+
}
|
542
789
|
}
|
543
790
|
|
544
791
|
|
@@ -547,5 +794,4 @@ contract Staking is
|
|
547
794
|
$.slot := STAKING_LOCATION_V1
|
548
795
|
}
|
549
796
|
}
|
550
|
-
|
551
797
|
}
|