@etherisc/gif-next 0.0.2-a0d749a → 0.0.2-a105567-464
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 +348 -20
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +294 -514
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -585
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1045 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +707 -67
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +1028 -114
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +390 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +78 -17
- package/contracts/instance/IInstanceService.sol +81 -0
- package/contracts/instance/Instance.sol +227 -56
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +365 -0
- package/contracts/instance/InstanceService.sol +362 -0
- package/contracts/instance/InstanceServiceManager.sol +44 -0
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +46 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +42 -0
- package/contracts/instance/module/IPolicy.sol +84 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +147 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +424 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +437 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +473 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +143 -62
- package/contracts/registry/IRegistry.sol +95 -49
- package/contracts/registry/IRegistryService.sol +69 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +518 -142
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +266 -0
- package/contracts/registry/RegistryServiceManager.sol +58 -0
- package/contracts/registry/ReleaseManager.sol +599 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +358 -0
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/shared/IKeyValueStore.sol +53 -0
- package/contracts/shared/ILifecycle.sol +30 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +18 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +130 -0
- package/contracts/shared/Lifecycle.sol +121 -0
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +107 -0
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +199 -0
- package/contracts/shared/Registerable.sol +75 -0
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +77 -0
- package/contracts/shared/TokenHandler.sol +58 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/staking/IStaking.sol +152 -0
- package/contracts/staking/IStakingManager.sol +15 -0
- package/contracts/staking/IStakingService.sol +162 -0
- package/contracts/staking/IStakingStore.sol +130 -0
- package/contracts/staking/StakeManagerLib.sol +156 -0
- package/contracts/staking/Staking.sol +496 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +146 -0
- package/contracts/staking/StakingService.sol +376 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +331 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/type/AddressSet.sol +58 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/type/DistributorType.sol +55 -0
- package/contracts/type/Fee.sol +66 -0
- package/contracts/type/Key32.sol +50 -0
- package/contracts/{types → type}/NftId.sol +40 -13
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +169 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/type/Referral.sol +89 -0
- package/contracts/type/RiskId.sol +43 -0
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +71 -0
- package/contracts/type/StateId.sol +123 -0
- package/contracts/{types → type}/Timestamp.sol +36 -6
- package/contracts/type/UFixed.sol +326 -0
- package/contracts/type/Version.sol +108 -0
- package/package.json +16 -6
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -231
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
- package/contracts/components/Component.sol +0 -60
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -9
- package/contracts/components/Pool.sol +0 -22
- package/contracts/components/Product.sol +0 -55
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -213
- package/contracts/instance/component/IComponent.sol +0 -73
- package/contracts/instance/policy/IPolicy.sol +0 -51
- package/contracts/instance/policy/PolicyModule.sol +0 -91
- package/contracts/instance/pool/IPoolModule.sol +0 -29
- package/contracts/instance/pool/PoolModule.sol +0 -73
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -112
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/UFixed.sol +0 -205
@@ -0,0 +1,496 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
6
|
+
import {Component} from "../shared/Component.sol";
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
|
+
import {IStaking} from "./IStaking.sol";
|
10
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
11
|
+
import {Key32} from "../type/Key32.sol";
|
12
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
13
|
+
import {LibNftIdSet} from "../type/NftIdSet.sol";
|
14
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
+
import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
|
16
|
+
import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
17
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
18
|
+
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
19
|
+
import {StakingReader} from "./StakingReader.sol";
|
20
|
+
import {StakingStore} from "./StakingStore.sol";
|
21
|
+
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
23
|
+
import {TokenHandler} from "../shared/TokenHandler.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
|
+
contract Staking is
|
30
|
+
Component,
|
31
|
+
Versionable,
|
32
|
+
IStaking
|
33
|
+
{
|
34
|
+
string public constant CONTRACT_NAME = "Staking";
|
35
|
+
uint8 private constant GIF_MAJOR_VERSION = 3;
|
36
|
+
|
37
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
38
|
+
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
39
|
+
|
40
|
+
struct StakingStorage {
|
41
|
+
IRegistryService _registryService;
|
42
|
+
TokenRegistry _tokenRegistry;
|
43
|
+
StakingStore _store;
|
44
|
+
StakingReader _reader;
|
45
|
+
|
46
|
+
mapping(uint256 chainId => mapping(address token => UFixed stakingRate)) _stakingRate;
|
47
|
+
|
48
|
+
mapping(NftId targetNftId => Amount stakedAmount) _stakedAmount;
|
49
|
+
mapping(NftId targetNftId => mapping(address token => Amount tvlAmount)) _tvlAmount;
|
50
|
+
|
51
|
+
NftId _protocolNftId;
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
modifier onlyStake(NftId stakeNftId) {
|
56
|
+
if (!_getStakingStorage()._store.exists(stakeNftId)) {
|
57
|
+
revert ErrorStakingNotStake(stakeNftId);
|
58
|
+
}
|
59
|
+
_;
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
modifier onlyTarget(NftId targetNftId) {
|
64
|
+
if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
|
65
|
+
revert ErrorStakingNotTarget(targetNftId);
|
66
|
+
}
|
67
|
+
_;
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
// from Versionable
|
72
|
+
function getVersion()
|
73
|
+
public
|
74
|
+
pure
|
75
|
+
virtual override (IVersionable, Versionable)
|
76
|
+
returns(Version)
|
77
|
+
{
|
78
|
+
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
79
|
+
}
|
80
|
+
|
81
|
+
// set/update staking reader
|
82
|
+
function setStakingReader(StakingReader stakingReader)
|
83
|
+
external
|
84
|
+
virtual
|
85
|
+
onlyOwner
|
86
|
+
{
|
87
|
+
if(stakingReader.getStaking() != IStaking(this)) {
|
88
|
+
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
89
|
+
}
|
90
|
+
|
91
|
+
_getStakingStorage()._reader = stakingReader;
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
// rate management
|
96
|
+
function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
|
97
|
+
external
|
98
|
+
virtual
|
99
|
+
onlyOwner
|
100
|
+
{
|
101
|
+
|
102
|
+
}
|
103
|
+
|
104
|
+
// reward management
|
105
|
+
|
106
|
+
// target management
|
107
|
+
|
108
|
+
function registerTarget(
|
109
|
+
NftId targetNftId,
|
110
|
+
ObjectType expectedObjectType,
|
111
|
+
uint256 chainId,
|
112
|
+
Seconds initialLockingPeriod,
|
113
|
+
UFixed initialRewardRate
|
114
|
+
)
|
115
|
+
external
|
116
|
+
virtual
|
117
|
+
// restricted // staking service access
|
118
|
+
{
|
119
|
+
TargetManagerLib.checkTargetParameters(
|
120
|
+
getRegistry(),
|
121
|
+
_getStakingStorage()._reader,
|
122
|
+
targetNftId,
|
123
|
+
expectedObjectType,
|
124
|
+
initialLockingPeriod,
|
125
|
+
initialRewardRate);
|
126
|
+
|
127
|
+
_getStakingStorage()._store.createTarget(
|
128
|
+
targetNftId,
|
129
|
+
TargetInfo({
|
130
|
+
objectType: expectedObjectType,
|
131
|
+
chainId: chainId,
|
132
|
+
lockingPeriod: initialLockingPeriod,
|
133
|
+
rewardRate: initialRewardRate}));
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
function setLockingPeriod(
|
138
|
+
NftId targetNftId,
|
139
|
+
Seconds lockingPeriod
|
140
|
+
)
|
141
|
+
external
|
142
|
+
virtual
|
143
|
+
// TODO add restricted // only staking service
|
144
|
+
onlyTarget(targetNftId) // maybe duplicate check
|
145
|
+
{
|
146
|
+
(
|
147
|
+
Seconds oldLockingPeriod,
|
148
|
+
TargetInfo memory targetInfo
|
149
|
+
) = TargetManagerLib.updateLockingPeriod(
|
150
|
+
this,
|
151
|
+
targetNftId,
|
152
|
+
lockingPeriod);
|
153
|
+
|
154
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
155
|
+
|
156
|
+
emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
|
157
|
+
}
|
158
|
+
|
159
|
+
// TODO add function to set protocol reward rate: onlyOwner
|
160
|
+
// get protocol nft id (from where)
|
161
|
+
|
162
|
+
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
163
|
+
external
|
164
|
+
virtual
|
165
|
+
onlyTarget(targetNftId) // maybe duplicate check
|
166
|
+
{
|
167
|
+
(
|
168
|
+
UFixed oldRewardRate,
|
169
|
+
TargetInfo memory targetInfo
|
170
|
+
) = TargetManagerLib.updateRewardRate(
|
171
|
+
this,
|
172
|
+
targetNftId,
|
173
|
+
rewardRate);
|
174
|
+
|
175
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
176
|
+
|
177
|
+
emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
182
|
+
external
|
183
|
+
virtual
|
184
|
+
{
|
185
|
+
|
186
|
+
}
|
187
|
+
|
188
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
189
|
+
external
|
190
|
+
virtual
|
191
|
+
// onlyNftOwner(targetNftId)
|
192
|
+
{
|
193
|
+
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
function increaseTvl(NftId targetNftId, address token, Amount amount)
|
198
|
+
external
|
199
|
+
virtual
|
200
|
+
// restricted // service to service access
|
201
|
+
{
|
202
|
+
|
203
|
+
}
|
204
|
+
|
205
|
+
function decreaseTvl(NftId targetNftId, address token, Amount amount)
|
206
|
+
external
|
207
|
+
virtual
|
208
|
+
// restricted // service to service access
|
209
|
+
{
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
215
|
+
external
|
216
|
+
virtual
|
217
|
+
onlyOwner // or CCIP
|
218
|
+
{
|
219
|
+
|
220
|
+
}
|
221
|
+
|
222
|
+
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
223
|
+
external
|
224
|
+
virtual
|
225
|
+
onlyOwner // or CCIP
|
226
|
+
{
|
227
|
+
|
228
|
+
}
|
229
|
+
|
230
|
+
//--- staking functions -------------------------------------------------//
|
231
|
+
|
232
|
+
function registerStake(
|
233
|
+
NftId stakeNftId,
|
234
|
+
NftId targetNftId,
|
235
|
+
Amount dipAmount
|
236
|
+
)
|
237
|
+
external
|
238
|
+
virtual
|
239
|
+
// TODO add restricted() // only staking service
|
240
|
+
{
|
241
|
+
Timestamp lockedUntil = StakeManagerLib.checkStakeParameters(
|
242
|
+
_getStakingStorage()._reader,
|
243
|
+
targetNftId,
|
244
|
+
dipAmount);
|
245
|
+
|
246
|
+
_getStakingStorage()._store.create(
|
247
|
+
stakeNftId,
|
248
|
+
StakeInfo({
|
249
|
+
lockedUntil: lockedUntil}),
|
250
|
+
dipAmount);
|
251
|
+
}
|
252
|
+
|
253
|
+
|
254
|
+
function stake(NftId stakeNftId, Amount dipAmount)
|
255
|
+
external
|
256
|
+
virtual
|
257
|
+
// TODO add restricted() // only staking service
|
258
|
+
onlyStake(stakeNftId)
|
259
|
+
{
|
260
|
+
StakingStorage storage $ = _getStakingStorage();
|
261
|
+
Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
|
262
|
+
$._reader,
|
263
|
+
stakeNftId);
|
264
|
+
|
265
|
+
$._store.increaseBalance(
|
266
|
+
stakeNftId,
|
267
|
+
dipAmount,
|
268
|
+
rewardIncrement);
|
269
|
+
}
|
270
|
+
|
271
|
+
|
272
|
+
function restake(NftId stakeNftId)
|
273
|
+
external
|
274
|
+
virtual
|
275
|
+
// TODO add restricted() // only staking service
|
276
|
+
onlyStake(stakeNftId)
|
277
|
+
{
|
278
|
+
// TODO add check that target is active and allows additional staking amount
|
279
|
+
StakingStorage storage $ = _getStakingStorage();
|
280
|
+
Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
|
281
|
+
$._reader,
|
282
|
+
stakeNftId);
|
283
|
+
|
284
|
+
$._store.restakeRewards(
|
285
|
+
stakeNftId,
|
286
|
+
rewardIncrement);
|
287
|
+
}
|
288
|
+
|
289
|
+
|
290
|
+
function updateRewards(NftId stakeNftId)
|
291
|
+
external
|
292
|
+
virtual
|
293
|
+
// TODO add restricted() // only staking service
|
294
|
+
onlyStake(stakeNftId)
|
295
|
+
{
|
296
|
+
StakingStorage storage $ = _getStakingStorage();
|
297
|
+
_updateRewards($._reader, $._store, stakeNftId);
|
298
|
+
}
|
299
|
+
|
300
|
+
|
301
|
+
function claimRewards(NftId stakeNftId)
|
302
|
+
external
|
303
|
+
virtual
|
304
|
+
// TODO add restricted() // only staking service
|
305
|
+
onlyStake(stakeNftId)
|
306
|
+
returns (
|
307
|
+
Amount rewardsClaimedAmount
|
308
|
+
)
|
309
|
+
{
|
310
|
+
StakingStorage storage $ = _getStakingStorage();
|
311
|
+
|
312
|
+
// update rewards since last update
|
313
|
+
_updateRewards($._reader, $._store, stakeNftId);
|
314
|
+
|
315
|
+
// unstake all available rewards
|
316
|
+
rewardsClaimedAmount = $._store.claimUpTo(
|
317
|
+
stakeNftId,
|
318
|
+
AmountLib.max());
|
319
|
+
}
|
320
|
+
|
321
|
+
|
322
|
+
function unstake(NftId stakeNftId)
|
323
|
+
external
|
324
|
+
virtual
|
325
|
+
// TODO add restricted() // only staking service
|
326
|
+
onlyStake(stakeNftId)
|
327
|
+
returns (
|
328
|
+
Amount unstakedAmount,
|
329
|
+
Amount rewardsClaimedAmount
|
330
|
+
)
|
331
|
+
{
|
332
|
+
// TODO add check that stake locking is in the past
|
333
|
+
StakingStorage storage $ = _getStakingStorage();
|
334
|
+
|
335
|
+
// update rewards since last update
|
336
|
+
_updateRewards($._reader, $._store, stakeNftId);
|
337
|
+
|
338
|
+
// unstake all available dips
|
339
|
+
(
|
340
|
+
unstakedAmount,
|
341
|
+
rewardsClaimedAmount
|
342
|
+
) = $._store.unstakeUpTo(
|
343
|
+
stakeNftId,
|
344
|
+
AmountLib.max(), // unstake all stakes
|
345
|
+
AmountLib.max()); // claim all rewards
|
346
|
+
}
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
function _updateRewards(
|
351
|
+
StakingReader reader,
|
352
|
+
StakingStore store,
|
353
|
+
NftId stakeNftId
|
354
|
+
)
|
355
|
+
internal
|
356
|
+
virtual
|
357
|
+
{
|
358
|
+
Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
|
359
|
+
reader,
|
360
|
+
stakeNftId);
|
361
|
+
|
362
|
+
store.updateRewards(
|
363
|
+
stakeNftId,
|
364
|
+
rewardIncrement);
|
365
|
+
}
|
366
|
+
|
367
|
+
|
368
|
+
//--- other functions ---------------------------------------------------//
|
369
|
+
|
370
|
+
function collectDipAmount(address from, Amount dipAmount)
|
371
|
+
external
|
372
|
+
// TODO add restricted() // only staking service
|
373
|
+
{
|
374
|
+
TokenHandler tokenHandler = getTokenHandler();
|
375
|
+
address stakingWallet = getWallet();
|
376
|
+
|
377
|
+
StakeManagerLib.checkDipBalanceAndAllowance(
|
378
|
+
getToken(),
|
379
|
+
from,
|
380
|
+
address(tokenHandler),
|
381
|
+
dipAmount);
|
382
|
+
|
383
|
+
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
384
|
+
}
|
385
|
+
|
386
|
+
|
387
|
+
function transferDipAmount(address to, Amount dipAmount)
|
388
|
+
external
|
389
|
+
// TODO add restricted() // only staking service
|
390
|
+
{
|
391
|
+
TokenHandler tokenHandler = getTokenHandler();
|
392
|
+
address stakingWallet = getWallet();
|
393
|
+
|
394
|
+
StakeManagerLib.checkDipBalanceAndAllowance(
|
395
|
+
getToken(),
|
396
|
+
stakingWallet,
|
397
|
+
address(tokenHandler),
|
398
|
+
dipAmount);
|
399
|
+
|
400
|
+
tokenHandler.transfer(stakingWallet, to, dipAmount);
|
401
|
+
}
|
402
|
+
|
403
|
+
|
404
|
+
//--- view functions ----------------------------------------------------//
|
405
|
+
|
406
|
+
function getStakingReader() public view returns (StakingReader reader) {
|
407
|
+
return _getStakingStorage()._reader;
|
408
|
+
}
|
409
|
+
|
410
|
+
function getStakingStore() external view returns (StakingStore stakingStore) {
|
411
|
+
return _getStakingStorage()._store;
|
412
|
+
}
|
413
|
+
|
414
|
+
function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
|
415
|
+
return _getStakingStorage()._stakingRate[chainId][token];
|
416
|
+
}
|
417
|
+
|
418
|
+
function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount) {
|
419
|
+
return _getStakingStorage()._tvlAmount[targetNftId][token];
|
420
|
+
}
|
421
|
+
|
422
|
+
function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount) {
|
423
|
+
return _getStakingStorage()._stakedAmount[targetNftId];
|
424
|
+
}
|
425
|
+
|
426
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
427
|
+
return address(_getStakingStorage()._tokenRegistry);
|
428
|
+
}
|
429
|
+
|
430
|
+
function calculateRewardIncrementAmount(
|
431
|
+
NftId targetNftId,
|
432
|
+
Timestamp rewardsLastUpdatedAt
|
433
|
+
)
|
434
|
+
public
|
435
|
+
virtual
|
436
|
+
view
|
437
|
+
returns (Amount rewardIncrementAmount)
|
438
|
+
{
|
439
|
+
|
440
|
+
}
|
441
|
+
|
442
|
+
//--- internal functions ------------------------------------------------//
|
443
|
+
|
444
|
+
function _initialize(
|
445
|
+
address owner,
|
446
|
+
bytes memory data
|
447
|
+
)
|
448
|
+
internal
|
449
|
+
virtual override
|
450
|
+
initializer
|
451
|
+
{
|
452
|
+
(
|
453
|
+
address registryAddress,
|
454
|
+
address tokenRegistryAddress,
|
455
|
+
address stakingStoreAddress,
|
456
|
+
address initialOwner
|
457
|
+
) = abi.decode(data, (address, address, address, address));
|
458
|
+
|
459
|
+
// only admin(authority) and dip token address are set in registry at this point
|
460
|
+
IRegistry registry = IRegistry(registryAddress);
|
461
|
+
address dipTokenAddress = registry.getDipTokenAddress();
|
462
|
+
address authority = registry.getAuthority();
|
463
|
+
|
464
|
+
initializeComponent(
|
465
|
+
authority,
|
466
|
+
registryAddress,
|
467
|
+
registry.getNftId(),
|
468
|
+
CONTRACT_NAME,
|
469
|
+
dipTokenAddress,
|
470
|
+
STAKING(),
|
471
|
+
false, // is interceptor
|
472
|
+
initialOwner,
|
473
|
+
"", // registry data
|
474
|
+
""); // component data
|
475
|
+
|
476
|
+
_createAndSetTokenHandler();
|
477
|
+
|
478
|
+
|
479
|
+
// wiring to external contracts
|
480
|
+
StakingStorage storage $ = _getStakingStorage();
|
481
|
+
$._protocolNftId = getRegistry().getProtocolNftId();
|
482
|
+
$._store = StakingStore(stakingStoreAddress);
|
483
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
484
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
485
|
+
|
486
|
+
registerInterface(type(IStaking).interfaceId);
|
487
|
+
}
|
488
|
+
|
489
|
+
|
490
|
+
function _getStakingStorage() private pure returns (StakingStorage storage $) {
|
491
|
+
assembly {
|
492
|
+
$.slot := STAKING_LOCATION_V1
|
493
|
+
}
|
494
|
+
}
|
495
|
+
|
496
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {ReleaseManager} from "../registry/ReleaseManager.sol";
|
7
|
+
import {Staking} from "./Staking.sol";
|
8
|
+
import {StakingReader} from "./StakingReader.sol";
|
9
|
+
import {StakingStore} from "./StakingStore.sol";
|
10
|
+
|
11
|
+
import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
|
12
|
+
|
13
|
+
contract StakingManager is
|
14
|
+
ProxyManager
|
15
|
+
{
|
16
|
+
Staking private _staking;
|
17
|
+
address private _initialImplementation;
|
18
|
+
bytes private _initializationData;
|
19
|
+
|
20
|
+
/// @dev initializes proxy manager with service implementation
|
21
|
+
constructor(
|
22
|
+
address registry,
|
23
|
+
address tokenRegistry,
|
24
|
+
address stakingStore,
|
25
|
+
address initialOwner
|
26
|
+
)
|
27
|
+
ProxyManager(registry)
|
28
|
+
{
|
29
|
+
Staking stakingImplementation = new Staking();
|
30
|
+
|
31
|
+
_initialImplementation = address(stakingImplementation);
|
32
|
+
_initializationData = abi.encode(
|
33
|
+
registry,
|
34
|
+
tokenRegistry,
|
35
|
+
stakingStore,
|
36
|
+
initialOwner);
|
37
|
+
|
38
|
+
IVersionable versionable = deploy(
|
39
|
+
_initialImplementation,
|
40
|
+
_initializationData);
|
41
|
+
|
42
|
+
_staking = Staking(address(versionable));
|
43
|
+
}
|
44
|
+
|
45
|
+
//--- view functions ----------------------------------------------------//
|
46
|
+
|
47
|
+
function getStaking()
|
48
|
+
external
|
49
|
+
view
|
50
|
+
returns (Staking)
|
51
|
+
{
|
52
|
+
return _staking;
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,146 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
|
6
|
+
import {IComponent} from "../shared/IComponent.sol";
|
7
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
10
|
+
import {IStaking} from "../staking/IStaking.sol";
|
11
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
|
14
|
+
import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
|
15
|
+
import {Seconds} from "../type/Seconds.sol";
|
16
|
+
import {StakingStore} from "./StakingStore.sol";
|
17
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
+
import {UFixed} from "../type/UFixed.sol";
|
19
|
+
|
20
|
+
contract StakingReader is
|
21
|
+
IRegistryLinked,
|
22
|
+
InitializableCustom
|
23
|
+
{
|
24
|
+
|
25
|
+
error ErrorStakingReaderDependenciesAlreadySet();
|
26
|
+
|
27
|
+
IRegistry private _registry;
|
28
|
+
IStaking private _staking;
|
29
|
+
StakingStore private _store;
|
30
|
+
|
31
|
+
constructor() InitializableCustom() {}
|
32
|
+
|
33
|
+
function initialize(
|
34
|
+
address registryAddress,
|
35
|
+
address stakingAddress,
|
36
|
+
address stakingStoreAddress
|
37
|
+
)
|
38
|
+
external
|
39
|
+
initializer
|
40
|
+
{
|
41
|
+
_registry = IRegistry(registryAddress);
|
42
|
+
_staking = IStaking(stakingAddress);
|
43
|
+
_store = StakingStore(stakingStoreAddress);
|
44
|
+
}
|
45
|
+
|
46
|
+
// view and pure functions
|
47
|
+
|
48
|
+
function getRegistry() external view returns (IRegistry registry) {
|
49
|
+
return _registry;
|
50
|
+
}
|
51
|
+
|
52
|
+
function getStaking() external view returns (IStaking staking) {
|
53
|
+
return _staking;
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
function isTarget(NftId targetNftId) external view returns (bool) {
|
58
|
+
return _store.getTargetManager().exists(targetNftId);
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
function targets() external view returns (uint256) {
|
63
|
+
return _store.getTargetManager().nftIds();
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
function getTargetNftId(uint256 idx) external view returns (NftId) {
|
68
|
+
return _store.getTargetManager().getNftId(idx);
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
function isActive(NftId targetNftId) external view returns (bool) {
|
73
|
+
return _store.getTargetManager().isActive(targetNftId);
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
function activeTargets() external view returns (uint256) {
|
78
|
+
return _store.getTargetManager().activeNftIds();
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
|
83
|
+
return _store.getTargetManager().getActiveNftId(idx);
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
|
88
|
+
bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
|
89
|
+
if (data.length > 0) {
|
90
|
+
return abi.decode(data, (IStaking.TargetInfo));
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
|
96
|
+
bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
|
97
|
+
if (data.length > 0) {
|
98
|
+
return abi.decode(data, (IStaking.StakeInfo));
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
|
104
|
+
return _store.getStakeBalance(nftId);
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
|
109
|
+
return _store.getRewardBalance(nftId);
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
|
114
|
+
return _store.getBalanceUpdatedAt(nftId);
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
function getRewardCalculationInput(NftId stakeNftId)
|
119
|
+
external
|
120
|
+
view
|
121
|
+
returns (
|
122
|
+
UFixed rewardRate,
|
123
|
+
Amount stakeAmount,
|
124
|
+
Timestamp lastUpdatedAt
|
125
|
+
)
|
126
|
+
{
|
127
|
+
NftId targetNftId = _registry.getObjectInfo(stakeNftId).parentNftId;
|
128
|
+
rewardRate = getTargetInfo(targetNftId).rewardRate;
|
129
|
+
|
130
|
+
(
|
131
|
+
stakeAmount,
|
132
|
+
lastUpdatedAt
|
133
|
+
) = _store.getBalanceAndLastUpdatedAt(stakeNftId);
|
134
|
+
}
|
135
|
+
|
136
|
+
// function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount);
|
137
|
+
// function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount);
|
138
|
+
|
139
|
+
// function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate);
|
140
|
+
|
141
|
+
// function calculateRewardIncrementAmount(
|
142
|
+
// NftId targetNftId,
|
143
|
+
// Timestamp rewardsLastUpdatedAt
|
144
|
+
// ) external view returns (Amount rewardIncrementAmount);
|
145
|
+
|
146
|
+
}
|