@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e7a5428-226
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 +133 -10
- 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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
- 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 +1244 -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 +146 -607
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +288 -118
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -273
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -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 +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 +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -96
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +497 -75
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +617 -250
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1789 -713
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -220
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +204 -96
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1109 -817
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -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 +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -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 +582 -235
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +278 -96
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -394
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -682
- 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 +940 -518
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +283 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +222 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -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 +502 -230
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +251 -113
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -264
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
- 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 +259 -97
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +220 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +322 -596
- 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 +454 -42
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +275 -193
- 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 +806 -97
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
- 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 +320 -312
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +206 -94
- 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 +257 -147
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +92 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +241 -115
- 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 +99 -94
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -130
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +51 -19
- 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 +42 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -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 +103 -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 +131 -366
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +61 -104
- 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 +45 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
- 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 +96 -102
- 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 +1388 -635
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1703 -957
- 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/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +274 -92
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +751 -212
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +215 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
- 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 +122 -5
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +81 -17
- 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 +47 -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 +153 -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 +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- 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 +167 -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 +37 -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 +141 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
- package/contracts/distribution/Distribution.sol +126 -142
- package/contracts/distribution/DistributionService.sol +288 -137
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +22 -43
- package/contracts/distribution/IDistributionService.sol +61 -27
- 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 +130 -0
- package/contracts/instance/IInstance.sol +117 -49
- package/contracts/instance/IInstanceService.sol +80 -46
- package/contracts/instance/Instance.sol +252 -133
- package/contracts/instance/InstanceAdmin.sol +383 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
- package/contracts/instance/InstanceReader.sol +499 -233
- package/contracts/instance/InstanceService.sol +370 -218
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +94 -55
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/base/BalanceStore.sol +16 -13
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +20 -0
- 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 +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 +26 -0
- package/contracts/oracle/BasicOracle.sol +45 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
- package/contracts/oracle/IOracle.sol +41 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +154 -0
- package/contracts/oracle/OracleService.sol +310 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +162 -0
- package/contracts/pool/BasicPoolAuthorization.sol +81 -0
- package/contracts/pool/BundleService.sol +225 -152
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +44 -34
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +99 -76
- package/contracts/pool/Pool.sol +198 -164
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +448 -255
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +160 -86
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +63 -0
- package/contracts/product/ClaimService.sol +389 -195
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +30 -4
- package/contracts/product/IClaimService.sol +52 -9
- package/contracts/product/IPolicyService.sol +62 -38
- package/contracts/product/IPricingService.sol +12 -11
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +450 -276
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +97 -91
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +263 -147
- package/contracts/product/RiskService.sol +190 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -39
- package/contracts/registry/IRegistry.sol +99 -38
- package/contracts/registry/IRegistryService.sol +26 -43
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -232
- package/contracts/registry/RegistryAdmin.sol +188 -0
- package/contracts/registry/RegistryAuthorization.sol +309 -0
- package/contracts/registry/RegistryService.sol +66 -152
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- 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 +211 -81
- package/contracts/shared/Component.sol +71 -143
- package/contracts/shared/ComponentService.sol +460 -369
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +7 -23
- package/contracts/shared/IComponentService.sol +51 -31
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/IKeyValueStore.sol +3 -2
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +5 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +11 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
- package/contracts/shared/InstanceLinkedComponent.sol +95 -46
- package/contracts/shared/KeyValueStore.sol +32 -70
- package/contracts/shared/Lifecycle.sol +30 -63
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +35 -24
- package/contracts/shared/PolicyHolder.sol +19 -50
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +32 -42
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +229 -42
- package/contracts/staking/IStakingService.sol +98 -76
- package/contracts/staking/Staking.sol +633 -99
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +25 -20
- package/contracts/staking/StakingReader.sol +151 -0
- package/contracts/staking/StakingService.sol +174 -53
- package/contracts/staking/StakingServiceManager.sol +13 -8
- package/contracts/staking/StakingStore.sol +973 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +43 -3
- package/contracts/type/Blocknumber.sol +34 -16
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +9 -9
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +16 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +204 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +39 -7
- package/contracts/type/RoleId.sol +122 -80
- package/contracts/type/Seconds.sol +62 -1
- package/contracts/type/Selector.sol +107 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +65 -0
- package/contracts/type/Timestamp.sol +20 -9
- package/contracts/type/UFixed.sol +62 -125
- package/contracts/type/Version.sol +58 -7
- package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
- package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
- package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
- package/package.json +12 -8
- 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/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- 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 -237
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- 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/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/instance/base/ObjectManager.sol +0 -82
- package/contracts/instance/module/IAccess.sol +0 -54
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -122
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -213
- package/contracts/registry/ReleaseManager.sol +0 -375
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/ComponentVerifyingService.sol +0 -111
- package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -0,0 +1,973 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
|
+
|
6
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
import {IStaking} from "./IStaking.sol";
|
8
|
+
|
9
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
|
+
import {ChainId, ChainIdLib} from "../type/ChainId.sol";
|
11
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
12
|
+
import {KeyValueStore} from "../shared/KeyValueStore.sol";
|
13
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
14
|
+
import {NftIdSet} from "../shared/NftIdSet.sol";
|
15
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
16
|
+
import {PROTOCOL} from "../type/ObjectType.sol";
|
17
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
18
|
+
import {StakingLib} from "./StakingLib.sol";
|
19
|
+
import {StakingLifecycle} from "./StakingLifecycle.sol";
|
20
|
+
import {StakingReader} from "./StakingReader.sol";
|
21
|
+
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
23
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
24
|
+
|
25
|
+
|
26
|
+
contract StakingStore is
|
27
|
+
AccessManaged,
|
28
|
+
KeyValueStore,
|
29
|
+
StakingLifecycle
|
30
|
+
{
|
31
|
+
|
32
|
+
// token
|
33
|
+
error ErrorStakingStoreTokenNotRegistered(ChainId chainId, address token);
|
34
|
+
error ErrorStakingStoreTokenAlreadyAdded(ChainId chainId, address token);
|
35
|
+
error ErrorStakingStoreTokenUnknown(ChainId chainId, address token);
|
36
|
+
|
37
|
+
// target
|
38
|
+
error ErrorStakingStoreTargetNotInitialized(NftId targetNftId);
|
39
|
+
|
40
|
+
// in/decreasing reward reserves
|
41
|
+
error ErrorStakingStoreNotTarget(NftId targetNftId);
|
42
|
+
error ErrorStakingStoreRewardReservesInsufficient(NftId targetNftId, Amount reserveAmount, Amount claimedAmount);
|
43
|
+
|
44
|
+
// stakes
|
45
|
+
error ErrorStakingStoreStakesExceedingTargetMaxAmount(NftId targetNftId, Amount maxStakedAmount, Amount newIStaking);
|
46
|
+
error ErrorStakingStoreStakeNotInitialized(NftId nftId);
|
47
|
+
|
48
|
+
// creating and updating of staking balance
|
49
|
+
error ErrorStakingStoreStakeBalanceAlreadyInitialized(NftId nftId);
|
50
|
+
error ErrorStakingStoreStakeBalanceNotInitialized(NftId nftI);
|
51
|
+
|
52
|
+
// creating and updating of tvl balance
|
53
|
+
error ErrorStakingStoreTvlBalanceAlreadyInitialized(NftId nftId, address token);
|
54
|
+
error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId, address token);
|
55
|
+
|
56
|
+
IRegistry private _registry;
|
57
|
+
NftIdSet private _targetNftIdSet;
|
58
|
+
StakingReader private _reader;
|
59
|
+
|
60
|
+
// stakes
|
61
|
+
mapping(NftId stakeNftId => IStaking.StakeInfo) private _stakeInfo;
|
62
|
+
|
63
|
+
// targets
|
64
|
+
mapping(NftId targetNftId => IStaking.TargetInfo) private _targetInfo;
|
65
|
+
mapping(NftId targetNftId => mapping(address token => IStaking.TvlInfo)) private _tvlInfo;
|
66
|
+
mapping(NftId targetNftId => address [] token) private _targetToken;
|
67
|
+
|
68
|
+
// staking rate
|
69
|
+
mapping(ChainId chainId => mapping(address token => IStaking.TokenInfo)) private _tokenInfo;
|
70
|
+
|
71
|
+
|
72
|
+
constructor(IRegistry registry, StakingReader reader)
|
73
|
+
AccessManaged(msg.sender)
|
74
|
+
{
|
75
|
+
// set final authority
|
76
|
+
setAuthority(registry.getAuthority());
|
77
|
+
|
78
|
+
// set internal variables
|
79
|
+
_registry = registry;
|
80
|
+
_reader = reader;
|
81
|
+
_targetNftIdSet = new NftIdSet();
|
82
|
+
|
83
|
+
// register protocol target
|
84
|
+
_createTarget(
|
85
|
+
NftIdLib.toNftId(1101),
|
86
|
+
PROTOCOL(),
|
87
|
+
TargetManagerLib.getDefaultLockingPeriod(),
|
88
|
+
TargetManagerLib.getDefaultRewardRate(),
|
89
|
+
false); // no parameter check
|
90
|
+
}
|
91
|
+
|
92
|
+
|
93
|
+
//--- token management --------------------------------------------------//
|
94
|
+
|
95
|
+
/// @dev Registers a token for tvl management.
|
96
|
+
function addToken(
|
97
|
+
ChainId chainId,
|
98
|
+
address token
|
99
|
+
)
|
100
|
+
external
|
101
|
+
restricted() // token registry via staking
|
102
|
+
{
|
103
|
+
// checks
|
104
|
+
IStaking.TokenInfo storage info = _tokenInfo[chainId][token];
|
105
|
+
|
106
|
+
// check token is not yet registered
|
107
|
+
if (info.lastUpdateIn.gtz()) {
|
108
|
+
revert ErrorStakingStoreTokenAlreadyAdded(chainId, token);
|
109
|
+
}
|
110
|
+
|
111
|
+
info.stakingRate = UFixedLib.zero();
|
112
|
+
info.lastUpdateIn = BlocknumberLib.current();
|
113
|
+
|
114
|
+
// logging
|
115
|
+
emit IStaking.LogStakingTokenAdded(chainId, token);
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/// @dev Sets the staking rate for the token.
|
120
|
+
function setStakingRate(
|
121
|
+
ChainId chainId,
|
122
|
+
address token,
|
123
|
+
UFixed stakingRate
|
124
|
+
)
|
125
|
+
external
|
126
|
+
restricted() // staking
|
127
|
+
returns (
|
128
|
+
UFixed oldStakingRate,
|
129
|
+
Blocknumber lastUpdatedIn
|
130
|
+
)
|
131
|
+
{
|
132
|
+
IStaking.TokenInfo storage info = _tokenInfo[chainId][token];
|
133
|
+
if (info.lastUpdateIn.eqz()) {
|
134
|
+
revert ErrorStakingStoreTokenUnknown(chainId, token);
|
135
|
+
}
|
136
|
+
|
137
|
+
// get previous values
|
138
|
+
oldStakingRate = info.stakingRate;
|
139
|
+
lastUpdatedIn = info.lastUpdateIn;
|
140
|
+
|
141
|
+
// update values
|
142
|
+
info.stakingRate = stakingRate;
|
143
|
+
info.lastUpdateIn = BlocknumberLib.current();
|
144
|
+
}
|
145
|
+
|
146
|
+
//--- target management -------------------------------------------------//
|
147
|
+
|
148
|
+
function createTarget(
|
149
|
+
NftId targetNftId,
|
150
|
+
ObjectType objectType,
|
151
|
+
Seconds lockingPeriod,
|
152
|
+
UFixed rewardRate
|
153
|
+
)
|
154
|
+
external
|
155
|
+
restricted() // staking
|
156
|
+
{
|
157
|
+
_createTarget(targetNftId, objectType, lockingPeriod, rewardRate, true);
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
function setLockingPeriod(
|
162
|
+
NftId targetNftId,
|
163
|
+
Seconds lockingPeriod
|
164
|
+
)
|
165
|
+
external
|
166
|
+
restricted() // staking
|
167
|
+
returns (
|
168
|
+
Seconds oldLockingPeriod,
|
169
|
+
Blocknumber lastUpdatedIn
|
170
|
+
)
|
171
|
+
{
|
172
|
+
TargetManagerLib.checkLockingPeriod(targetNftId, lockingPeriod);
|
173
|
+
|
174
|
+
IStaking.TargetInfo storage targetInfo;
|
175
|
+
(targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
|
176
|
+
|
177
|
+
oldLockingPeriod = targetInfo.lockingPeriod;
|
178
|
+
targetInfo.lockingPeriod = lockingPeriod;
|
179
|
+
}
|
180
|
+
|
181
|
+
|
182
|
+
function setRewardRate(
|
183
|
+
NftId targetNftId,
|
184
|
+
UFixed rewardRate
|
185
|
+
)
|
186
|
+
external
|
187
|
+
restricted() // staking
|
188
|
+
returns (
|
189
|
+
UFixed oldRewardRate,
|
190
|
+
Blocknumber lastUpdatedIn
|
191
|
+
)
|
192
|
+
{
|
193
|
+
TargetManagerLib.checkRewardRate(targetNftId, rewardRate);
|
194
|
+
|
195
|
+
IStaking.TargetInfo storage targetInfo;
|
196
|
+
(targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
|
197
|
+
|
198
|
+
oldRewardRate = targetInfo.rewardRate;
|
199
|
+
targetInfo.rewardRate = rewardRate;
|
200
|
+
}
|
201
|
+
|
202
|
+
|
203
|
+
function setMaxStakedAmount(
|
204
|
+
NftId targetNftId,
|
205
|
+
Amount maxStakedAmount
|
206
|
+
)
|
207
|
+
external
|
208
|
+
restricted() // staking
|
209
|
+
returns (
|
210
|
+
Amount oldMaxStakedAmount,
|
211
|
+
Blocknumber lastUpdatedIn
|
212
|
+
)
|
213
|
+
{
|
214
|
+
IStaking.TargetInfo storage targetInfo;
|
215
|
+
(targetInfo, lastUpdatedIn) = _verifyAndUpdateTarget(targetNftId);
|
216
|
+
|
217
|
+
oldMaxStakedAmount = targetInfo.maxStakedAmount;
|
218
|
+
targetInfo.maxStakedAmount = maxStakedAmount;
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
function addTargetToken(
|
223
|
+
NftId targetNftId,
|
224
|
+
address token
|
225
|
+
)
|
226
|
+
external
|
227
|
+
restricted()
|
228
|
+
{
|
229
|
+
// checks
|
230
|
+
|
231
|
+
// skip registering if tvl balance has already been initialized
|
232
|
+
IStaking.TvlInfo storage tvlInfo = _tvlInfo[targetNftId][token];
|
233
|
+
if (tvlInfo.lastUpdateIn.gtz()) {
|
234
|
+
return;
|
235
|
+
}
|
236
|
+
|
237
|
+
// check target exists
|
238
|
+
_getAndVerifyTarget(targetNftId);
|
239
|
+
|
240
|
+
// check token is known for chain id of target
|
241
|
+
ChainId chainId = ChainIdLib.fromNftId(targetNftId);
|
242
|
+
if (_tokenInfo[chainId][token].lastUpdateIn.eqz()) {
|
243
|
+
revert ErrorStakingStoreTokenUnknown(chainId, token);
|
244
|
+
}
|
245
|
+
|
246
|
+
// effects
|
247
|
+
tvlInfo.tvlAmount = AmountLib.zero();
|
248
|
+
tvlInfo.lastUpdateIn = BlocknumberLib.current();
|
249
|
+
|
250
|
+
// add token to list of know tokens for target
|
251
|
+
_targetToken[targetNftId].push(token);
|
252
|
+
}
|
253
|
+
|
254
|
+
|
255
|
+
function refillRewardReserves(
|
256
|
+
NftId targetNftId,
|
257
|
+
Amount dipAmount
|
258
|
+
)
|
259
|
+
external
|
260
|
+
restricted()
|
261
|
+
returns (Amount newReserveBalance)
|
262
|
+
{
|
263
|
+
// checks
|
264
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
|
265
|
+
Blocknumber lastUpdateIn = targetInfo.lastUpdateIn;
|
266
|
+
|
267
|
+
// effects
|
268
|
+
targetInfo.reserveAmount = targetInfo.reserveAmount + dipAmount;
|
269
|
+
targetInfo.lastUpdateIn = BlocknumberLib.current();
|
270
|
+
|
271
|
+
// logging
|
272
|
+
newReserveBalance = targetInfo.reserveAmount;
|
273
|
+
emit IStaking.LogStakingRewardReservesRefilled(
|
274
|
+
targetNftId,
|
275
|
+
dipAmount,
|
276
|
+
_registry.ownerOf(targetNftId),
|
277
|
+
newReserveBalance,
|
278
|
+
lastUpdateIn);
|
279
|
+
}
|
280
|
+
|
281
|
+
|
282
|
+
function withdrawRewardReserves(
|
283
|
+
NftId targetNftId,
|
284
|
+
Amount dipAmount
|
285
|
+
)
|
286
|
+
external
|
287
|
+
restricted()
|
288
|
+
returns (Amount newReserveBalance)
|
289
|
+
{
|
290
|
+
// checks
|
291
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
|
292
|
+
|
293
|
+
// effects
|
294
|
+
Blocknumber lastUpdateIn = _decreaseReserves(targetNftId, targetInfo, dipAmount);
|
295
|
+
|
296
|
+
// logging
|
297
|
+
newReserveBalance = targetInfo.reserveAmount;
|
298
|
+
emit IStaking.LogStakingRewardReservesWithdrawn(
|
299
|
+
targetNftId,
|
300
|
+
dipAmount,
|
301
|
+
_registry.ownerOf(targetNftId),
|
302
|
+
newReserveBalance,
|
303
|
+
lastUpdateIn);
|
304
|
+
}
|
305
|
+
|
306
|
+
|
307
|
+
//--- tvl specific functions -------------------------------------//
|
308
|
+
|
309
|
+
function increaseTotalValueLocked(
|
310
|
+
NftId targetNftId,
|
311
|
+
address token,
|
312
|
+
Amount amount
|
313
|
+
)
|
314
|
+
external
|
315
|
+
restricted()
|
316
|
+
returns (Amount newBalance)
|
317
|
+
{
|
318
|
+
// checks
|
319
|
+
IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
|
320
|
+
|
321
|
+
// effects
|
322
|
+
tvlInfo.tvlAmount = tvlInfo.tvlAmount + amount;
|
323
|
+
tvlInfo.lastUpdateIn = BlocknumberLib.current();
|
324
|
+
newBalance = tvlInfo.tvlAmount;
|
325
|
+
}
|
326
|
+
|
327
|
+
|
328
|
+
function decreaseTotalValueLocked(
|
329
|
+
NftId targetNftId,
|
330
|
+
address token,
|
331
|
+
Amount amount
|
332
|
+
)
|
333
|
+
external
|
334
|
+
restricted()
|
335
|
+
returns (Amount newBalance)
|
336
|
+
{
|
337
|
+
// checks
|
338
|
+
IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
|
339
|
+
|
340
|
+
// effects
|
341
|
+
tvlInfo.tvlAmount = tvlInfo.tvlAmount - amount;
|
342
|
+
tvlInfo.lastUpdateIn = BlocknumberLib.current();
|
343
|
+
newBalance = tvlInfo.tvlAmount;
|
344
|
+
}
|
345
|
+
|
346
|
+
//--- stake specific functions -------------------------------------//
|
347
|
+
|
348
|
+
function createStake(
|
349
|
+
NftId stakeNftId,
|
350
|
+
NftId targetNftId,
|
351
|
+
address stakeOwner,
|
352
|
+
Amount stakeAmount
|
353
|
+
)
|
354
|
+
external
|
355
|
+
restricted()
|
356
|
+
returns (Timestamp lockedUntil)
|
357
|
+
{
|
358
|
+
// checks
|
359
|
+
IStaking.StakeInfo storage stakeInfo = _stakeInfo[stakeNftId];
|
360
|
+
if (stakeInfo.lastUpdateIn.gtz()) {
|
361
|
+
revert ErrorStakingStoreStakeBalanceAlreadyInitialized(stakeNftId);
|
362
|
+
}
|
363
|
+
|
364
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(targetNftId);
|
365
|
+
_checkMaxStakedAmount(targetNftId, targetInfo, stakeAmount);
|
366
|
+
|
367
|
+
// effects
|
368
|
+
stakeInfo.targetNftId = targetNftId;
|
369
|
+
stakeInfo.stakedAmount = AmountLib.zero();
|
370
|
+
stakeInfo.rewardAmount = AmountLib.zero();
|
371
|
+
stakeInfo.lockedUntil = TimestampLib.current();
|
372
|
+
_setStakeLastUpdatesToCurrent(stakeInfo);
|
373
|
+
|
374
|
+
// logging for creation of empty stake
|
375
|
+
emit IStaking.LogStakingStakeCreated(stakeNftId, stakeInfo.targetNftId, stakeInfo.stakedAmount, stakeInfo.lockedUntil, stakeOwner);
|
376
|
+
|
377
|
+
// process stake amount
|
378
|
+
_stake(stakeNftId, stakeInfo, targetInfo, targetInfo.lockingPeriod, stakeAmount);
|
379
|
+
}
|
380
|
+
|
381
|
+
|
382
|
+
function stake(
|
383
|
+
NftId stakeNftId,
|
384
|
+
bool updateRewards,
|
385
|
+
bool restakeRewards,
|
386
|
+
Seconds additionalLockingPeriod,
|
387
|
+
Amount stakeAmount
|
388
|
+
)
|
389
|
+
external
|
390
|
+
restricted()
|
391
|
+
{
|
392
|
+
// checks
|
393
|
+
IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
|
394
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
|
395
|
+
|
396
|
+
if (updateRewards) {
|
397
|
+
_updateRewards(stakeNftId, stakeInfo, targetInfo);
|
398
|
+
}
|
399
|
+
|
400
|
+
if (restakeRewards) {
|
401
|
+
_restakeRewards(stakeNftId, stakeInfo, targetInfo);
|
402
|
+
}
|
403
|
+
|
404
|
+
_stake(stakeNftId, stakeInfo, targetInfo, additionalLockingPeriod, stakeAmount);
|
405
|
+
}
|
406
|
+
|
407
|
+
|
408
|
+
function unstake(
|
409
|
+
NftId stakeNftId,
|
410
|
+
bool updateRewards,
|
411
|
+
bool restakeRewards,
|
412
|
+
Amount maxUnstakeAmount
|
413
|
+
)
|
414
|
+
external
|
415
|
+
restricted()
|
416
|
+
returns (Amount unstakedAmount)
|
417
|
+
{
|
418
|
+
// checks
|
419
|
+
IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
|
420
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
|
421
|
+
|
422
|
+
if (updateRewards) {
|
423
|
+
_updateRewards(stakeNftId, stakeInfo, targetInfo);
|
424
|
+
}
|
425
|
+
|
426
|
+
if (restakeRewards) {
|
427
|
+
_restakeRewards(stakeNftId, stakeInfo, targetInfo);
|
428
|
+
}
|
429
|
+
|
430
|
+
return _unstake(stakeNftId, stakeInfo, targetInfo, maxUnstakeAmount);
|
431
|
+
}
|
432
|
+
|
433
|
+
|
434
|
+
function updateRewards(NftId stakeNftId)
|
435
|
+
external
|
436
|
+
restricted()
|
437
|
+
{
|
438
|
+
// checks
|
439
|
+
IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
|
440
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
|
441
|
+
_updateRewards(stakeNftId, stakeInfo, targetInfo);
|
442
|
+
}
|
443
|
+
|
444
|
+
|
445
|
+
function restakeRewards(
|
446
|
+
NftId stakeNftId,
|
447
|
+
bool updateRewards
|
448
|
+
)
|
449
|
+
external
|
450
|
+
restricted()
|
451
|
+
{
|
452
|
+
// checks
|
453
|
+
IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
|
454
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
|
455
|
+
|
456
|
+
if (updateRewards) {
|
457
|
+
_updateRewards(stakeNftId, stakeInfo, targetInfo);
|
458
|
+
}
|
459
|
+
|
460
|
+
_restakeRewards(stakeNftId, stakeInfo, targetInfo);
|
461
|
+
}
|
462
|
+
|
463
|
+
|
464
|
+
function claimRewards(
|
465
|
+
NftId stakeNftId,
|
466
|
+
bool updateRewards,
|
467
|
+
Amount maxClaimAmount
|
468
|
+
)
|
469
|
+
external
|
470
|
+
restricted()
|
471
|
+
returns (Amount claimedAmount)
|
472
|
+
{
|
473
|
+
// checks
|
474
|
+
IStaking.StakeInfo storage stakeInfo = _getAndVerifyStake(stakeNftId);
|
475
|
+
IStaking.TargetInfo storage targetInfo = _getAndVerifyTarget(stakeInfo.targetNftId);
|
476
|
+
|
477
|
+
if (updateRewards) {
|
478
|
+
_updateRewards(stakeNftId, stakeInfo, targetInfo);
|
479
|
+
}
|
480
|
+
|
481
|
+
claimedAmount = _claimRewards(stakeNftId, stakeInfo, targetInfo, maxClaimAmount);
|
482
|
+
}
|
483
|
+
|
484
|
+
//--- view functions -----------------------------------------------//
|
485
|
+
|
486
|
+
function getStakingReader() external view returns (StakingReader stakingReader){
|
487
|
+
return _reader;
|
488
|
+
}
|
489
|
+
|
490
|
+
|
491
|
+
function exists(NftId stakeNftId) external view returns (bool) {
|
492
|
+
return _stakeInfo[stakeNftId].lastUpdateIn.gtz();
|
493
|
+
}
|
494
|
+
|
495
|
+
|
496
|
+
function getRequiredStakeBalance(NftId targetNftId)
|
497
|
+
external
|
498
|
+
view
|
499
|
+
returns (Amount requiredStakedAmount)
|
500
|
+
{
|
501
|
+
address [] memory tokens = _targetToken[targetNftId];
|
502
|
+
if (tokens.length == 0) {
|
503
|
+
return AmountLib.zero();
|
504
|
+
}
|
505
|
+
|
506
|
+
requiredStakedAmount = AmountLib.zero();
|
507
|
+
ChainId targetChainId = _targetInfo[targetNftId].chainId;
|
508
|
+
address token;
|
509
|
+
Amount tvlAmount;
|
510
|
+
UFixed stakingRate;
|
511
|
+
|
512
|
+
for (uint256 i = 0; i < tokens.length; i++) {
|
513
|
+
token = tokens[i];
|
514
|
+
tvlAmount = _tvlInfo[targetNftId][token].tvlAmount;
|
515
|
+
if (tvlAmount.eqz()) { continue; }
|
516
|
+
|
517
|
+
stakingRate = _tokenInfo[targetChainId][token].stakingRate;
|
518
|
+
if (stakingRate.eqz()) { continue; }
|
519
|
+
|
520
|
+
requiredStakedAmount = requiredStakedAmount + tvlAmount.multiplyWith(stakingRate);
|
521
|
+
}
|
522
|
+
}
|
523
|
+
|
524
|
+
|
525
|
+
/// @dev Returns true iff current stake amount is still locked
|
526
|
+
function isStakeLocked(NftId stakeNftId) public view returns (bool) {
|
527
|
+
return _stakeInfo[stakeNftId].lockedUntil > TimestampLib.current();
|
528
|
+
}
|
529
|
+
|
530
|
+
|
531
|
+
/// @dev Returns the stake infos for the specified stake.
|
532
|
+
function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
|
533
|
+
return _stakeInfo[stakeNftId];
|
534
|
+
}
|
535
|
+
|
536
|
+
|
537
|
+
/// @dev Returns the stake infos for the specified stake.
|
538
|
+
function getStakeTarget(NftId stakeNftId) external view returns (NftId targetNftId) {
|
539
|
+
return _stakeInfo[stakeNftId].targetNftId;
|
540
|
+
}
|
541
|
+
|
542
|
+
|
543
|
+
/// @dev Returns the target infos for the specified target.
|
544
|
+
function getTargetInfo(NftId targetNftId) external view returns (IStaking.TargetInfo memory targetInfo) {
|
545
|
+
return _targetInfo[targetNftId];
|
546
|
+
}
|
547
|
+
|
548
|
+
|
549
|
+
/// @dev Returns the tvl infos for the specified target.
|
550
|
+
function getTvlInfo(NftId targetNftId, address token) external view returns (IStaking.TvlInfo memory tvlInfo) {
|
551
|
+
return _tvlInfo[targetNftId][token];
|
552
|
+
}
|
553
|
+
|
554
|
+
|
555
|
+
/// @dev Returns the tvl infos for the specified target.
|
556
|
+
function getTokenInfo(ChainId chainId, address token) external view returns (IStaking.TokenInfo memory tokenInfo) {
|
557
|
+
return _tokenInfo[chainId][token];
|
558
|
+
}
|
559
|
+
|
560
|
+
|
561
|
+
function getTargetSet() external view returns (NftIdSet targetNftIdSet) {
|
562
|
+
return _targetNftIdSet;
|
563
|
+
}
|
564
|
+
|
565
|
+
//--- internal functions -----------------------------------------------//
|
566
|
+
|
567
|
+
function _verifyAndUpdateTarget(NftId targetNftId)
|
568
|
+
private
|
569
|
+
returns (
|
570
|
+
IStaking.TargetInfo storage targetInfo,
|
571
|
+
Blocknumber lastUpdatedIn
|
572
|
+
)
|
573
|
+
{
|
574
|
+
// checks
|
575
|
+
targetInfo = _getAndVerifyTarget(targetNftId);
|
576
|
+
lastUpdatedIn = targetInfo.lastUpdateIn;
|
577
|
+
targetInfo.lastUpdateIn = BlocknumberLib.current();
|
578
|
+
}
|
579
|
+
|
580
|
+
|
581
|
+
function _createTarget(
|
582
|
+
NftId targetNftId,
|
583
|
+
ObjectType objectType,
|
584
|
+
Seconds lockingPeriod,
|
585
|
+
UFixed rewardRate,
|
586
|
+
bool checkParameters
|
587
|
+
)
|
588
|
+
private
|
589
|
+
{
|
590
|
+
// checks
|
591
|
+
if (checkParameters) {
|
592
|
+
TargetManagerLib.checkTargetParameters(
|
593
|
+
_registry,
|
594
|
+
_reader,
|
595
|
+
targetNftId,
|
596
|
+
objectType,
|
597
|
+
lockingPeriod,
|
598
|
+
rewardRate);
|
599
|
+
}
|
600
|
+
|
601
|
+
// effects
|
602
|
+
IStaking.TargetInfo storage targetInfo = _targetInfo[targetNftId];
|
603
|
+
targetInfo.stakedAmount = AmountLib.zero();
|
604
|
+
targetInfo.rewardAmount = AmountLib.zero();
|
605
|
+
targetInfo.reserveAmount = AmountLib.zero();
|
606
|
+
targetInfo.maxStakedAmount = AmountLib.max();
|
607
|
+
|
608
|
+
targetInfo.objectType = objectType;
|
609
|
+
targetInfo.lockingPeriod = lockingPeriod;
|
610
|
+
targetInfo.rewardRate = rewardRate;
|
611
|
+
targetInfo.chainId = ChainIdLib.fromNftId(targetNftId);
|
612
|
+
targetInfo.lastUpdateIn = BlocknumberLib.current();
|
613
|
+
|
614
|
+
// add new target to target set
|
615
|
+
_targetNftIdSet.add(targetNftId);
|
616
|
+
}
|
617
|
+
|
618
|
+
|
619
|
+
function _spendRewardReserves(
|
620
|
+
NftId targetNftId,
|
621
|
+
IStaking.TargetInfo storage targetInfo,
|
622
|
+
Amount dipAmount
|
623
|
+
)
|
624
|
+
private
|
625
|
+
{
|
626
|
+
Blocknumber lastUpdateIn = _decreaseReserves(targetNftId, targetInfo, dipAmount);
|
627
|
+
|
628
|
+
// logging
|
629
|
+
emit IStaking.LogStakingRewardReservesSpent(
|
630
|
+
targetNftId,
|
631
|
+
dipAmount,
|
632
|
+
targetInfo.reserveAmount,
|
633
|
+
lastUpdateIn);
|
634
|
+
}
|
635
|
+
|
636
|
+
|
637
|
+
function _decreaseReserves(
|
638
|
+
NftId targetNftId,
|
639
|
+
IStaking.TargetInfo storage targetInfo,
|
640
|
+
Amount dipAmount
|
641
|
+
)
|
642
|
+
private
|
643
|
+
returns ( Blocknumber lastUpdateIn)
|
644
|
+
{
|
645
|
+
lastUpdateIn = targetInfo.lastUpdateIn;
|
646
|
+
|
647
|
+
// check if reserves are sufficient
|
648
|
+
if (dipAmount > targetInfo.reserveAmount) {
|
649
|
+
revert ErrorStakingStoreRewardReservesInsufficient(
|
650
|
+
targetNftId,
|
651
|
+
targetInfo.reserveAmount,
|
652
|
+
dipAmount);
|
653
|
+
}
|
654
|
+
|
655
|
+
// effects
|
656
|
+
targetInfo.reserveAmount = targetInfo.reserveAmount - dipAmount;
|
657
|
+
targetInfo.lastUpdateIn = BlocknumberLib.current();
|
658
|
+
}
|
659
|
+
|
660
|
+
|
661
|
+
function _updateRewards(
|
662
|
+
NftId stakeNftId,
|
663
|
+
IStaking.StakeInfo storage stakeInfo,
|
664
|
+
IStaking.TargetInfo storage targetInfo
|
665
|
+
)
|
666
|
+
internal
|
667
|
+
returns (Amount rewardIncreaseAmount)
|
668
|
+
{
|
669
|
+
// return if reward rate is zero
|
670
|
+
if (targetInfo.rewardRate.eqz()) {
|
671
|
+
return rewardIncreaseAmount;
|
672
|
+
}
|
673
|
+
|
674
|
+
// get seconds since last update on stake
|
675
|
+
Seconds duration = SecondsLib.toSeconds(
|
676
|
+
block.timestamp - stakeInfo.lastUpdateAt.toInt());
|
677
|
+
|
678
|
+
// return if duration is zero
|
679
|
+
if (duration.eqz()) {
|
680
|
+
return AmountLib.zero();
|
681
|
+
}
|
682
|
+
|
683
|
+
// calculate reward increase since
|
684
|
+
rewardIncreaseAmount = StakingLib.calculateRewardAmount(
|
685
|
+
targetInfo.rewardRate,
|
686
|
+
duration,
|
687
|
+
stakeInfo.stakedAmount);
|
688
|
+
|
689
|
+
// update target + stake
|
690
|
+
targetInfo.rewardAmount = targetInfo.rewardAmount + rewardIncreaseAmount;
|
691
|
+
stakeInfo.rewardAmount = stakeInfo.rewardAmount + rewardIncreaseAmount;
|
692
|
+
_setLastUpdatesToCurrent(stakeInfo, targetInfo);
|
693
|
+
|
694
|
+
// logging
|
695
|
+
emit IStaking.LogStakingStakeRewardsUpdated(
|
696
|
+
stakeNftId,
|
697
|
+
rewardIncreaseAmount,
|
698
|
+
stakeInfo.stakedAmount,
|
699
|
+
stakeInfo.rewardAmount,
|
700
|
+
stakeInfo.lockedUntil);
|
701
|
+
}
|
702
|
+
|
703
|
+
|
704
|
+
function _restakeRewards(
|
705
|
+
NftId stakeNftId,
|
706
|
+
IStaking.StakeInfo storage stakeInfo,
|
707
|
+
IStaking.TargetInfo storage targetInfo
|
708
|
+
)
|
709
|
+
internal
|
710
|
+
returns (Amount restakeAmount)
|
711
|
+
{
|
712
|
+
restakeAmount = stakeInfo.rewardAmount;
|
713
|
+
|
714
|
+
// return if reward amount is zero
|
715
|
+
if (restakeAmount.eqz()) {
|
716
|
+
return restakeAmount;
|
717
|
+
}
|
718
|
+
|
719
|
+
// check restaking amount does not exceed target max staked amount
|
720
|
+
_checkMaxStakedAmount(stakeInfo.targetNftId, targetInfo, restakeAmount);
|
721
|
+
|
722
|
+
// use up reserves for newly staked dips
|
723
|
+
_spendRewardReserves(stakeInfo.targetNftId, targetInfo, restakeAmount);
|
724
|
+
|
725
|
+
// update target + stake
|
726
|
+
targetInfo.stakedAmount = targetInfo.stakedAmount + restakeAmount;
|
727
|
+
targetInfo.rewardAmount = targetInfo.rewardAmount - restakeAmount;
|
728
|
+
stakeInfo.stakedAmount = stakeInfo.stakedAmount + restakeAmount;
|
729
|
+
stakeInfo.rewardAmount = AmountLib.zero();
|
730
|
+
_setLastUpdatesToCurrent(stakeInfo, targetInfo);
|
731
|
+
|
732
|
+
// logging
|
733
|
+
emit IStaking.LogStakingRewardsRestaked(
|
734
|
+
stakeNftId,
|
735
|
+
restakeAmount,
|
736
|
+
stakeInfo.stakedAmount,
|
737
|
+
AmountLib.zero(),
|
738
|
+
stakeInfo.lockedUntil);
|
739
|
+
}
|
740
|
+
|
741
|
+
|
742
|
+
function _stake(
|
743
|
+
NftId stakeNftId,
|
744
|
+
IStaking.StakeInfo storage stakeInfo,
|
745
|
+
IStaking.TargetInfo storage targetInfo,
|
746
|
+
Seconds maxAdditionalLockingPeriod,
|
747
|
+
Amount stakeAmount
|
748
|
+
)
|
749
|
+
internal
|
750
|
+
{
|
751
|
+
// return if reward amount is zero
|
752
|
+
if (stakeAmount.eqz()) {
|
753
|
+
return;
|
754
|
+
}
|
755
|
+
|
756
|
+
// check restaking amount does not exceed target max staked amount
|
757
|
+
_checkMaxStakedAmount(stakeInfo.targetNftId, targetInfo, stakeAmount);
|
758
|
+
|
759
|
+
// update target + stake
|
760
|
+
targetInfo.stakedAmount = targetInfo.stakedAmount + stakeAmount;
|
761
|
+
stakeInfo.stakedAmount = stakeInfo.stakedAmount + stakeAmount;
|
762
|
+
|
763
|
+
// increase locked until if applicable
|
764
|
+
Seconds additionalLockingPeriod = SecondsLib.min(maxAdditionalLockingPeriod, targetInfo.lockingPeriod);
|
765
|
+
if (stakeAmount.gtz() && additionalLockingPeriod.gtz()) {
|
766
|
+
stakeInfo.lockedUntil = stakeInfo.lockedUntil.addSeconds(additionalLockingPeriod);
|
767
|
+
}
|
768
|
+
|
769
|
+
_setLastUpdatesToCurrent(stakeInfo, targetInfo);
|
770
|
+
|
771
|
+
// logging
|
772
|
+
emit IStaking.LogStakingStaked(
|
773
|
+
stakeNftId,
|
774
|
+
stakeAmount,
|
775
|
+
stakeInfo.stakedAmount,
|
776
|
+
stakeInfo.rewardAmount,
|
777
|
+
stakeInfo.lockedUntil);
|
778
|
+
}
|
779
|
+
|
780
|
+
|
781
|
+
function _claimRewards(
|
782
|
+
NftId stakeNftId,
|
783
|
+
IStaking.StakeInfo storage stakeInfo,
|
784
|
+
IStaking.TargetInfo storage targetInfo,
|
785
|
+
Amount maxClaimAmount
|
786
|
+
)
|
787
|
+
internal
|
788
|
+
returns (Amount claimAmount)
|
789
|
+
{
|
790
|
+
claimAmount = AmountLib.min(maxClaimAmount, stakeInfo.rewardAmount);
|
791
|
+
|
792
|
+
// return if no rewards to claim
|
793
|
+
if (claimAmount.eqz()) {
|
794
|
+
return claimAmount;
|
795
|
+
}
|
796
|
+
|
797
|
+
// effects
|
798
|
+
// use up reserves for claimed rewards
|
799
|
+
_spendRewardReserves(stakeInfo.targetNftId, targetInfo, claimAmount);
|
800
|
+
|
801
|
+
// update target + stake
|
802
|
+
targetInfo.rewardAmount = targetInfo.rewardAmount - claimAmount;
|
803
|
+
stakeInfo.rewardAmount = stakeInfo.rewardAmount - claimAmount;
|
804
|
+
_setLastUpdatesToCurrent(stakeInfo, targetInfo);
|
805
|
+
|
806
|
+
// logging
|
807
|
+
emit IStaking.LogStakingRewardsClaimed(
|
808
|
+
stakeNftId,
|
809
|
+
claimAmount,
|
810
|
+
stakeInfo.stakedAmount,
|
811
|
+
stakeInfo.rewardAmount,
|
812
|
+
stakeInfo.lockedUntil);
|
813
|
+
}
|
814
|
+
|
815
|
+
|
816
|
+
function _unstake(
|
817
|
+
NftId stakeNftId,
|
818
|
+
IStaking.StakeInfo storage stakeInfo,
|
819
|
+
IStaking.TargetInfo storage targetInfo,
|
820
|
+
Amount maxUnstakeAmount
|
821
|
+
)
|
822
|
+
internal
|
823
|
+
returns (Amount unstakedAmount)
|
824
|
+
{
|
825
|
+
unstakedAmount = AmountLib.min(maxUnstakeAmount, stakeInfo.stakedAmount);
|
826
|
+
|
827
|
+
// return if no stakes to claim
|
828
|
+
if (unstakedAmount.eqz()) {
|
829
|
+
return unstakedAmount;
|
830
|
+
}
|
831
|
+
|
832
|
+
// check if stake is still locked
|
833
|
+
if (isStakeLocked(stakeNftId)) {
|
834
|
+
revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
|
835
|
+
}
|
836
|
+
|
837
|
+
// update target + stake
|
838
|
+
targetInfo.stakedAmount = targetInfo.stakedAmount - unstakedAmount;
|
839
|
+
stakeInfo.stakedAmount = stakeInfo.stakedAmount - unstakedAmount;
|
840
|
+
_setLastUpdatesToCurrent(stakeInfo, targetInfo);
|
841
|
+
|
842
|
+
// logging
|
843
|
+
emit IStaking.LogStakingUnstaked(
|
844
|
+
stakeNftId,
|
845
|
+
unstakedAmount,
|
846
|
+
stakeInfo.stakedAmount,
|
847
|
+
stakeInfo.rewardAmount,
|
848
|
+
stakeInfo.lockedUntil);
|
849
|
+
}
|
850
|
+
|
851
|
+
|
852
|
+
function _setLastUpdatesToCurrent(
|
853
|
+
IStaking.StakeInfo storage stakeInfo,
|
854
|
+
IStaking.TargetInfo storage targetInfo
|
855
|
+
)
|
856
|
+
internal
|
857
|
+
{
|
858
|
+
targetInfo.lastUpdateIn = BlocknumberLib.current();
|
859
|
+
_setStakeLastUpdatesToCurrent(stakeInfo);
|
860
|
+
}
|
861
|
+
|
862
|
+
|
863
|
+
function _setStakeLastUpdatesToCurrent(
|
864
|
+
IStaking.StakeInfo storage stakeInfo
|
865
|
+
)
|
866
|
+
internal
|
867
|
+
{
|
868
|
+
stakeInfo.lastUpdateIn = BlocknumberLib.current();
|
869
|
+
stakeInfo.lastUpdateAt = TimestampLib.current();
|
870
|
+
}
|
871
|
+
|
872
|
+
//--- private stake and target functions --------------------------------//
|
873
|
+
|
874
|
+
|
875
|
+
function _getAndVerifyStake(
|
876
|
+
NftId stakeNftId
|
877
|
+
)
|
878
|
+
private
|
879
|
+
view
|
880
|
+
returns (
|
881
|
+
IStaking.StakeInfo storage stakeInfo
|
882
|
+
)
|
883
|
+
{
|
884
|
+
stakeInfo = _stakeInfo[stakeNftId];
|
885
|
+
if (stakeInfo.lastUpdateIn.eqz()) {
|
886
|
+
revert ErrorStakingStoreStakeNotInitialized(stakeNftId);
|
887
|
+
}
|
888
|
+
}
|
889
|
+
|
890
|
+
|
891
|
+
function _checkMaxStakedAmount(
|
892
|
+
NftId targetNftId,
|
893
|
+
IStaking.TargetInfo storage targetInfo,
|
894
|
+
Amount additionalstakedAmount
|
895
|
+
)
|
896
|
+
private
|
897
|
+
{
|
898
|
+
if (targetInfo.stakedAmount + additionalstakedAmount > targetInfo.maxStakedAmount) {
|
899
|
+
revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(
|
900
|
+
targetNftId,
|
901
|
+
targetInfo.maxStakedAmount,
|
902
|
+
targetInfo.stakedAmount + additionalstakedAmount);
|
903
|
+
}
|
904
|
+
|
905
|
+
// TODO add check for tvl dependent maximum, see #628
|
906
|
+
}
|
907
|
+
|
908
|
+
|
909
|
+
function _getAndVerifyTarget(
|
910
|
+
NftId targetNftId
|
911
|
+
)
|
912
|
+
private
|
913
|
+
view
|
914
|
+
returns (
|
915
|
+
IStaking.TargetInfo storage targetInfo
|
916
|
+
)
|
917
|
+
{
|
918
|
+
targetInfo = _targetInfo[targetNftId];
|
919
|
+
|
920
|
+
if (targetInfo.lastUpdateIn.eqz()) {
|
921
|
+
revert ErrorStakingStoreTargetNotInitialized(targetNftId);
|
922
|
+
}
|
923
|
+
}
|
924
|
+
|
925
|
+
//--- private tvl functions ------------------------------------------------//
|
926
|
+
|
927
|
+
/// @dev Initializes token balance handling for the specified target.
|
928
|
+
function _createTvlBalance(NftId targetNftId, address token)
|
929
|
+
private
|
930
|
+
{
|
931
|
+
IStaking.TvlInfo storage info = _tvlInfo[targetNftId][token];
|
932
|
+
|
933
|
+
if (info.lastUpdateIn.gtz()) {
|
934
|
+
revert ErrorStakingStoreTvlBalanceAlreadyInitialized(targetNftId, token);
|
935
|
+
}
|
936
|
+
|
937
|
+
// set tvl balances to 0 and update last updated in
|
938
|
+
info.tvlAmount = AmountLib.zero();
|
939
|
+
info.lastUpdateIn = BlocknumberLib.current();
|
940
|
+
}
|
941
|
+
|
942
|
+
|
943
|
+
function _updateTvlBalance(
|
944
|
+
NftId targetNftId,
|
945
|
+
address token,
|
946
|
+
Amount newTvlAmount
|
947
|
+
)
|
948
|
+
private
|
949
|
+
returns (
|
950
|
+
Amount oldTvlAmount,
|
951
|
+
Blocknumber lastUpdatedIn
|
952
|
+
)
|
953
|
+
{
|
954
|
+
IStaking.TvlInfo storage tvlInfo = _getAndVerifyTvl(targetNftId, token);
|
955
|
+
oldTvlAmount = tvlInfo.tvlAmount;
|
956
|
+
lastUpdatedIn = tvlInfo.lastUpdateIn;
|
957
|
+
|
958
|
+
tvlInfo.tvlAmount = newTvlAmount;
|
959
|
+
tvlInfo.lastUpdateIn = BlocknumberLib.current();
|
960
|
+
}
|
961
|
+
|
962
|
+
|
963
|
+
function _getAndVerifyTvl(NftId targetNftId, address token)
|
964
|
+
private
|
965
|
+
view
|
966
|
+
returns (IStaking.TvlInfo storage tvlInfo)
|
967
|
+
{
|
968
|
+
tvlInfo = _tvlInfo[targetNftId][token];
|
969
|
+
if (tvlInfo.lastUpdateIn.eqz()) {
|
970
|
+
revert ErrorStakingStoreTvlBalanceNotInitialized(targetNftId, token);
|
971
|
+
}
|
972
|
+
}
|
973
|
+
}
|