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