@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e802d97-477
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 +19 -13
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +79 -73
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +114 -56
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +7 -1
- 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 +12 -22
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +47 -20
- 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 +126 -30
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -63
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -34
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +246 -104
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +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/oracle/IOracle.sol/IOracle.json +10 -0
- 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 +55 -41
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +102 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +7 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +22 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +56 -35
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +95 -37
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +39 -25
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -34
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +81 -67
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +115 -53
- 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 +7 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +7 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +7 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +59 -45
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +69 -55
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +109 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +18 -12
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +25 -19
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +87 -29
- 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 +150 -53
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +187 -67
- 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 +328 -103
- 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 +197 -72
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -39
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +752 -148
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
- 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 +18 -12
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +92 -63
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +102 -46
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +7 -1
- 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 +11 -5
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +14 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +18 -12
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
- 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 +15 -9
- 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 +424 -593
- 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 +598 -627
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +149 -48
- 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 +593 -74
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +119 -29
- 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 +40 -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 +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +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 +2 -4
- package/contracts/distribution/DistributionService.sol +3 -2
- package/contracts/distribution/DistributionServiceManager.sol +9 -18
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +1 -1
- package/contracts/instance/IInstance.sol +11 -6
- package/contracts/instance/IInstanceService.sol +3 -5
- package/contracts/instance/Instance.sol +29 -21
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +192 -151
- package/contracts/instance/InstanceReader.sol +30 -6
- package/contracts/instance/InstanceService.sol +69 -55
- package/contracts/instance/InstanceServiceManager.sol +10 -20
- package/contracts/instance/InstanceStore.sol +64 -42
- package/contracts/instance/base/BalanceStore.sol +1 -1
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- 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 +6 -23
- package/contracts/pool/BundleServiceManager.sol +9 -18
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolService.sol +4 -1
- package/contracts/pool/PoolService.sol +45 -13
- package/contracts/pool/PoolServiceManager.sol +9 -18
- package/contracts/product/ApplicationService.sol +6 -5
- package/contracts/product/ApplicationServiceManager.sol +9 -6
- package/contracts/product/ClaimService.sol +13 -7
- 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 +1 -1
- package/contracts/product/IPricingService.sol +1 -1
- package/contracts/product/IProductService.sol +1 -1
- package/contracts/product/PolicyService.sol +10 -6
- package/contracts/product/PolicyServiceManager.sol +9 -21
- package/contracts/product/PricingService.sol +10 -9
- package/contracts/product/PricingServiceManager.sol +9 -18
- package/contracts/product/Product.sol +1 -1
- package/contracts/product/ProductService.sol +7 -5
- package/contracts/product/ProductServiceManager.sol +9 -21
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +37 -24
- package/contracts/registry/IRegistryService.sol +26 -36
- package/contracts/registry/Registry.sol +164 -117
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +22 -83
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +448 -223
- package/contracts/registry/TokenRegistry.sol +187 -59
- 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 +8 -13
- package/contracts/shared/ComponentService.sol +35 -13
- package/contracts/shared/ComponentVerifyingService.sol +13 -7
- 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 +3 -7
- package/contracts/shared/IComponentService.sol +11 -0
- package/contracts/shared/IKeyValueStore.sol +1 -1
- 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 +1 -2
- package/contracts/shared/KeyValueStore.sol +24 -66
- package/contracts/shared/Lifecycle.sol +11 -2
- 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/Service.sol +1 -1
- package/contracts/staking/IStaking.sol +127 -36
- package/contracts/staking/IStakingService.sol +83 -39
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +432 -93
- package/contracts/staking/StakingManager.sol +22 -14
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +245 -39
- 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 +15 -1
- package/contracts/type/Blocknumber.sol +14 -2
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/NftId.sol +9 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +12 -9
- 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 +16 -8
- 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 +3 -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/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- 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/registry/RegistryAccessManager.sol +0 -213
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -1,26 +1,32 @@
|
|
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} from "../type/NftId.sol";
|
9
|
-
import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
|
10
|
-
|
11
|
-
import {Amount} from "../type/Amount.sol";
|
4
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
12
6
|
import {Component} from "../shared/Component.sol";
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
9
|
import {IStaking} from "./IStaking.sol";
|
14
10
|
import {IVersionable} from "../shared/IVersionable.sol";
|
15
|
-
import {
|
16
|
-
import {
|
17
|
-
import {
|
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";
|
18
27
|
import {Versionable} from "../shared/Versionable.sol";
|
19
28
|
|
20
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
-
|
22
29
|
contract Staking is
|
23
|
-
KeyValueStore,
|
24
30
|
Component,
|
25
31
|
Versionable,
|
26
32
|
IStaking
|
@@ -32,19 +38,30 @@ contract Staking is
|
|
32
38
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
33
39
|
|
34
40
|
struct StakingStorage {
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
IRegistryService _registryService;
|
42
|
+
TokenRegistry _tokenRegistry;
|
43
|
+
StakingStore _store;
|
44
|
+
StakingReader _reader;
|
45
|
+
NftId _protocolNftId;
|
40
46
|
}
|
41
47
|
|
42
|
-
|
43
|
-
|
44
|
-
|
48
|
+
|
49
|
+
modifier onlyStake(NftId stakeNftId) {
|
50
|
+
if (!_getStakingStorage()._store.exists(stakeNftId)) {
|
51
|
+
revert ErrorStakingNotStake(stakeNftId);
|
45
52
|
}
|
53
|
+
_;
|
46
54
|
}
|
47
55
|
|
56
|
+
|
57
|
+
modifier onlyTarget(NftId targetNftId) {
|
58
|
+
if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
|
59
|
+
revert ErrorStakingNotTarget(targetNftId);
|
60
|
+
}
|
61
|
+
_;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
48
65
|
// from Versionable
|
49
66
|
function getVersion()
|
50
67
|
public
|
@@ -55,95 +72,164 @@ contract Staking is
|
|
55
72
|
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
56
73
|
}
|
57
74
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
virtual override
|
64
|
-
initializer
|
75
|
+
// set/update staking reader
|
76
|
+
function setStakingReader(StakingReader stakingReader)
|
77
|
+
external
|
78
|
+
virtual
|
79
|
+
onlyOwner
|
65
80
|
{
|
66
|
-
(
|
67
|
-
address
|
68
|
-
|
69
|
-
address dipTokenAddress,
|
70
|
-
address initialOwner
|
71
|
-
) = abi.decode(data, (address, address, address, address));
|
72
|
-
|
73
|
-
initializeComponent(
|
74
|
-
initialAuthority,
|
75
|
-
registryAddress,
|
76
|
-
IRegistry(registryAddress).getNftId(),
|
77
|
-
CONTRACT_NAME,
|
78
|
-
dipTokenAddress,
|
79
|
-
STAKING(),
|
80
|
-
false, // is interceptor
|
81
|
-
initialOwner,
|
82
|
-
"", // registry data
|
83
|
-
""); // component data
|
84
|
-
|
85
|
-
// create the staking token handler
|
86
|
-
_createAndSetTokenHandler();
|
81
|
+
if(stakingReader.getStaking() != IStaking(this)) {
|
82
|
+
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
83
|
+
}
|
87
84
|
|
88
|
-
|
85
|
+
_getStakingStorage()._reader = stakingReader;
|
89
86
|
}
|
90
87
|
|
88
|
+
|
91
89
|
// rate management
|
92
90
|
function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
|
93
91
|
external
|
94
92
|
virtual
|
95
93
|
onlyOwner
|
96
94
|
{
|
95
|
+
StakingStorage storage $ = _getStakingStorage();
|
96
|
+
|
97
|
+
if (!$._tokenRegistry.isRegistered(chainId, token)) {
|
98
|
+
revert ErrorStakingTokenNotRegistered(chainId, token);
|
99
|
+
}
|
97
100
|
|
101
|
+
UFixed oldStakingRate = $._store.getStakingRate(chainId, token);
|
102
|
+
$._store.setStakingRate(chainId, token, stakingRate);
|
103
|
+
|
104
|
+
emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
|
98
105
|
}
|
99
106
|
|
100
107
|
// reward management
|
101
|
-
|
108
|
+
|
109
|
+
// target management
|
110
|
+
|
111
|
+
function registerTarget(
|
112
|
+
NftId targetNftId,
|
113
|
+
ObjectType expectedObjectType,
|
114
|
+
uint256 chainId,
|
115
|
+
Seconds initialLockingPeriod,
|
116
|
+
UFixed initialRewardRate
|
117
|
+
)
|
102
118
|
external
|
103
119
|
virtual
|
104
|
-
//
|
120
|
+
// restricted // staking service access
|
105
121
|
{
|
106
|
-
|
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}));
|
107
137
|
}
|
108
138
|
|
109
|
-
|
139
|
+
|
140
|
+
function setLockingPeriod(
|
141
|
+
NftId targetNftId,
|
142
|
+
Seconds lockingPeriod
|
143
|
+
)
|
110
144
|
external
|
111
145
|
virtual
|
146
|
+
// TODO add restricted // only staking service
|
147
|
+
onlyTarget(targetNftId)
|
112
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);
|
113
158
|
|
159
|
+
emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
|
114
160
|
}
|
115
161
|
|
116
|
-
function
|
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)
|
117
166
|
external
|
118
167
|
virtual
|
119
|
-
//
|
168
|
+
// TODO add restricted // only staking service
|
169
|
+
onlyTarget(targetNftId)
|
120
170
|
{
|
171
|
+
(
|
172
|
+
UFixed oldRewardRate,
|
173
|
+
TargetInfo memory targetInfo
|
174
|
+
) = TargetManagerLib.updateRewardRate(
|
175
|
+
this,
|
176
|
+
targetNftId,
|
177
|
+
rewardRate);
|
121
178
|
|
179
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
180
|
+
|
181
|
+
emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
|
122
182
|
}
|
123
183
|
|
124
|
-
|
125
|
-
function
|
184
|
+
|
185
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
126
186
|
external
|
127
187
|
virtual
|
128
|
-
// restricted //
|
188
|
+
// TODO add restricted // only for target locking
|
189
|
+
returns (Amount newBalance)
|
129
190
|
{
|
130
|
-
|
191
|
+
// update book keeping of reward reserves
|
192
|
+
StakingStorage storage $ = _getStakingStorage();
|
193
|
+
newBalance = $._store.increaseReserves(targetNftId, dipAmount);
|
131
194
|
}
|
132
195
|
|
133
|
-
|
196
|
+
|
197
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
134
198
|
external
|
135
199
|
virtual
|
136
|
-
// restricted //
|
200
|
+
// TODO add restricted // only staking service
|
201
|
+
// onlyNftOwner(targetNftId)
|
202
|
+
returns (Amount newBalance)
|
137
203
|
{
|
138
|
-
|
204
|
+
// update book keeping of reward reserves
|
205
|
+
StakingStorage storage $ = _getStakingStorage();
|
206
|
+
newBalance = $._store.decreaseReserves(targetNftId, dipAmount);
|
139
207
|
}
|
140
208
|
|
141
|
-
|
209
|
+
|
210
|
+
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
142
211
|
external
|
143
212
|
virtual
|
144
|
-
// restricted //
|
213
|
+
// restricted() // only pool service
|
214
|
+
returns (Amount newBalance)
|
145
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
|
+
}
|
146
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);
|
147
233
|
}
|
148
234
|
|
149
235
|
|
@@ -163,50 +249,303 @@ contract Staking is
|
|
163
249
|
|
164
250
|
}
|
165
251
|
|
166
|
-
|
167
|
-
function createStake(NftId targetNftId, Amount dipAmount) external returns(NftId stakeNftId) {}
|
168
|
-
function stake(NftId stakeNftId, Amount dipAmount) external {}
|
169
|
-
function restakeRewards(NftId stakeNftId) external {}
|
170
|
-
function restakeToNewTarget(NftId stakeNftId, NftId newTarget) external {}
|
171
|
-
function unstake(NftId stakeNftId) external {}
|
172
|
-
function unstake(NftId stakeNftId, Amount dipAmount) external {}
|
173
|
-
function claimRewards(NftId stakeNftId) external {}
|
252
|
+
//--- staking functions -------------------------------------------------//
|
174
253
|
|
175
|
-
|
176
|
-
|
177
|
-
|
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);
|
178
280
|
}
|
179
281
|
|
180
|
-
|
181
|
-
|
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)}));
|
182
334
|
}
|
183
335
|
|
184
|
-
|
185
|
-
|
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);
|
186
362
|
}
|
187
363
|
|
188
364
|
|
189
|
-
function
|
190
|
-
|
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());
|
191
384
|
|
192
|
-
|
193
|
-
|
385
|
+
// update reward reserves
|
386
|
+
$._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
|
194
387
|
}
|
195
388
|
|
196
|
-
|
197
|
-
|
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);
|
198
418
|
}
|
199
419
|
|
200
|
-
|
201
|
-
|
202
|
-
|
420
|
+
|
421
|
+
|
422
|
+
function _updateRewards(
|
423
|
+
StakingReader reader,
|
424
|
+
StakingStore store,
|
425
|
+
NftId stakeNftId
|
203
426
|
)
|
204
|
-
|
427
|
+
internal
|
205
428
|
virtual
|
206
|
-
|
207
|
-
|
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
|
208
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
|
+
|
209
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
|
+
|
498
|
+
function _initialize(
|
499
|
+
address owner,
|
500
|
+
bytes memory data
|
501
|
+
)
|
502
|
+
internal
|
503
|
+
virtual override
|
504
|
+
initializer
|
505
|
+
{
|
506
|
+
(
|
507
|
+
address registryAddress,
|
508
|
+
address tokenRegistryAddress,
|
509
|
+
address stakingStoreAddress,
|
510
|
+
address stakingOwner
|
511
|
+
) = abi.decode(data, (address, address, address, address));
|
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
|
+
|
519
|
+
initializeComponent(
|
520
|
+
authority,
|
521
|
+
registryAddress,
|
522
|
+
registry.getNftId(),
|
523
|
+
CONTRACT_NAME,
|
524
|
+
dipTokenAddress,
|
525
|
+
STAKING(),
|
526
|
+
false, // is interceptor
|
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);
|
540
|
+
|
541
|
+
registerInterface(type(IStaking).interfaceId);
|
542
|
+
}
|
543
|
+
|
544
|
+
|
545
|
+
function _getStakingStorage() private pure returns (StakingStorage storage $) {
|
546
|
+
assembly {
|
547
|
+
$.slot := STAKING_LOCATION_V1
|
548
|
+
}
|
210
549
|
}
|
211
550
|
|
212
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
|
+
}
|