@etherisc/gif-next 0.0.2-96b5b72-170 → 0.0.2-97aac30-275
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 +2 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +193 -164
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +114 -321
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +72 -108
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +22 -48
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +56 -22
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +53 -18
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -28
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +458 -331
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +133 -59
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -32
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1103 -308
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +69 -252
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +105 -55
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +8 -53
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +134 -86
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +121 -133
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +239 -92
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +170 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -72
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +69 -153
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +105 -31
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +95 -203
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +118 -56
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +7 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +7 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +81 -25
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +230 -107
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +164 -299
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +106 -92
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -160
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +130 -40
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +334 -146
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +29 -214
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +88 -34
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +163 -61
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +256 -65
- 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 +378 -67
- 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 +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +272 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -35
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +799 -127
- 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 +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- 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 +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +184 -11
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +908 -49
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -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 +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +172 -4
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +80 -22
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +1 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +7 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +176 -24
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -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 +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
- 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/Service.sol/Service.json +7 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1103 -172
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +497 -49
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1247 -56
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +167 -30
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +605 -78
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -28
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -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 +34 -34
- 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 +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +15 -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 +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +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 +76 -2
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- package/contracts/distribution/Distribution.sol +27 -51
- package/contracts/distribution/DistributionService.sol +55 -106
- package/contracts/distribution/DistributionServiceManager.sol +9 -18
- package/contracts/distribution/IDistributionComponent.sol +3 -8
- package/contracts/distribution/IDistributionService.sol +2 -8
- package/contracts/instance/IInstance.sol +12 -7
- package/contracts/instance/IInstanceService.sol +13 -5
- package/contracts/instance/Instance.sol +30 -23
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +210 -141
- package/contracts/instance/InstanceReader.sol +64 -42
- package/contracts/instance/InstanceService.sol +141 -87
- package/contracts/instance/InstanceServiceManager.sol +10 -20
- package/contracts/instance/InstanceStore.sol +125 -55
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +15 -4
- package/contracts/instance/module/IPolicy.sol +8 -2
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +277 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +63 -149
- package/contracts/pool/BundleServiceManager.sol +9 -18
- package/contracts/pool/IBundleService.sol +4 -16
- package/contracts/pool/IPoolComponent.sol +2 -4
- package/contracts/pool/IPoolService.sol +45 -9
- package/contracts/pool/Pool.sol +37 -40
- package/contracts/pool/PoolService.sol +195 -145
- package/contracts/pool/PoolServiceManager.sol +9 -18
- package/contracts/product/ApplicationService.sol +111 -43
- package/contracts/product/ApplicationServiceManager.sol +9 -6
- package/contracts/product/ClaimService.sol +21 -21
- package/contracts/product/ClaimServiceManager.sol +9 -6
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +7 -1
- package/contracts/product/IPolicyService.sol +6 -8
- package/contracts/product/IPricingService.sol +3 -1
- package/contracts/product/IProductComponent.sol +5 -4
- package/contracts/product/IProductService.sol +1 -8
- package/contracts/product/PolicyService.sol +226 -127
- package/contracts/product/PolicyServiceManager.sol +9 -21
- package/contracts/product/PricingService.sol +74 -48
- package/contracts/product/PricingServiceManager.sol +9 -18
- package/contracts/product/Product.sol +45 -47
- package/contracts/product/ProductService.sol +26 -112
- package/contracts/product/ProductServiceManager.sol +9 -21
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +38 -24
- package/contracts/registry/IRegistryService.sol +31 -31
- package/contracts/registry/Registry.sol +176 -105
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +44 -82
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +450 -210
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- 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 +153 -49
- package/contracts/shared/ComponentService.sol +561 -93
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +20 -8
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +5 -11
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +6 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +6 -1
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +51 -178
- package/contracts/{instance/base → shared}/KeyValueStore.sol +30 -72
- package/contracts/{instance/base → shared}/Lifecycle.sol +12 -3
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +2 -13
- package/contracts/shared/PolicyHolder.sol +21 -13
- package/contracts/shared/ProxyManager.sol +31 -1
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +7 -2
- package/contracts/staking/IStaking.sol +146 -8
- package/contracts/staking/IStakingService.sol +83 -39
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +503 -17
- package/contracts/staking/StakingManager.sol +22 -14
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +246 -44
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +20 -1
- package/contracts/type/Blocknumber.sol +20 -3
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +14 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +12 -10
- package/contracts/type/Referral.sol +1 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +18 -4
- package/contracts/type/Seconds.sol +27 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/Version.sol +1 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/RegistryAccessManager.sol +0 -207
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -1,29 +1,67 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
|
7
|
-
import {ObjectType, REGISTRY, STAKING} from "../type/ObjectType.sol";
|
8
|
-
import {NftId, zeroNftId} from "../type/NftId.sol";
|
9
|
-
import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
|
10
|
-
|
4
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
11
6
|
import {Component} from "../shared/Component.sol";
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
12
9
|
import {IStaking} from "./IStaking.sol";
|
13
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";
|
14
27
|
import {Versionable} from "../shared/Versionable.sol";
|
15
28
|
|
16
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
17
|
-
|
18
29
|
contract Staking is
|
19
30
|
Component,
|
20
31
|
Versionable,
|
21
32
|
IStaking
|
22
33
|
{
|
23
|
-
|
24
34
|
string public constant CONTRACT_NAME = "Staking";
|
25
35
|
uint8 private constant GIF_MAJOR_VERSION = 3;
|
26
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
|
+
NftId _protocolNftId;
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
modifier onlyStake(NftId stakeNftId) {
|
50
|
+
if (!_getStakingStorage()._store.exists(stakeNftId)) {
|
51
|
+
revert ErrorStakingNotStake(stakeNftId);
|
52
|
+
}
|
53
|
+
_;
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
modifier onlyTarget(NftId targetNftId) {
|
58
|
+
if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
|
59
|
+
revert ErrorStakingNotTarget(targetNftId);
|
60
|
+
}
|
61
|
+
_;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
27
65
|
// from Versionable
|
28
66
|
function getVersion()
|
29
67
|
public
|
@@ -34,6 +72,429 @@ contract Staking is
|
|
34
72
|
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
35
73
|
}
|
36
74
|
|
75
|
+
// set/update staking reader
|
76
|
+
function setStakingReader(StakingReader stakingReader)
|
77
|
+
external
|
78
|
+
virtual
|
79
|
+
onlyOwner
|
80
|
+
{
|
81
|
+
if(stakingReader.getStaking() != IStaking(this)) {
|
82
|
+
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
83
|
+
}
|
84
|
+
|
85
|
+
_getStakingStorage()._reader = stakingReader;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
// rate management
|
90
|
+
function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
|
91
|
+
external
|
92
|
+
virtual
|
93
|
+
onlyOwner
|
94
|
+
{
|
95
|
+
StakingStorage storage $ = _getStakingStorage();
|
96
|
+
|
97
|
+
if (!$._tokenRegistry.isRegistered(chainId, token)) {
|
98
|
+
revert ErrorStakingTokenNotRegistered(chainId, token);
|
99
|
+
}
|
100
|
+
|
101
|
+
UFixed oldStakingRate = $._store.getStakingRate(chainId, token);
|
102
|
+
$._store.setStakingRate(chainId, token, stakingRate);
|
103
|
+
|
104
|
+
emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
|
105
|
+
}
|
106
|
+
|
107
|
+
// reward management
|
108
|
+
|
109
|
+
// target management
|
110
|
+
|
111
|
+
function registerTarget(
|
112
|
+
NftId targetNftId,
|
113
|
+
ObjectType expectedObjectType,
|
114
|
+
uint256 chainId,
|
115
|
+
Seconds initialLockingPeriod,
|
116
|
+
UFixed initialRewardRate
|
117
|
+
)
|
118
|
+
external
|
119
|
+
virtual
|
120
|
+
// restricted // staking service access
|
121
|
+
{
|
122
|
+
TargetManagerLib.checkTargetParameters(
|
123
|
+
getRegistry(),
|
124
|
+
_getStakingStorage()._reader,
|
125
|
+
targetNftId,
|
126
|
+
expectedObjectType,
|
127
|
+
initialLockingPeriod,
|
128
|
+
initialRewardRate);
|
129
|
+
|
130
|
+
_getStakingStorage()._store.createTarget(
|
131
|
+
targetNftId,
|
132
|
+
TargetInfo({
|
133
|
+
objectType: expectedObjectType,
|
134
|
+
chainId: chainId,
|
135
|
+
lockingPeriod: initialLockingPeriod,
|
136
|
+
rewardRate: initialRewardRate}));
|
137
|
+
}
|
138
|
+
|
139
|
+
|
140
|
+
function setLockingPeriod(
|
141
|
+
NftId targetNftId,
|
142
|
+
Seconds lockingPeriod
|
143
|
+
)
|
144
|
+
external
|
145
|
+
virtual
|
146
|
+
// TODO add restricted // only staking service
|
147
|
+
onlyTarget(targetNftId)
|
148
|
+
{
|
149
|
+
(
|
150
|
+
Seconds oldLockingPeriod,
|
151
|
+
TargetInfo memory targetInfo
|
152
|
+
) = TargetManagerLib.updateLockingPeriod(
|
153
|
+
this,
|
154
|
+
targetNftId,
|
155
|
+
lockingPeriod);
|
156
|
+
|
157
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
158
|
+
|
159
|
+
emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
|
160
|
+
}
|
161
|
+
|
162
|
+
// TODO add function to set protocol reward rate: onlyOwner
|
163
|
+
// get protocol nft id (from where)
|
164
|
+
|
165
|
+
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
166
|
+
external
|
167
|
+
virtual
|
168
|
+
// TODO add restricted // only staking service
|
169
|
+
onlyTarget(targetNftId)
|
170
|
+
{
|
171
|
+
(
|
172
|
+
UFixed oldRewardRate,
|
173
|
+
TargetInfo memory targetInfo
|
174
|
+
) = TargetManagerLib.updateRewardRate(
|
175
|
+
this,
|
176
|
+
targetNftId,
|
177
|
+
rewardRate);
|
178
|
+
|
179
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
180
|
+
|
181
|
+
emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
186
|
+
external
|
187
|
+
virtual
|
188
|
+
// TODO add restricted // only for target locking
|
189
|
+
returns (Amount newBalance)
|
190
|
+
{
|
191
|
+
// update book keeping of reward reserves
|
192
|
+
StakingStorage storage $ = _getStakingStorage();
|
193
|
+
newBalance = $._store.increaseReserves(targetNftId, dipAmount);
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
198
|
+
external
|
199
|
+
virtual
|
200
|
+
// TODO add restricted // only staking service
|
201
|
+
// onlyNftOwner(targetNftId)
|
202
|
+
returns (Amount newBalance)
|
203
|
+
{
|
204
|
+
// update book keeping of reward reserves
|
205
|
+
StakingStorage storage $ = _getStakingStorage();
|
206
|
+
newBalance = $._store.decreaseReserves(targetNftId, dipAmount);
|
207
|
+
}
|
208
|
+
|
209
|
+
|
210
|
+
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
211
|
+
external
|
212
|
+
virtual
|
213
|
+
// restricted() // only pool service
|
214
|
+
returns (Amount newBalance)
|
215
|
+
{
|
216
|
+
StakingStorage storage $ = _getStakingStorage();
|
217
|
+
uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
|
218
|
+
UFixed stakingRate = $._reader.getStakingRate(chainId, token);
|
219
|
+
newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
|
220
|
+
}
|
221
|
+
|
222
|
+
|
223
|
+
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
224
|
+
external
|
225
|
+
virtual
|
226
|
+
// restricted() // only pool service
|
227
|
+
returns (Amount newBalance)
|
228
|
+
{
|
229
|
+
StakingStorage storage $ = _getStakingStorage();
|
230
|
+
uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
|
231
|
+
UFixed stakingRate = $._reader.getStakingRate(chainId, token);
|
232
|
+
newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
|
233
|
+
}
|
234
|
+
|
235
|
+
|
236
|
+
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
237
|
+
external
|
238
|
+
virtual
|
239
|
+
onlyOwner // or CCIP
|
240
|
+
{
|
241
|
+
|
242
|
+
}
|
243
|
+
|
244
|
+
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
245
|
+
external
|
246
|
+
virtual
|
247
|
+
onlyOwner // or CCIP
|
248
|
+
{
|
249
|
+
|
250
|
+
}
|
251
|
+
|
252
|
+
//--- staking functions -------------------------------------------------//
|
253
|
+
|
254
|
+
function createStake(
|
255
|
+
NftId stakeNftId,
|
256
|
+
NftId targetNftId,
|
257
|
+
Amount stakeAmount
|
258
|
+
)
|
259
|
+
external
|
260
|
+
virtual
|
261
|
+
// TODO add restricted() // only staking service
|
262
|
+
{
|
263
|
+
StakingStorage storage $ = _getStakingStorage();
|
264
|
+
Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
|
265
|
+
$._reader,
|
266
|
+
targetNftId,
|
267
|
+
stakeAmount);
|
268
|
+
|
269
|
+
// create new stake
|
270
|
+
$._store.create(
|
271
|
+
stakeNftId,
|
272
|
+
StakeInfo({
|
273
|
+
lockedUntil: lockedUntil}));
|
274
|
+
|
275
|
+
// update target stake balance
|
276
|
+
$._store.increaseStake(
|
277
|
+
stakeNftId,
|
278
|
+
targetNftId,
|
279
|
+
stakeAmount);
|
280
|
+
}
|
281
|
+
|
282
|
+
|
283
|
+
function stake(
|
284
|
+
NftId stakeNftId,
|
285
|
+
Amount stakeAmount
|
286
|
+
)
|
287
|
+
external
|
288
|
+
virtual
|
289
|
+
// TODO add restricted() // only staking service
|
290
|
+
onlyStake(stakeNftId)
|
291
|
+
returns (Amount stakeBalance)
|
292
|
+
{
|
293
|
+
StakingStorage storage $ = _getStakingStorage();
|
294
|
+
|
295
|
+
// check that target is active for staking
|
296
|
+
(
|
297
|
+
UFixed rewardRate,
|
298
|
+
Seconds lockingPeriod
|
299
|
+
) = StakeManagerLib.checkStakeParameters(
|
300
|
+
$._reader,
|
301
|
+
stakeNftId);
|
302
|
+
|
303
|
+
// calculate new rewards (if any)
|
304
|
+
(
|
305
|
+
Amount rewardIncrementAmount,
|
306
|
+
Amount currentTotalDipAmount
|
307
|
+
) = StakeManagerLib.calculateRewardIncrease(
|
308
|
+
$._reader,
|
309
|
+
stakeNftId,
|
310
|
+
rewardRate);
|
311
|
+
|
312
|
+
stakeBalance = currentTotalDipAmount + stakeAmount;
|
313
|
+
|
314
|
+
// TODO check that additional dip, rewards and rewards increment
|
315
|
+
// are still ok with max target staking amount
|
316
|
+
NftId targetNftId = getRegistry().getObjectInfo(stakeNftId).parentNftId;
|
317
|
+
|
318
|
+
$._store.restakeRewards(
|
319
|
+
stakeNftId,
|
320
|
+
targetNftId,
|
321
|
+
rewardIncrementAmount);
|
322
|
+
|
323
|
+
$._store.increaseStake(
|
324
|
+
stakeNftId,
|
325
|
+
targetNftId,
|
326
|
+
stakeAmount);
|
327
|
+
|
328
|
+
// update locked until with target locking period
|
329
|
+
$._store.update(
|
330
|
+
stakeNftId,
|
331
|
+
StakeInfo({
|
332
|
+
lockedUntil: TimestampLib.blockTimestamp().addSeconds(
|
333
|
+
lockingPeriod)}));
|
334
|
+
}
|
335
|
+
|
336
|
+
|
337
|
+
function restake(
|
338
|
+
NftId stakeNftId,
|
339
|
+
NftId newTargetNftId
|
340
|
+
)
|
341
|
+
external
|
342
|
+
virtual
|
343
|
+
// TODO add restricted() // only staking service
|
344
|
+
onlyStake(stakeNftId)
|
345
|
+
returns (NftId newStakeNftId)
|
346
|
+
{
|
347
|
+
// TODO add check that allows additional staking amount
|
348
|
+
StakingStorage storage $ = _getStakingStorage();
|
349
|
+
|
350
|
+
// TODO implement
|
351
|
+
}
|
352
|
+
|
353
|
+
|
354
|
+
function updateRewards(NftId stakeNftId)
|
355
|
+
external
|
356
|
+
virtual
|
357
|
+
// TODO add restricted() // only staking service
|
358
|
+
onlyStake(stakeNftId)
|
359
|
+
{
|
360
|
+
StakingStorage storage $ = _getStakingStorage();
|
361
|
+
_updateRewards($._reader, $._store, stakeNftId);
|
362
|
+
}
|
363
|
+
|
364
|
+
|
365
|
+
function claimRewards(NftId stakeNftId)
|
366
|
+
external
|
367
|
+
virtual
|
368
|
+
// TODO add restricted() // only staking service
|
369
|
+
onlyStake(stakeNftId)
|
370
|
+
returns (
|
371
|
+
Amount rewardsClaimedAmount
|
372
|
+
)
|
373
|
+
{
|
374
|
+
StakingStorage storage $ = _getStakingStorage();
|
375
|
+
|
376
|
+
// update rewards since last update
|
377
|
+
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
378
|
+
|
379
|
+
// unstake all available rewards
|
380
|
+
rewardsClaimedAmount = $._store.claimUpTo(
|
381
|
+
stakeNftId,
|
382
|
+
targetNftId,
|
383
|
+
AmountLib.max());
|
384
|
+
|
385
|
+
// update reward reserves
|
386
|
+
$._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
|
387
|
+
}
|
388
|
+
|
389
|
+
|
390
|
+
function unstake(NftId stakeNftId)
|
391
|
+
external
|
392
|
+
virtual
|
393
|
+
// TODO add restricted() // only staking service
|
394
|
+
onlyStake(stakeNftId)
|
395
|
+
returns (
|
396
|
+
Amount unstakedAmount,
|
397
|
+
Amount rewardsClaimedAmount
|
398
|
+
)
|
399
|
+
{
|
400
|
+
// TODO add check that stake locking is in the past
|
401
|
+
StakingStorage storage $ = _getStakingStorage();
|
402
|
+
|
403
|
+
// update rewards since last update
|
404
|
+
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
405
|
+
|
406
|
+
// unstake all available dips
|
407
|
+
(
|
408
|
+
unstakedAmount,
|
409
|
+
rewardsClaimedAmount
|
410
|
+
) = $._store.unstakeUpTo(
|
411
|
+
stakeNftId,
|
412
|
+
targetNftId,
|
413
|
+
AmountLib.max(), // unstake all stakes
|
414
|
+
AmountLib.max()); // claim all rewards
|
415
|
+
|
416
|
+
// update reward reserves
|
417
|
+
$._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
|
418
|
+
}
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
function _updateRewards(
|
423
|
+
StakingReader reader,
|
424
|
+
StakingStore store,
|
425
|
+
NftId stakeNftId
|
426
|
+
)
|
427
|
+
internal
|
428
|
+
virtual
|
429
|
+
returns (NftId targetNftId)
|
430
|
+
{
|
431
|
+
UFixed rewardRate;
|
432
|
+
|
433
|
+
(targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
|
434
|
+
(Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
|
435
|
+
reader,
|
436
|
+
stakeNftId,
|
437
|
+
rewardRate);
|
438
|
+
|
439
|
+
store.updateRewards(
|
440
|
+
stakeNftId,
|
441
|
+
targetNftId,
|
442
|
+
rewardIncrement);
|
443
|
+
}
|
444
|
+
|
445
|
+
|
446
|
+
//--- other functions ---------------------------------------------------//
|
447
|
+
|
448
|
+
function collectDipAmount(address from, Amount dipAmount)
|
449
|
+
external
|
450
|
+
// TODO add restricted() // only staking service
|
451
|
+
{
|
452
|
+
TokenHandler tokenHandler = getTokenHandler();
|
453
|
+
address stakingWallet = getWallet();
|
454
|
+
|
455
|
+
StakeManagerLib.checkDipBalanceAndAllowance(
|
456
|
+
getToken(),
|
457
|
+
from,
|
458
|
+
address(tokenHandler),
|
459
|
+
dipAmount);
|
460
|
+
|
461
|
+
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
462
|
+
}
|
463
|
+
|
464
|
+
|
465
|
+
function transferDipAmount(address to, Amount dipAmount)
|
466
|
+
external
|
467
|
+
// TODO add restricted() // only staking service
|
468
|
+
{
|
469
|
+
TokenHandler tokenHandler = getTokenHandler();
|
470
|
+
address stakingWallet = getWallet();
|
471
|
+
|
472
|
+
StakeManagerLib.checkDipBalanceAndAllowance(
|
473
|
+
getToken(),
|
474
|
+
stakingWallet,
|
475
|
+
address(tokenHandler),
|
476
|
+
dipAmount);
|
477
|
+
|
478
|
+
tokenHandler.transfer(stakingWallet, to, dipAmount);
|
479
|
+
}
|
480
|
+
|
481
|
+
|
482
|
+
//--- view functions ----------------------------------------------------//
|
483
|
+
|
484
|
+
function getStakingReader() public view returns (StakingReader reader) {
|
485
|
+
return _getStakingStorage()._reader;
|
486
|
+
}
|
487
|
+
|
488
|
+
function getStakingStore() external view returns (StakingStore stakingStore) {
|
489
|
+
return _getStakingStorage()._store;
|
490
|
+
}
|
491
|
+
|
492
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
493
|
+
return address(_getStakingStorage()._tokenRegistry);
|
494
|
+
}
|
495
|
+
|
496
|
+
//--- internal functions ------------------------------------------------//
|
497
|
+
|
37
498
|
function _initialize(
|
38
499
|
address owner,
|
39
500
|
bytes memory data
|
@@ -43,23 +504,48 @@ contract Staking is
|
|
43
504
|
initializer
|
44
505
|
{
|
45
506
|
(
|
46
|
-
address initialAuthority,
|
47
507
|
address registryAddress,
|
48
|
-
address
|
49
|
-
address
|
508
|
+
address tokenRegistryAddress,
|
509
|
+
address stakingStoreAddress,
|
510
|
+
address stakingOwner
|
50
511
|
) = abi.decode(data, (address, address, address, address));
|
51
512
|
|
513
|
+
// only admin(authority) and dip token address are set in registry at this point
|
514
|
+
IRegistry registry = IRegistry(registryAddress);
|
515
|
+
address authority = registry.getAuthority();
|
516
|
+
TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
517
|
+
address dipTokenAddress = tokenRegistry.getDipTokenAddress();
|
518
|
+
|
52
519
|
initializeComponent(
|
53
|
-
|
520
|
+
authority,
|
54
521
|
registryAddress,
|
55
|
-
|
522
|
+
registry.getNftId(),
|
56
523
|
CONTRACT_NAME,
|
57
524
|
dipTokenAddress,
|
58
525
|
STAKING(),
|
59
526
|
false, // is interceptor
|
60
|
-
|
61
|
-
""
|
527
|
+
stakingOwner,
|
528
|
+
"", // registry data
|
529
|
+
""); // component data
|
530
|
+
|
531
|
+
_createAndSetTokenHandler();
|
532
|
+
|
533
|
+
|
534
|
+
// wiring to external contracts
|
535
|
+
StakingStorage storage $ = _getStakingStorage();
|
536
|
+
$._protocolNftId = getRegistry().getProtocolNftId();
|
537
|
+
$._store = StakingStore(stakingStoreAddress);
|
538
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
539
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
62
540
|
|
63
541
|
registerInterface(type(IStaking).interfaceId);
|
64
542
|
}
|
543
|
+
|
544
|
+
|
545
|
+
function _getStakingStorage() private pure returns (StakingStorage storage $) {
|
546
|
+
assembly {
|
547
|
+
$.slot := STAKING_LOCATION_V1
|
548
|
+
}
|
549
|
+
}
|
550
|
+
|
65
551
|
}
|
@@ -3,39 +3,47 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IVersionable} from "../shared/IVersionable.sol";
|
5
5
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {ReleaseManager} from "../registry/ReleaseManager.sol";
|
6
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";
|
7
12
|
|
8
13
|
contract StakingManager is
|
9
14
|
ProxyManager
|
10
15
|
{
|
11
|
-
|
12
16
|
Staking private _staking;
|
17
|
+
address private _initialImplementation;
|
18
|
+
bytes private _initializationData;
|
13
19
|
|
14
20
|
/// @dev initializes proxy manager with service implementation
|
15
21
|
constructor(
|
16
|
-
address
|
17
|
-
address
|
18
|
-
address
|
22
|
+
address registry,
|
23
|
+
address tokenRegistry,
|
24
|
+
address stakingStore,
|
25
|
+
address initialOwner
|
19
26
|
)
|
20
|
-
ProxyManager(
|
27
|
+
ProxyManager(registry)
|
21
28
|
{
|
22
|
-
Staking
|
23
|
-
address initialOwner = msg.sender;
|
29
|
+
Staking stakingImplementation = new Staking();
|
24
30
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
31
|
+
_initialImplementation = address(stakingImplementation);
|
32
|
+
_initializationData = abi.encode(
|
33
|
+
registry,
|
34
|
+
tokenRegistry,
|
35
|
+
stakingStore,
|
29
36
|
initialOwner);
|
30
37
|
|
31
38
|
IVersionable versionable = deploy(
|
32
|
-
|
33
|
-
|
39
|
+
_initialImplementation,
|
40
|
+
_initializationData);
|
34
41
|
|
35
42
|
_staking = Staking(address(versionable));
|
36
43
|
}
|
37
44
|
|
38
45
|
//--- view functions ----------------------------------------------------//
|
46
|
+
|
39
47
|
function getStaking()
|
40
48
|
external
|
41
49
|
view
|
@@ -43,4 +51,4 @@ contract StakingManager is
|
|
43
51
|
{
|
44
52
|
return _staking;
|
45
53
|
}
|
46
|
-
}
|
54
|
+
}
|