@etherisc/gif-next 0.0.2-7ef1483-704 → 0.0.2-7f111bb-562
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 +49 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -461
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +286 -235
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +95 -164
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +165 -47
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -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 +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1218 -284
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +407 -127
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +195 -192
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +52 -99
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +387 -268
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +433 -168
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +121 -92
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +49 -294
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +248 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +56 -587
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -250
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +68 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -95
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +222 -167
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +71 -102
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +36 -83
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -303
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +66 -101
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -245
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +59 -118
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +46 -389
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -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 +246 -42
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1607 -153
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +11 -222
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +264 -171
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -107
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +4 -30
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +173 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -41
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- 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 +13 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +43 -286
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -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 +10 -109
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +141 -144
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +215 -70
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +145 -107
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -390
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -97
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +219 -18
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +254 -236
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +41 -96
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +776 -216
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +132 -19
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -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 +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +74 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +589 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +217 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +145 -111
- package/contracts/distribution/DistributionService.sol +83 -45
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +23 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +24 -40
- package/contracts/instance/IInstanceService.sol +34 -23
- package/contracts/instance/Instance.sol +112 -118
- package/contracts/instance/InstanceAdmin.sol +221 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +79 -14
- package/contracts/instance/InstanceService.sol +192 -87
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +49 -22
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -7
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +167 -0
- package/contracts/oracle/OracleService.sol +279 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +166 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +210 -68
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/IPoolService.sol +39 -26
- package/contracts/pool/Pool.sol +165 -138
- package/contracts/pool/PoolService.sol +198 -113
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +58 -64
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +131 -81
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -2
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +7 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +287 -187
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +49 -49
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +162 -114
- package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -31
- package/contracts/registry/IRegistry.sol +63 -19
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +333 -207
- package/contracts/registry/RegistryAdmin.sol +376 -149
- package/contracts/registry/RegistryService.sol +11 -25
- package/contracts/registry/RegistryServiceManager.sol +2 -7
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +491 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
- package/contracts/registry/TokenRegistry.sol +2 -48
- package/contracts/shared/Component.sol +35 -53
- package/contracts/shared/ComponentService.sol +121 -76
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +14 -8
- package/contracts/shared/IComponent.sol +7 -11
- package/contracts/shared/IComponentService.sol +26 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
- package/contracts/shared/IKeyValueStore.sol +2 -1
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IPolicyHolder.sol +0 -9
- package/contracts/shared/IService.sol +8 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +51 -23
- package/contracts/shared/KeyValueStore.sol +7 -6
- package/contracts/shared/Lifecycle.sol +16 -60
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +7 -53
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +32 -27
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +43 -27
- package/contracts/staking/IStakingService.sol +42 -44
- package/contracts/staking/StakeManagerLib.sol +118 -50
- package/contracts/staking/Staking.sol +147 -146
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +70 -33
- package/contracts/staking/StakingService.sol +122 -91
- package/contracts/staking/StakingServiceManager.sol +2 -3
- package/contracts/staking/StakingStore.sol +401 -127
- package/contracts/staking/TargetManagerLib.sol +35 -3
- package/contracts/type/Amount.sol +24 -3
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/NftId.sol +8 -8
- package/contracts/type/ObjectType.sol +174 -68
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RoleId.sol +103 -72
- package/contracts/type/Seconds.sol +31 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +13 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -204
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -349
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -599
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -470
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/staking/IStakingManager.sol +0 -15
- package/contracts/staking/IStakingStore.sol +0 -130
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
4
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
6
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
6
7
|
|
@@ -9,50 +10,130 @@ import {Amount} from "../type/Amount.sol";
|
|
9
10
|
/// @dev token specific transfer helper
|
10
11
|
/// a default token contract is provided via contract constructor
|
11
12
|
/// relies internally on oz SafeERC20.safeTransferFrom
|
12
|
-
contract TokenHandler {
|
13
|
+
contract TokenHandler is AccessManaged {
|
14
|
+
error ErrorTokenHandlerAmountIsZero();
|
15
|
+
error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
|
16
|
+
error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
|
17
|
+
error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
|
18
|
+
|
19
|
+
event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
|
20
|
+
|
13
21
|
IERC20Metadata private _token;
|
14
22
|
|
15
|
-
constructor(address token) {
|
23
|
+
constructor(address token, address initialAuthority) AccessManaged(initialAuthority) {
|
16
24
|
_token = IERC20Metadata(token);
|
17
25
|
}
|
18
26
|
|
19
|
-
/// @dev
|
20
|
-
function
|
27
|
+
/// @dev returns the default token defined for this TokenHandler
|
28
|
+
function getToken()
|
29
|
+
external
|
30
|
+
view
|
31
|
+
returns (IERC20Metadata)
|
32
|
+
{
|
33
|
+
return _token;
|
34
|
+
}
|
35
|
+
|
36
|
+
/// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
|
37
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
38
|
+
function collectTokens(
|
21
39
|
address from,
|
22
40
|
address to,
|
23
41
|
Amount amount
|
24
42
|
)
|
25
43
|
external
|
44
|
+
restricted()
|
26
45
|
{
|
27
|
-
|
28
|
-
_token,
|
29
|
-
from,
|
30
|
-
to,
|
31
|
-
amount.toInt());
|
46
|
+
_transfer(from, to, amount, true);
|
32
47
|
}
|
33
48
|
|
34
|
-
/// @dev
|
35
|
-
|
36
|
-
|
49
|
+
/// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
|
50
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
51
|
+
function collectTokensToThreeRecipients(
|
52
|
+
address from,
|
53
|
+
address to,
|
54
|
+
Amount amount,
|
55
|
+
address to2,
|
56
|
+
Amount amount2,
|
57
|
+
address to3,
|
58
|
+
Amount amount3
|
59
|
+
)
|
60
|
+
external
|
61
|
+
restricted()
|
62
|
+
{
|
63
|
+
if (to == to2 || to == to3 || to2 == to3) {
|
64
|
+
revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
|
65
|
+
}
|
66
|
+
|
67
|
+
_checkPreconditions(from, amount + amount2 + amount3);
|
68
|
+
|
69
|
+
if (amount.gtz()) {
|
70
|
+
_transfer(from, to, amount, false);
|
71
|
+
}
|
72
|
+
if (amount2.gtz()) {
|
73
|
+
_transfer(from, to2, amount2, false);
|
74
|
+
}
|
75
|
+
if (amount3.gtz()) {
|
76
|
+
_transfer(from, to3, amount3, false);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
/// @dev distribute tokens from a wallet within the scope of gif to an external address.
|
81
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
82
|
+
function distributeTokens(
|
37
83
|
address from,
|
38
84
|
address to,
|
39
85
|
Amount amount
|
40
86
|
)
|
41
87
|
external
|
88
|
+
restricted()
|
89
|
+
{
|
90
|
+
_transfer(from, to, amount, true);
|
91
|
+
}
|
92
|
+
|
93
|
+
function _transfer(
|
94
|
+
address from,
|
95
|
+
address to,
|
96
|
+
Amount amount,
|
97
|
+
bool checkPreconditions
|
98
|
+
)
|
99
|
+
internal
|
42
100
|
{
|
101
|
+
if (checkPreconditions) {
|
102
|
+
// check amount > 0, balance >= amount and allowance >= amount
|
103
|
+
_checkPreconditions(from, amount);
|
104
|
+
}
|
105
|
+
|
106
|
+
// transfer the tokens
|
107
|
+
emit LogTokenHandlerTokenTransfer(address(_token), from, to, amount.toInt());
|
43
108
|
SafeERC20.safeTransferFrom(
|
44
|
-
|
109
|
+
_token,
|
45
110
|
from,
|
46
111
|
to,
|
47
112
|
amount.toInt());
|
48
113
|
}
|
49
114
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
115
|
+
function _checkPreconditions(
|
116
|
+
address from,
|
117
|
+
Amount amount
|
118
|
+
)
|
119
|
+
internal
|
120
|
+
view
|
55
121
|
{
|
56
|
-
|
122
|
+
// amount must be greater than zero
|
123
|
+
if (amount.eqz()) {
|
124
|
+
revert ErrorTokenHandlerAmountIsZero();
|
125
|
+
}
|
126
|
+
|
127
|
+
// balance must be >= amount
|
128
|
+
uint256 balance = _token.balanceOf(from);
|
129
|
+
if (balance < amount.toInt()) {
|
130
|
+
revert ErrorTokenHandlerBalanceTooLow(address(_token), from, balance, amount.toInt());
|
131
|
+
}
|
132
|
+
|
133
|
+
// allowance must be >= amount
|
134
|
+
uint256 allowance = _token.allowance(from, address(this));
|
135
|
+
if (allowance < amount.toInt()) {
|
136
|
+
revert ErrorTokenHandlerAllowanceTooSmall(address(_token), from, address(this), allowance, amount.toInt());
|
137
|
+
}
|
57
138
|
}
|
58
139
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {TokenHandler} from "./TokenHandler.sol";
|
5
|
+
|
6
|
+
library TokenHandlerDeployerLib {
|
7
|
+
|
8
|
+
function deployTokenHandler(address token, address authority) public returns (TokenHandler) {
|
9
|
+
return new TokenHandler(address(token), authority);
|
10
|
+
}
|
11
|
+
|
12
|
+
}
|
@@ -3,9 +3,8 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {IComponent} from "../shared/IComponent.sol";
|
6
|
-
import {IVersionable} from "../
|
6
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
-
import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
|
9
8
|
import {ObjectType} from "../type/ObjectType.sol";
|
10
9
|
import {Seconds} from "../type/Seconds.sol";
|
11
10
|
import {StakingReader} from "./StakingReader.sol";
|
@@ -17,6 +16,8 @@ interface IStaking is
|
|
17
16
|
IComponent,
|
18
17
|
IVersionable
|
19
18
|
{
|
19
|
+
// staking rate
|
20
|
+
event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
|
20
21
|
|
21
22
|
// target parameters
|
22
23
|
event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
|
@@ -29,6 +30,9 @@ interface IStaking is
|
|
29
30
|
error ErrorStakingNotStakingOwner();
|
30
31
|
error ErrorStakingNotNftOwner(NftId nftId);
|
31
32
|
|
33
|
+
// staking rate
|
34
|
+
error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
|
35
|
+
|
32
36
|
// check dip balance and allowance
|
33
37
|
error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
|
34
38
|
error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
|
@@ -38,8 +42,9 @@ interface IStaking is
|
|
38
42
|
error ErrorStakingTargetNftIdZero();
|
39
43
|
error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
|
40
44
|
error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
|
41
|
-
error
|
45
|
+
error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
|
42
46
|
error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
|
47
|
+
error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
|
43
48
|
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
44
49
|
error ErrorStakingTargetNotFound(NftId targetNftId);
|
45
50
|
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
@@ -59,7 +64,10 @@ interface IStaking is
|
|
59
64
|
UFixed rewardRate;
|
60
65
|
}
|
61
66
|
|
62
|
-
// rate management
|
67
|
+
// staking rate management
|
68
|
+
|
69
|
+
/// @dev sets the rate that converts 1 token of total value locked into the
|
70
|
+
/// the required staked dip amount to back up the locked token value
|
63
71
|
function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
|
64
72
|
|
65
73
|
|
@@ -73,31 +81,53 @@ interface IStaking is
|
|
73
81
|
UFixed initialRewardRate
|
74
82
|
) external;
|
75
83
|
|
84
|
+
|
76
85
|
/// @dev set the stake locking period to the specified duration.
|
86
|
+
/// permissioned: only the staking service may call this function
|
77
87
|
function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
|
78
88
|
|
89
|
+
/// @dev update the target specific reward rate.
|
90
|
+
/// permissioned: only the staking service may call this function
|
79
91
|
function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
|
80
|
-
function refillRewardReserves(NftId targetNftId, Amount dipAmount) external;
|
81
|
-
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external;
|
82
92
|
|
83
|
-
|
84
|
-
|
93
|
+
/// @dev (re)fills the staking reward reserves for the specified target
|
94
|
+
/// unpermissioned: anybody may fill up staking reward reserves
|
95
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
96
|
+
|
97
|
+
/// @dev defunds the staking reward reserves for the specified target
|
98
|
+
/// permissioned: only the staking service may call this function
|
99
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
100
|
+
|
101
|
+
|
102
|
+
/// @dev increases the total value locked amount for the specified target by the provided token amount.
|
103
|
+
/// function is called when a new policy is collateralized.
|
104
|
+
/// function restricted to the pool service.
|
105
|
+
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
|
106
|
+
|
107
|
+
|
108
|
+
/// @dev decreases the total value locked amount for the specified target by the provided token amount.
|
109
|
+
/// function is called when a new policy is closed or payouts are executed.
|
110
|
+
/// function restricted to the pool service.
|
111
|
+
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
|
112
|
+
|
85
113
|
|
86
114
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
|
87
115
|
|
88
116
|
// staking functions
|
89
117
|
|
90
|
-
/// @dev
|
118
|
+
/// @dev creat a new stake info object
|
91
119
|
/// permissioned: only staking service may call this function.
|
92
|
-
function
|
120
|
+
function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
|
93
121
|
|
94
|
-
/// @dev increase the staked dip by dipAmount for the specified stake
|
95
|
-
|
122
|
+
/// @dev increase the staked dip by dipAmount for the specified stake.
|
123
|
+
/// staking rewards are updated and added to the staked dips as well.
|
124
|
+
/// the function returns the new total amount of staked dips.
|
125
|
+
function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
|
96
126
|
|
97
127
|
/// @dev restakes the dips to a new target.
|
98
128
|
/// the sum of the staked dips and the accumulated rewards will be restaked.
|
99
129
|
/// permissioned: only staking service may call this function.
|
100
|
-
function restake(NftId stakeNftId) external;
|
130
|
+
function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
|
101
131
|
|
102
132
|
/// @dev retuns the specified amount of dips to the holder of the specified stake nft.
|
103
133
|
/// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
|
@@ -135,18 +165,4 @@ interface IStaking is
|
|
135
165
|
|
136
166
|
function getStakingStore() external view returns (StakingStore stakingStore);
|
137
167
|
function getStakingReader() external view returns (StakingReader reader);
|
138
|
-
|
139
|
-
// function getStakeInfo(NftId stakeNftId) external view returns (StakeInfo memory stakeInfo);
|
140
|
-
// function getTargetInfo(NftId targetNftId) external view returns (TargetInfo memory targetInfo);
|
141
|
-
|
142
|
-
function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount);
|
143
|
-
function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount);
|
144
|
-
|
145
|
-
function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate);
|
146
|
-
|
147
|
-
function calculateRewardIncrementAmount(
|
148
|
-
NftId targetNftId,
|
149
|
-
Timestamp rewardsLastUpdatedAt
|
150
|
-
) external view returns (Amount rewardIncrementAmount);
|
151
|
-
|
152
168
|
}
|
@@ -22,9 +22,15 @@ interface IStakingService is IService
|
|
22
22
|
event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
|
23
23
|
event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
|
24
24
|
|
25
|
+
event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
|
26
|
+
event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
|
27
|
+
|
25
28
|
event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
|
26
|
-
event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount);
|
29
|
+
event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
|
30
|
+
event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
|
31
|
+
|
27
32
|
event LogStakingServiceRewardsUpdated(NftId stakeNftId);
|
33
|
+
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
28
34
|
|
29
35
|
// modifiers
|
30
36
|
error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
|
@@ -38,6 +44,13 @@ interface IStakingService is IService
|
|
38
44
|
error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
|
39
45
|
error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
|
40
46
|
|
47
|
+
/// @dev Set the protocol reward rate stake locking period to the specified duration.
|
48
|
+
/// Permissioned: only staking owner
|
49
|
+
// TODO implement
|
50
|
+
// function setProtocolRewardRate(UFixed rewardRate) external;
|
51
|
+
// function setProtocolLockingPeriod(Seconds lockingPeriod) external;
|
52
|
+
// TODO also make sure that protocol rewards can be refilled and withdrawn
|
53
|
+
|
41
54
|
/// @dev creates/registers an on-chain instance staking target.
|
42
55
|
/// function granted to instance service
|
43
56
|
function createInstanceTarget(
|
@@ -46,13 +59,25 @@ interface IStakingService is IService
|
|
46
59
|
UFixed initialRewardRate
|
47
60
|
) external;
|
48
61
|
|
49
|
-
/// @dev
|
50
|
-
///
|
51
|
-
function
|
62
|
+
/// @dev Set the instance stake locking period to the specified duration.
|
63
|
+
/// Permissioned: Only owner of the specified target.
|
64
|
+
function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
|
65
|
+
|
66
|
+
/// @dev Set the instance reward rate to the specified value.
|
67
|
+
/// Permissioned: Only owner of the specified target.
|
68
|
+
function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
|
69
|
+
|
70
|
+
/// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
|
71
|
+
/// unpermissioned: anybody may fill up staking reward reserves
|
72
|
+
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
|
52
73
|
|
53
|
-
/// @dev
|
54
|
-
///
|
55
|
-
function
|
74
|
+
/// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
|
75
|
+
/// unpermissioned: anybody may fill up staking reward reserves
|
76
|
+
function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
77
|
+
|
78
|
+
/// @dev Defunds the staking reward reserves for the specified target
|
79
|
+
/// Permissioned: only the target owner may call this function
|
80
|
+
function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
|
56
81
|
|
57
82
|
/// @dev create a new stake with amount DIP to the specified target
|
58
83
|
/// returns the id of the newly minted stake nft
|
@@ -68,7 +93,7 @@ interface IStakingService is IService
|
|
68
93
|
|
69
94
|
|
70
95
|
/// @dev increase an existing stake by amount DIP
|
71
|
-
/// updates the staking reward amount
|
96
|
+
/// updates and restakes the staking reward amount
|
72
97
|
/// function restricted to the current stake owner
|
73
98
|
function stake(
|
74
99
|
NftId stakeNftId,
|
@@ -77,15 +102,6 @@ interface IStakingService is IService
|
|
77
102
|
external;
|
78
103
|
|
79
104
|
|
80
|
-
/// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
|
81
|
-
/// all related stakes and all accumulated reward DIP are transferred to the current stake holder
|
82
|
-
/// function restricted to the current stake owner
|
83
|
-
function restake(
|
84
|
-
NftId stakeNftId
|
85
|
-
)
|
86
|
-
external;
|
87
|
-
|
88
|
-
|
89
105
|
/// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
|
90
106
|
/// all related stakes and all accumulated reward DIP are transferred to the current stake holder
|
91
107
|
/// function restricted to the current stake owner
|
@@ -99,15 +115,6 @@ interface IStakingService is IService
|
|
99
115
|
);
|
100
116
|
|
101
117
|
|
102
|
-
/// @dev decrease an existing stake by amount DIP
|
103
|
-
/// updates the staking reward amount
|
104
|
-
/// function restricted to the current stake owner
|
105
|
-
function unstake(
|
106
|
-
NftId stakeNftId,
|
107
|
-
Amount amount
|
108
|
-
)
|
109
|
-
external;
|
110
|
-
|
111
118
|
/// @dev updates the reward balance of the stake using the current reward rate.
|
112
119
|
function updateRewards(
|
113
120
|
NftId stakeNftId
|
@@ -115,28 +122,19 @@ interface IStakingService is IService
|
|
115
122
|
external;
|
116
123
|
|
117
124
|
|
118
|
-
/// @dev
|
119
|
-
|
120
|
-
|
121
|
-
function increaseTotalValueLocked(
|
122
|
-
NftId targetNftId,
|
123
|
-
address token,
|
124
|
-
Amount amount
|
125
|
+
/// @dev claims all available rewards.
|
126
|
+
function claimRewards(
|
127
|
+
NftId stakeNftId
|
125
128
|
)
|
126
|
-
external
|
127
|
-
returns (Amount totalValueLocked);
|
129
|
+
external;
|
128
130
|
|
129
131
|
|
130
|
-
/// @dev
|
131
|
-
/// function
|
132
|
-
|
133
|
-
|
134
|
-
NftId targetNftId,
|
135
|
-
address token,
|
136
|
-
Amount amount
|
132
|
+
/// @dev unstakes all dips (stakes and rewards) of an existing stake.
|
133
|
+
/// function restricted to the current stake owner
|
134
|
+
function unstake(
|
135
|
+
NftId stakeNftId
|
137
136
|
)
|
138
|
-
external
|
139
|
-
returns (Amount totalValueLocked);
|
137
|
+
external;
|
140
138
|
|
141
139
|
|
142
140
|
/// @dev sets total value locked data for a target contract on a different chain.
|
@@ -13,41 +13,133 @@ import {NftId} from "../type/NftId.sol";
|
|
13
13
|
import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
|
14
14
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
15
|
import {StakingReader} from "./StakingReader.sol";
|
16
|
+
import {StakingStore} from "./StakingStore.sol";
|
16
17
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
17
18
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
18
19
|
|
19
20
|
|
20
21
|
library StakeManagerLib {
|
21
22
|
|
22
|
-
function
|
23
|
+
function stake(
|
24
|
+
IRegistry registry,
|
23
25
|
StakingReader stakingReader,
|
24
|
-
|
26
|
+
StakingStore stakingStore,
|
27
|
+
NftId stakeNftId,
|
28
|
+
Amount stakeAmount
|
29
|
+
)
|
30
|
+
external
|
31
|
+
returns (Amount stakeBalance)
|
32
|
+
{
|
33
|
+
// check that target is active for staking
|
34
|
+
(
|
35
|
+
UFixed rewardRate,
|
36
|
+
Seconds lockingPeriod
|
37
|
+
) = checkStakeParameters(
|
38
|
+
stakingReader,
|
39
|
+
stakeNftId);
|
40
|
+
|
41
|
+
// calculate new rewards (if any)
|
42
|
+
(
|
43
|
+
Amount rewardIncrementAmount,
|
44
|
+
Amount currentTotalDipAmount
|
45
|
+
) = calculateRewardIncrease(
|
46
|
+
stakingReader,
|
47
|
+
stakeNftId,
|
48
|
+
rewardRate);
|
49
|
+
|
50
|
+
stakeBalance = currentTotalDipAmount + stakeAmount;
|
51
|
+
|
52
|
+
// TODO check that additional dip, rewards and rewards increment
|
53
|
+
// are still ok with max target staking amount
|
54
|
+
NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
|
55
|
+
|
56
|
+
stakingStore.restakeRewards(
|
57
|
+
stakeNftId,
|
58
|
+
targetNftId,
|
59
|
+
rewardIncrementAmount);
|
60
|
+
|
61
|
+
stakingStore.increaseStake(
|
62
|
+
stakeNftId,
|
63
|
+
targetNftId,
|
64
|
+
stakeAmount);
|
65
|
+
|
66
|
+
// update locked until with target locking period
|
67
|
+
stakingStore.update(
|
68
|
+
stakeNftId,
|
69
|
+
IStaking.StakeInfo({
|
70
|
+
lockedUntil: TimestampLib.blockTimestamp().addSeconds(
|
71
|
+
lockingPeriod)}));
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
function checkCreateParameters(
|
76
|
+
StakingReader stakingReader,
|
77
|
+
NftId targetNftId,
|
78
|
+
Amount dipAmount
|
79
|
+
)
|
80
|
+
external
|
81
|
+
view
|
82
|
+
returns (
|
83
|
+
Timestamp lockedUntil
|
84
|
+
)
|
85
|
+
{
|
86
|
+
Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
|
87
|
+
checkDipAmount(stakingReader, targetNftId, dipAmount);
|
88
|
+
|
89
|
+
Timestamp currentTime = TimestampLib.blockTimestamp();
|
90
|
+
lockedUntil = currentTime.addSeconds(lockingPeriod);
|
91
|
+
}
|
92
|
+
|
93
|
+
|
94
|
+
function checkStakeParameters(
|
95
|
+
StakingReader stakingReader,
|
96
|
+
NftId stakeNftId
|
25
97
|
)
|
26
98
|
public
|
27
99
|
view
|
100
|
+
returns (
|
101
|
+
UFixed rewardRate,
|
102
|
+
Seconds lockingPeriod
|
103
|
+
)
|
28
104
|
{
|
29
|
-
|
30
|
-
if (!stakingReader.isTarget(targetNftId)) {
|
31
|
-
revert IStaking.ErrorStakingNotTarget(targetNftId);
|
32
|
-
}
|
105
|
+
NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
|
33
106
|
|
34
107
|
// only accept stakes for active targets
|
35
108
|
if (!stakingReader.isActive(targetNftId)) {
|
36
109
|
revert IStaking.ErrorStakingTargetNotActive(targetNftId);
|
37
110
|
}
|
38
|
-
}
|
39
111
|
|
112
|
+
IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
|
113
|
+
rewardRate = info.rewardRate;
|
114
|
+
lockingPeriod = info.lockingPeriod;
|
115
|
+
}
|
40
116
|
|
41
|
-
function
|
117
|
+
function checkUnstakeParameters(
|
42
118
|
StakingReader stakingReader,
|
43
|
-
NftId
|
44
|
-
Amount dipAmount
|
119
|
+
NftId stakeNftId
|
45
120
|
)
|
46
|
-
|
121
|
+
public
|
47
122
|
view
|
48
123
|
returns (
|
49
|
-
|
124
|
+
UFixed rewardRate,
|
125
|
+
Seconds lockingPeriod
|
50
126
|
)
|
127
|
+
{
|
128
|
+
IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
|
129
|
+
|
130
|
+
if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
|
131
|
+
revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
function checkTarget(
|
137
|
+
StakingReader stakingReader,
|
138
|
+
NftId targetNftId
|
139
|
+
)
|
140
|
+
public
|
141
|
+
view
|
142
|
+
returns (Seconds lockingPeriod)
|
51
143
|
{
|
52
144
|
// target nft id must be registered
|
53
145
|
if (!stakingReader.isTarget(targetNftId)) {
|
@@ -59,15 +151,12 @@ library StakeManagerLib {
|
|
59
151
|
revert IStaking.ErrorStakingTargetNotActive(targetNftId);
|
60
152
|
}
|
61
153
|
|
62
|
-
|
63
|
-
|
64
|
-
Timestamp currentTime = TimestampLib.blockTimestamp();
|
65
|
-
lockedUntil = currentTime.addSeconds(
|
66
|
-
stakingReader.getTargetInfo(targetNftId).lockingPeriod);
|
154
|
+
lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
|
67
155
|
}
|
68
156
|
|
69
157
|
|
70
158
|
function checkDipAmount(
|
159
|
+
StakingReader stakingReader,
|
71
160
|
NftId targetNftId,
|
72
161
|
Amount dipAmount
|
73
162
|
)
|
@@ -82,44 +171,23 @@ library StakeManagerLib {
|
|
82
171
|
// TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
|
83
172
|
}
|
84
173
|
|
85
|
-
|
86
|
-
function checkDipBalanceAndAllowance(
|
87
|
-
IERC20Metadata dip,
|
88
|
-
address owner,
|
89
|
-
address tokenHandlerAddress,
|
90
|
-
Amount dipAmount
|
91
|
-
)
|
92
|
-
public
|
93
|
-
view
|
94
|
-
{
|
95
|
-
// check balance
|
96
|
-
uint256 amount = dipAmount.toInt();
|
97
|
-
uint256 dipBalance = dip.balanceOf(owner);
|
98
|
-
if (dipBalance < amount) {
|
99
|
-
revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
|
100
|
-
}
|
101
|
-
|
102
|
-
// check allowance
|
103
|
-
uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
|
104
|
-
if (dipAllowance < amount) {
|
105
|
-
revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
|
106
|
-
}
|
107
|
-
}
|
108
|
-
|
109
|
-
|
110
174
|
function calculateRewardIncrease(
|
111
175
|
StakingReader stakingReader,
|
112
|
-
NftId stakeNftId
|
176
|
+
NftId stakeNftId,
|
177
|
+
UFixed rewardRate
|
113
178
|
)
|
114
179
|
public
|
115
180
|
view
|
116
|
-
returns (
|
181
|
+
returns (
|
182
|
+
Amount rewardIncreaseAmount,
|
183
|
+
Amount totalDipAmount
|
184
|
+
)
|
117
185
|
{
|
118
186
|
(
|
119
|
-
UFixed rewardRate,
|
120
187
|
Amount stakeAmount,
|
188
|
+
Amount rewardAmount,
|
121
189
|
Timestamp lastUpdatedAt
|
122
|
-
) = stakingReader.
|
190
|
+
) = stakingReader.getStakeBalances(stakeNftId);
|
123
191
|
|
124
192
|
Seconds duration = SecondsLib.toSeconds(
|
125
193
|
block.timestamp - lastUpdatedAt.toInt());
|
@@ -128,6 +196,8 @@ library StakeManagerLib {
|
|
128
196
|
rewardRate,
|
129
197
|
duration,
|
130
198
|
stakeAmount);
|
199
|
+
|
200
|
+
totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
|
131
201
|
}
|
132
202
|
|
133
203
|
|
@@ -142,10 +212,8 @@ library StakeManagerLib {
|
|
142
212
|
Amount rewardAmount
|
143
213
|
)
|
144
214
|
{
|
145
|
-
UFixed
|
146
|
-
|
147
|
-
UFixed amountUFixed = rewardRateFraction * stakeAmount.toUFixed();
|
148
|
-
rewardAmount = AmountLib.toAmount(amountUFixed.toInt());
|
215
|
+
UFixed rewardRateFraction = getYearFraction(duration) * rewardRate;
|
216
|
+
rewardAmount = stakeAmount.multiplyWith(rewardRateFraction);
|
149
217
|
}
|
150
218
|
|
151
219
|
|