@etherisc/gif-next 0.0.2-e8ea17d-715 → 0.0.2-e8ea5fe-337
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -101
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +223 -105
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +50 -38
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
- 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/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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -88
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +30 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -72
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -137
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +391 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +94 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -133
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -136
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +23 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +19 -38
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +8 -20
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -78
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +194 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +41 -37
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -209
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +38 -38
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -147
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +22 -78
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +15 -15
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +28 -28
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -32
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- 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/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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- 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 +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +77 -107
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +26 -22
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +37 -8
- 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 +2 -2
- 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 +7 -2
- 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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -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 +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- 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/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- 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/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +22 -10
- package/contracts/distribution/DistributionService.sol +67 -33
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +57 -33
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- 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/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +16 -6
- package/contracts/oracle/OracleService.sol +1 -0
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +182 -40
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +39 -24
- package/contracts/pool/PoolService.sol +161 -103
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +51 -57
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +118 -73
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +1 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +278 -180
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +42 -41
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +67 -34
- package/contracts/product/{ProductService.sol → RiskService.sol} +10 -37
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +1 -1
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +1 -3
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +25 -38
- package/contracts/shared/ComponentService.sol +82 -22
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +22 -1
- package/contracts/shared/NftOwnable.sol +3 -3
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -2
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +23 -36
- package/contracts/staking/StakingManager.sol +2 -5
- package/contracts/staking/StakingReader.sol +6 -9
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +1 -1
- 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/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -6,13 +6,12 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
|
|
6
6
|
|
7
7
|
import {IRegistry} from "../registry/IRegistry.sol";
|
8
8
|
import {IService} from "./IService.sol";
|
9
|
-
import {IVersionable} from "
|
10
|
-
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
11
10
|
import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
12
11
|
import {Registerable} from "./Registerable.sol";
|
13
12
|
import {RoleId, RoleIdLib} from "../type/RoleId.sol";
|
14
|
-
import {Version,
|
15
|
-
import {Versionable} from "
|
13
|
+
import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
|
14
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
16
15
|
|
17
16
|
|
18
17
|
/// @dev service base contract
|
@@ -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,7 +3,7 @@ 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
8
|
import {ObjectType} from "../type/ObjectType.sol";
|
9
9
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -42,8 +42,9 @@ interface IStaking is
|
|
42
42
|
error ErrorStakingTargetNftIdZero();
|
43
43
|
error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
|
44
44
|
error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
|
45
|
-
error
|
45
|
+
error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
|
46
46
|
error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
|
47
|
+
error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
|
47
48
|
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
48
49
|
error ErrorStakingTargetNotFound(NftId targetNftId);
|
49
50
|
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
@@ -114,6 +114,24 @@ library StakeManagerLib {
|
|
114
114
|
lockingPeriod = info.lockingPeriod;
|
115
115
|
}
|
116
116
|
|
117
|
+
function checkUnstakeParameters(
|
118
|
+
StakingReader stakingReader,
|
119
|
+
NftId stakeNftId
|
120
|
+
)
|
121
|
+
public
|
122
|
+
view
|
123
|
+
returns (
|
124
|
+
UFixed rewardRate,
|
125
|
+
Seconds lockingPeriod
|
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
|
+
|
117
135
|
|
118
136
|
function checkTarget(
|
119
137
|
StakingReader stakingReader,
|
@@ -153,31 +171,6 @@ library StakeManagerLib {
|
|
153
171
|
// TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
|
154
172
|
}
|
155
173
|
|
156
|
-
|
157
|
-
function checkDipBalanceAndAllowance(
|
158
|
-
IERC20Metadata dip,
|
159
|
-
address owner,
|
160
|
-
address tokenHandlerAddress,
|
161
|
-
Amount dipAmount
|
162
|
-
)
|
163
|
-
public
|
164
|
-
view
|
165
|
-
{
|
166
|
-
// check balance
|
167
|
-
uint256 amount = dipAmount.toInt();
|
168
|
-
uint256 dipBalance = dip.balanceOf(owner);
|
169
|
-
if (dipBalance < amount) {
|
170
|
-
revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
|
171
|
-
}
|
172
|
-
|
173
|
-
// check allowance
|
174
|
-
uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
|
175
|
-
if (dipAllowance < amount) {
|
176
|
-
revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
|
177
|
-
}
|
178
|
-
}
|
179
|
-
|
180
|
-
|
181
174
|
function calculateRewardIncrease(
|
182
175
|
StakingReader stakingReader,
|
183
176
|
NftId stakeNftId,
|
@@ -1,27 +1,28 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
6
|
-
import {Component} from "../shared/Component.sol";
|
7
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
8
5
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
6
|
import {IStaking} from "./IStaking.sol";
|
10
|
-
import {IVersionable} from "../
|
11
|
-
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
7
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
8
|
+
|
9
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
|
+
import {Component} from "../shared/Component.sol";
|
11
|
+
import {IComponent} from "../shared/IComponent.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {ObjectType, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Seconds} from "../type/Seconds.sol";
|
15
15
|
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
16
16
|
import {StakingReader} from "./StakingReader.sol";
|
17
17
|
import {StakingStore} from "./StakingStore.sol";
|
18
18
|
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
19
|
-
import {Timestamp
|
19
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
20
20
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
21
22
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
22
|
-
import {UFixed
|
23
|
+
import {UFixed} from "../type/UFixed.sol";
|
23
24
|
import {Version, VersionLib} from "../type/Version.sol";
|
24
|
-
import {Versionable} from "../
|
25
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
25
26
|
|
26
27
|
contract Staking is
|
27
28
|
Component,
|
@@ -37,6 +38,7 @@ contract Staking is
|
|
37
38
|
struct StakingStorage {
|
38
39
|
IRegistryService _registryService;
|
39
40
|
TokenRegistry _tokenRegistry;
|
41
|
+
TokenHandler _tokenHandler;
|
40
42
|
StakingStore _store;
|
41
43
|
StakingReader _reader;
|
42
44
|
NftId _protocolNftId;
|
@@ -299,7 +301,7 @@ contract Staking is
|
|
299
301
|
StakingStorage storage $ = _getStakingStorage();
|
300
302
|
|
301
303
|
// TODO implement
|
302
|
-
|
304
|
+
}
|
303
305
|
|
304
306
|
|
305
307
|
function updateRewards(NftId stakeNftId)
|
@@ -348,9 +350,10 @@ contract Staking is
|
|
348
350
|
Amount rewardsClaimedAmount
|
349
351
|
)
|
350
352
|
{
|
351
|
-
// TODO add check that stake locking is in the past
|
352
353
|
StakingStorage storage $ = _getStakingStorage();
|
353
|
-
|
354
|
+
|
355
|
+
StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
|
356
|
+
|
354
357
|
// update rewards since last update
|
355
358
|
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
356
359
|
|
@@ -376,16 +379,7 @@ contract Staking is
|
|
376
379
|
external
|
377
380
|
restricted() // only staking service
|
378
381
|
{
|
379
|
-
|
380
|
-
address stakingWallet = getWallet();
|
381
|
-
|
382
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
383
|
-
getToken(),
|
384
|
-
from,
|
385
|
-
address(tokenHandler),
|
386
|
-
dipAmount);
|
387
|
-
|
388
|
-
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
382
|
+
getTokenHandler().collectTokens(from, getWallet(), dipAmount);
|
389
383
|
}
|
390
384
|
|
391
385
|
|
@@ -393,16 +387,7 @@ contract Staking is
|
|
393
387
|
external
|
394
388
|
restricted() // only staking service
|
395
389
|
{
|
396
|
-
|
397
|
-
address stakingWallet = getWallet();
|
398
|
-
|
399
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
400
|
-
getToken(),
|
401
|
-
stakingWallet,
|
402
|
-
address(tokenHandler),
|
403
|
-
dipAmount);
|
404
|
-
|
405
|
-
tokenHandler.transfer(stakingWallet, to, dipAmount);
|
390
|
+
getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
|
406
391
|
}
|
407
392
|
|
408
393
|
|
@@ -420,6 +405,9 @@ contract Staking is
|
|
420
405
|
return address(_getStakingStorage()._tokenRegistry);
|
421
406
|
}
|
422
407
|
|
408
|
+
function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
|
409
|
+
return _getStakingStorage()._tokenHandler;
|
410
|
+
}
|
423
411
|
|
424
412
|
// from Versionable
|
425
413
|
function getVersion()
|
@@ -490,14 +478,13 @@ contract Staking is
|
|
490
478
|
"", // registry data
|
491
479
|
""); // component data
|
492
480
|
|
493
|
-
_createAndSetTokenHandler();
|
494
|
-
|
495
481
|
// wiring to external contracts
|
496
482
|
StakingStorage storage $ = _getStakingStorage();
|
497
483
|
$._protocolNftId = getRegistry().getProtocolNftId();
|
498
484
|
$._store = StakingStore(stakingStoreAddress);
|
499
485
|
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
500
486
|
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
487
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
|
501
488
|
|
502
489
|
registerInterface(type(IStaking).interfaceId);
|
503
490
|
}
|
@@ -1,13 +1,10 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {Staking} from "./Staking.sol";
|
7
|
-
import {StakingReader} from "./StakingReader.sol";
|
8
|
-
import {StakingStore} from "./StakingStore.sol";
|
9
7
|
|
10
|
-
import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
|
11
8
|
|
12
9
|
contract StakingManager is
|
13
10
|
ProxyManager
|
@@ -1,21 +1,18 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {Blocknumber} from "../type/Blocknumber.sol";
|
6
|
-
import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
|
7
|
-
import {IComponent} from "../shared/IComponent.sol";
|
8
|
-
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
9
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
10
5
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
11
6
|
import {IStaking} from "../staking/IStaking.sol";
|
12
|
-
|
7
|
+
|
8
|
+
import {Amount} from "../type/Amount.sol";
|
9
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
10
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
13
11
|
import {NftId} from "../type/NftId.sol";
|
14
|
-
import {
|
15
|
-
import {Seconds} from "../type/Seconds.sol";
|
12
|
+
import {STAKE, TARGET} from "../type/ObjectType.sol";
|
16
13
|
import {StakingStore} from "./StakingStore.sol";
|
17
14
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
-
import {UFixed
|
15
|
+
import {UFixed} from "../type/UFixed.sol";
|
19
16
|
|
20
17
|
contract StakingReader is
|
21
18
|
IRegistryLinked,
|
@@ -122,11 +122,10 @@ contract StakingService is
|
|
122
122
|
|
123
123
|
// transfer withdrawal amount to target owner
|
124
124
|
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
125
|
+
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
125
126
|
$._staking.transferDipAmount(
|
126
127
|
instanceOwner,
|
127
128
|
dipAmount);
|
128
|
-
|
129
|
-
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
130
129
|
}
|
131
130
|
|
132
131
|
|
@@ -169,12 +168,12 @@ contract StakingService is
|
|
169
168
|
targetNftId,
|
170
169
|
dipAmount);
|
171
170
|
|
171
|
+
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
172
|
+
|
172
173
|
// collect staked dip by staking
|
173
174
|
$._staking.collectDipAmount(
|
174
175
|
stakeOwner,
|
175
176
|
dipAmount);
|
176
|
-
|
177
|
-
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
178
177
|
}
|
179
178
|
|
180
179
|
|
@@ -197,12 +196,11 @@ contract StakingService is
|
|
197
196
|
|
198
197
|
// collect staked dip by staking
|
199
198
|
if (dipAmount.gtz()) {
|
199
|
+
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
200
200
|
$._staking.collectDipAmount(
|
201
201
|
stakeOwner,
|
202
202
|
dipAmount);
|
203
203
|
}
|
204
|
-
|
205
|
-
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
206
204
|
}
|
207
205
|
|
208
206
|
|
@@ -247,11 +245,10 @@ contract StakingService is
|
|
247
245
|
address stakeOwner = msg.sender;
|
248
246
|
|
249
247
|
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
248
|
+
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
250
249
|
$._staking.transferDipAmount(
|
251
250
|
stakeOwner,
|
252
251
|
rewardsClaimedAmount);
|
253
|
-
|
254
|
-
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
255
252
|
}
|
256
253
|
|
257
254
|
|
@@ -270,11 +267,10 @@ contract StakingService is
|
|
270
267
|
) = $._staking.unstake(stakeNftId);
|
271
268
|
|
272
269
|
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
270
|
+
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
273
271
|
$._staking.transferDipAmount(
|
274
272
|
stakeOwner,
|
275
273
|
totalAmount);
|
276
|
-
|
277
|
-
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
278
274
|
}
|
279
275
|
|
280
276
|
|
@@ -389,12 +385,12 @@ contract StakingService is
|
|
389
385
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
390
386
|
newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
|
391
387
|
|
388
|
+
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
389
|
+
|
392
390
|
// collect reward dip from provider
|
393
391
|
$._staking.collectDipAmount(
|
394
392
|
rewardProvider,
|
395
393
|
dipAmount);
|
396
|
-
|
397
|
-
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
398
394
|
}
|
399
395
|
|
400
396
|
|
@@ -2,8 +2,8 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
-
import {IVersionable} from "../
|
6
|
-
import {ProxyManager} from "../
|
5
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
6
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
7
7
|
import {StakingService} from "./StakingService.sol";
|
8
8
|
|
9
9
|
contract StakingServiceManager is
|
@@ -3,31 +3,21 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
5
|
|
6
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
-
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
8
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
9
|
-
import {Component} from "../shared/Component.sol";
|
10
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
12
7
|
import {IStaking} from "./IStaking.sol";
|
13
|
-
|
14
|
-
import {
|
8
|
+
|
9
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
15
11
|
import {KeyValueStore} from "../shared/KeyValueStore.sol";
|
16
12
|
import {KEEP_STATE} from "../type/StateId.sol";
|
17
13
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
14
|
import {NftIdSet} from "../shared/NftIdSet.sol";
|
19
|
-
import {
|
20
|
-
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
|
+
import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
|
21
16
|
import {StakingReader} from "./StakingReader.sol";
|
22
17
|
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
23
18
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
24
|
-
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
25
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
26
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
27
|
-
import {Versionable} from "../shared/Versionable.sol";
|
28
|
-
|
29
|
-
import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
|
30
19
|
import {StakingLifecycle} from "./StakingLifecycle.sol";
|
20
|
+
import {UFixed} from "../type/UFixed.sol";
|
31
21
|
|
32
22
|
|
33
23
|
contract StakingStore is
|
@@ -132,9 +132,9 @@ library TargetManagerLib {
|
|
132
132
|
public
|
133
133
|
pure
|
134
134
|
{
|
135
|
-
// check locking period is
|
136
|
-
if (lockingPeriod.
|
137
|
-
revert IStaking.
|
135
|
+
// check locking period is >= min locking period
|
136
|
+
if (lockingPeriod.lt(getMinimumLockingPeriod())) {
|
137
|
+
revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
|
138
138
|
}
|
139
139
|
|
140
140
|
// check locking period <= max locking period
|
@@ -190,6 +190,10 @@ library TargetManagerLib {
|
|
190
190
|
return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
|
191
191
|
}
|
192
192
|
|
193
|
+
/// @dev the minimum locking period is 24 hours
|
194
|
+
function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
|
195
|
+
return SecondsLib.toSeconds(24 * 3600);
|
196
|
+
}
|
193
197
|
|
194
198
|
function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
|
195
199
|
return UFixedLib.toUFixed(33, -2);
|
@@ -12,13 +12,15 @@ using {
|
|
12
12
|
nqAmount as !=,
|
13
13
|
ltAmount as <,
|
14
14
|
gtAmount as >,
|
15
|
+
AmountLib.add,
|
15
16
|
AmountLib.eq,
|
16
17
|
AmountLib.eqz,
|
17
18
|
AmountLib.gtz,
|
19
|
+
AmountLib.gt,
|
20
|
+
AmountLib.gte,
|
21
|
+
AmountLib.multiplyWith,
|
18
22
|
AmountLib.toInt,
|
19
|
-
AmountLib.
|
20
|
-
AmountLib.toUFixed,
|
21
|
-
AmountLib.multiplyWith
|
23
|
+
AmountLib.toUFixed
|
22
24
|
} for Amount global;
|
23
25
|
|
24
26
|
function addAmount(Amount a, Amount b) pure returns (Amount) {
|
@@ -77,16 +79,21 @@ library AmountLib {
|
|
77
79
|
return Amount.unwrap(amount1) == Amount.unwrap(amount2);
|
78
80
|
}
|
79
81
|
|
80
|
-
/// @dev return true if amount a1 is
|
82
|
+
/// @dev return true if amount a1 is less than a2
|
81
83
|
function lt(Amount a1, Amount a2) public pure returns (bool) {
|
82
84
|
return Amount.unwrap(a1) < Amount.unwrap(a2);
|
83
85
|
}
|
84
86
|
|
85
|
-
/// @dev return true if amount a1 is
|
87
|
+
/// @dev return true if amount a1 is greater than a2
|
86
88
|
function gt(Amount a1, Amount a2) public pure returns (bool) {
|
87
89
|
return Amount.unwrap(a1) > Amount.unwrap(a2);
|
88
90
|
}
|
89
91
|
|
92
|
+
/// @dev return true if amount a1 is greater or equal than a2
|
93
|
+
function gte(Amount a1, Amount a2) public pure returns (bool) {
|
94
|
+
return Amount.unwrap(a1) >= Amount.unwrap(a2);
|
95
|
+
}
|
96
|
+
|
90
97
|
/// @dev return minimum of a1 and a2.
|
91
98
|
function min(Amount a1, Amount a2) public pure returns (Amount) {
|
92
99
|
if (Amount.unwrap(a1) < Amount.unwrap(a2)) {
|
@@ -11,8 +11,14 @@ using {
|
|
11
11
|
eqBlocknumber as ==,
|
12
12
|
neBlocknumber as !=,
|
13
13
|
BlocknumberLib.toInt,
|
14
|
+
BlocknumberLib.eq,
|
15
|
+
BlocknumberLib.ne,
|
14
16
|
BlocknumberLib.eqz,
|
15
|
-
BlocknumberLib.gtz
|
17
|
+
BlocknumberLib.gtz,
|
18
|
+
BlocknumberLib.gt,
|
19
|
+
BlocknumberLib.gte,
|
20
|
+
BlocknumberLib.lt,
|
21
|
+
BlocknumberLib.lte
|
16
22
|
} for Blocknumber global;
|
17
23
|
|
18
24
|
/// @dev return true if Blocknumber a is greater than Blocknumber b
|