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