@etherisc/gif-next 0.0.2-c00cf5d-513 → 0.0.2-c0457ac-280
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/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +198 -177
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +130 -335
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +67 -96
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +83 -108
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +35 -48
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +65 -66
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +163 -10
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +81 -93
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +56 -40
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +84 -44
- 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 +268 -46
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +74 -43
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1095 -344
- 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/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +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 +675 -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 +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -264
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +56 -69
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -51
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +145 -86
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +134 -133
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +242 -103
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +180 -376
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +42 -83
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +93 -167
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +56 -45
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +121 -211
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -61
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +94 -25
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +40 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +241 -107
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +180 -297
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +54 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +163 -174
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -54
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +337 -157
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -230
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +34 -47
- 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 +65 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +153 -1
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- 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 +294 -15
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1712 -103
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +198 -28
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +45 -42
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +321 -161
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -136
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +52 -20
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +52 -20
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +100 -96
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +916 -55
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -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/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -81
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{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 +20 -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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +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 +33 -20
- 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 +19 -32
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +17 -22
- 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 +16 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +40 -4
- 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 +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +657 -100
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +65 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -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 +96 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
- 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/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +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 +29 -53
- package/contracts/distribution/DistributionService.sol +61 -115
- package/contracts/distribution/IDistributionComponent.sol +5 -10
- package/contracts/distribution/IDistributionService.sol +2 -8
- package/contracts/instance/IInstance.sol +15 -7
- package/contracts/instance/IInstanceService.sol +35 -10
- package/contracts/instance/Instance.sol +63 -34
- package/contracts/instance/InstanceAdmin.sol +3 -2
- package/contracts/instance/InstanceAuthorizationsLib.sol +84 -27
- package/contracts/instance/InstanceReader.sol +64 -40
- package/contracts/instance/InstanceService.sol +185 -45
- package/contracts/instance/InstanceStore.sol +122 -64
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +1 -3
- 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 +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +79 -167
- package/contracts/pool/IBundleService.sol +4 -16
- package/contracts/pool/IPoolComponent.sol +4 -6
- package/contracts/pool/IPoolService.sol +45 -9
- package/contracts/pool/Pool.sol +39 -42
- package/contracts/pool/PoolService.sol +190 -142
- package/contracts/product/ApplicationService.sol +109 -42
- package/contracts/product/ClaimService.sol +18 -19
- 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 +7 -6
- package/contracts/product/IProductService.sol +1 -8
- package/contracts/product/PolicyService.sol +225 -128
- package/contracts/product/PricingService.sol +72 -48
- package/contracts/product/Product.sol +47 -49
- package/contracts/product/ProductService.sol +26 -114
- package/contracts/registry/ChainNft.sol +8 -1
- package/contracts/registry/IRegistry.sol +15 -4
- package/contracts/registry/IRegistryService.sol +10 -0
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/Registry.sol +164 -47
- package/contracts/registry/RegistryAdmin.sol +264 -72
- package/contracts/registry/RegistryService.sol +48 -14
- package/contracts/registry/RegistryServiceManager.sol +2 -9
- package/contracts/registry/ReleaseManager.sol +242 -177
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +261 -64
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +6 -1
- package/contracts/shared/AccessManagerExtended.sol +19 -7
- package/contracts/shared/Component.sol +139 -129
- package/contracts/shared/ComponentService.sol +563 -88
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IComponent.sol +17 -37
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- 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 +8 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- 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 +3 -13
- package/contracts/shared/PolicyHolder.sol +21 -13
- package/contracts/shared/ProxyManager.sol +2 -3
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +32 -21
- package/contracts/shared/TokenHandler.sol +24 -1
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +98 -47
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +286 -44
- package/contracts/staking/StakingServiceManager.sol +7 -3
- package/contracts/staking/StakingStore.sol +613 -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 +142 -63
- 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 +82 -20
- package/contracts/type/Seconds.sol +27 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/Version.sol +1 -1
- package/package.json +3 -3
- 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/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
@@ -0,0 +1,187 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
6
|
+
import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
8
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
9
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
10
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
11
|
+
import {IStaking} from "../staking/IStaking.sol";
|
12
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
13
|
+
import {NftId} from "../type/NftId.sol";
|
14
|
+
import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
|
15
|
+
import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
|
16
|
+
import {Seconds} from "../type/Seconds.sol";
|
17
|
+
import {StakingStore} from "./StakingStore.sol";
|
18
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
19
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
|
+
|
21
|
+
contract StakingReader is
|
22
|
+
IRegistryLinked,
|
23
|
+
InitializableCustom
|
24
|
+
{
|
25
|
+
|
26
|
+
error ErrorStakingReaderDependenciesAlreadySet();
|
27
|
+
|
28
|
+
IRegistry private _registry;
|
29
|
+
IStaking private _staking;
|
30
|
+
StakingStore private _store;
|
31
|
+
|
32
|
+
constructor(IRegistry registry) InitializableCustom() {
|
33
|
+
_registry = registry;
|
34
|
+
}
|
35
|
+
|
36
|
+
function initialize(
|
37
|
+
address stakingAddress,
|
38
|
+
address stakingStoreAddress
|
39
|
+
)
|
40
|
+
external
|
41
|
+
initializer
|
42
|
+
{
|
43
|
+
_staking = IStaking(stakingAddress);
|
44
|
+
_store = StakingStore(stakingStoreAddress);
|
45
|
+
}
|
46
|
+
|
47
|
+
// view and pure functions
|
48
|
+
|
49
|
+
function getRegistry() external view returns (IRegistry registry) {
|
50
|
+
return _registry;
|
51
|
+
}
|
52
|
+
|
53
|
+
function getStaking() external view returns (IStaking staking) {
|
54
|
+
return _staking;
|
55
|
+
}
|
56
|
+
|
57
|
+
function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
|
58
|
+
return _store.getStakingRate(chainId, token);
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
function isTarget(NftId targetNftId) external view returns (bool) {
|
63
|
+
return _store.getTargetManager().exists(targetNftId);
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
function targets() external view returns (uint256) {
|
68
|
+
return _store.getTargetManager().nftIds();
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
function getTargetNftId(uint256 idx) external view returns (NftId) {
|
73
|
+
return _store.getTargetManager().getNftId(idx);
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
function isActive(NftId targetNftId) external view returns (bool) {
|
78
|
+
return _store.getTargetManager().isActive(targetNftId);
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
function activeTargets() external view returns (uint256) {
|
83
|
+
return _store.getTargetManager().activeNftIds();
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
|
88
|
+
return _store.getTargetManager().getActiveNftId(idx);
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
|
93
|
+
return _registry.getObjectInfo(stakeNftId).parentNftId;
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
|
98
|
+
bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
|
99
|
+
if (data.length > 0) {
|
100
|
+
return abi.decode(data, (IStaking.TargetInfo));
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
|
106
|
+
bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
|
107
|
+
if (data.length > 0) {
|
108
|
+
return abi.decode(data, (IStaking.StakeInfo));
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
/// @dev get the reward rate that applies to the specified stake nft id.
|
114
|
+
function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
|
115
|
+
targetNftId = getTargetNftId(stakeNftId);
|
116
|
+
rewardRate = getTargetInfo(targetNftId).rewardRate;
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
/// @dev get the reward rate for the specified target nft id.
|
121
|
+
function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
|
122
|
+
return getTargetInfo(targetNftId).rewardRate;
|
123
|
+
}
|
124
|
+
|
125
|
+
/// @dev returns the current reward reserve balance for the specified target.
|
126
|
+
function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
|
127
|
+
return _store.getReserveBalance(targetNftId);
|
128
|
+
}
|
129
|
+
|
130
|
+
function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
|
131
|
+
return _store.getStakeBalance(nftId);
|
132
|
+
}
|
133
|
+
|
134
|
+
function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
|
135
|
+
return _store.getRewardBalance(nftId);
|
136
|
+
}
|
137
|
+
|
138
|
+
function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
|
139
|
+
return _store.getBalanceUpdatedAt(nftId);
|
140
|
+
}
|
141
|
+
|
142
|
+
function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
|
143
|
+
return _store.getBalanceUpdatedIn(nftId);
|
144
|
+
}
|
145
|
+
|
146
|
+
function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
|
147
|
+
return _store.getTotalValueLocked(nftId, token);
|
148
|
+
}
|
149
|
+
|
150
|
+
function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
|
151
|
+
return _store.getRequiredStakeBalance(nftId);
|
152
|
+
}
|
153
|
+
|
154
|
+
function getTargetBalances(NftId stakeNftId)
|
155
|
+
public
|
156
|
+
view
|
157
|
+
returns (
|
158
|
+
Amount balanceAmount,
|
159
|
+
Amount stakeAmount,
|
160
|
+
Amount rewardAmount,
|
161
|
+
Blocknumber lastUpdatedIn
|
162
|
+
)
|
163
|
+
{
|
164
|
+
(
|
165
|
+
balanceAmount,
|
166
|
+
stakeAmount,
|
167
|
+
rewardAmount,
|
168
|
+
lastUpdatedIn
|
169
|
+
) = _store.getTargetBalances(stakeNftId);
|
170
|
+
}
|
171
|
+
|
172
|
+
function getStakeBalances(NftId stakeNftId)
|
173
|
+
external
|
174
|
+
view
|
175
|
+
returns (
|
176
|
+
Amount stakeAmount,
|
177
|
+
Amount rewardAmount,
|
178
|
+
Timestamp lastUpdatedAt
|
179
|
+
)
|
180
|
+
{
|
181
|
+
(
|
182
|
+
stakeAmount,
|
183
|
+
rewardAmount,
|
184
|
+
lastUpdatedAt
|
185
|
+
) = _store.getStakeBalances(stakeNftId);
|
186
|
+
}
|
187
|
+
}
|
@@ -1,14 +1,26 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
3
5
|
|
4
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
5
8
|
import {IPoolService} from "../pool/IPoolService.sol";
|
9
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
6
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
12
|
+
import {IStaking} from "./IStaking.sol";
|
7
13
|
import {IStakingService} from "./IStakingService.sol";
|
8
|
-
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {ObjectType,
|
14
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
+
import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
16
|
+
import {Seconds} from "../type/Seconds.sol";
|
10
17
|
import {Service} from "../shared/Service.sol";
|
18
|
+
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
19
|
+
import {StakingReader} from "./StakingReader.sol";
|
20
|
+
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
11
21
|
import {Timestamp} from "../type/Timestamp.sol";
|
22
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
|
+
import {UFixed} from "../type/UFixed.sol";
|
12
24
|
|
13
25
|
|
14
26
|
contract StakingService is
|
@@ -20,120 +32,294 @@ contract StakingService is
|
|
20
32
|
bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
|
21
33
|
|
22
34
|
struct StakingServiceStorage {
|
23
|
-
|
35
|
+
RegistryService _registryService;
|
36
|
+
IStaking _staking;
|
37
|
+
IERC20Metadata _dip;
|
38
|
+
TokenHandler _tokenHandler;
|
39
|
+
}
|
40
|
+
|
41
|
+
modifier onlyNftOwner(NftId nftId) {
|
42
|
+
if(msg.sender != getRegistry().ownerOf(nftId)) {
|
43
|
+
revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
|
44
|
+
}
|
45
|
+
_;
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
function createInstanceTarget(
|
50
|
+
NftId targetNftId,
|
51
|
+
Seconds initialLockingPeriod,
|
52
|
+
UFixed initialRewardRate
|
53
|
+
)
|
54
|
+
external
|
55
|
+
virtual
|
56
|
+
restricted()
|
57
|
+
{
|
58
|
+
uint256 chainId = block.chainid;
|
59
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
60
|
+
targetNftId,
|
61
|
+
INSTANCE(),
|
62
|
+
chainId,
|
63
|
+
initialLockingPeriod,
|
64
|
+
initialRewardRate);
|
65
|
+
|
66
|
+
emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod)
|
71
|
+
external
|
72
|
+
virtual
|
73
|
+
restricted()
|
74
|
+
{
|
75
|
+
_getStakingServiceStorage()._staking.setLockingPeriod(
|
76
|
+
instanceNftId,
|
77
|
+
lockingPeriod);
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate)
|
82
|
+
external
|
83
|
+
virtual
|
84
|
+
restricted()
|
85
|
+
{
|
86
|
+
_getStakingServiceStorage()._staking.setRewardRate(
|
87
|
+
instanceNftId,
|
88
|
+
rewardRate);
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
|
93
|
+
external
|
94
|
+
virtual
|
95
|
+
restricted()
|
96
|
+
returns (Amount newBalance)
|
97
|
+
{
|
98
|
+
return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
|
24
99
|
}
|
25
100
|
|
26
|
-
|
27
|
-
|
101
|
+
|
102
|
+
function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount)
|
103
|
+
external
|
104
|
+
virtual
|
105
|
+
restricted()
|
106
|
+
returns (Amount newBalance)
|
107
|
+
{
|
108
|
+
address rewardProvider = msg.sender;
|
109
|
+
return _refillRewardReserves(targetNftId, rewardProvider, dipAmount);
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount)
|
114
|
+
external
|
115
|
+
virtual
|
116
|
+
restricted()
|
117
|
+
returns (Amount newBalance)
|
118
|
+
{
|
119
|
+
// update reward reserve book keeping
|
120
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
121
|
+
newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
|
122
|
+
|
123
|
+
// transfer withdrawal amount to target owner
|
124
|
+
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
125
|
+
$._staking.transferDipAmount(
|
126
|
+
instanceOwner,
|
127
|
+
dipAmount);
|
128
|
+
|
129
|
+
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
28
130
|
}
|
29
131
|
|
30
132
|
|
133
|
+
/// @dev creates a new stake to the specified target nft id with the provided dip amount
|
134
|
+
/// the target nft id must have been registered as an active staking target prior to this call
|
135
|
+
/// the sender of this transaction becomes the stake owner via the minted nft.
|
136
|
+
/// to create the new stake balance and allowance of the staker need to cover the dip amount
|
137
|
+
/// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
|
138
|
+
/// this is a permissionless function.
|
31
139
|
function create(
|
32
140
|
NftId targetNftId,
|
33
|
-
Amount
|
141
|
+
Amount dipAmount
|
34
142
|
)
|
35
143
|
external
|
36
144
|
virtual
|
145
|
+
restricted()
|
37
146
|
returns (
|
38
147
|
NftId stakeNftId
|
39
148
|
)
|
40
149
|
{
|
41
|
-
|
150
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
151
|
+
address stakeOwner = msg.sender;
|
152
|
+
|
153
|
+
// target nft id checks are performed in $._staking.createStake() below
|
154
|
+
// register new stake object with registry
|
155
|
+
stakeNftId = $._registryService.registerStake(
|
156
|
+
IRegistry.ObjectInfo({
|
157
|
+
nftId: NftIdLib.zero(),
|
158
|
+
parentNftId: targetNftId,
|
159
|
+
objectType: STAKE(),
|
160
|
+
isInterceptor: false,
|
161
|
+
objectAddress: address(0),
|
162
|
+
initialOwner: stakeOwner,
|
163
|
+
data: ""
|
164
|
+
}));
|
165
|
+
|
166
|
+
// create stake info with staking
|
167
|
+
$._staking.createStake(
|
168
|
+
stakeNftId,
|
169
|
+
targetNftId,
|
170
|
+
dipAmount);
|
171
|
+
|
172
|
+
// collect staked dip by staking
|
173
|
+
$._staking.collectDipAmount(
|
174
|
+
stakeOwner,
|
175
|
+
dipAmount);
|
176
|
+
|
177
|
+
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
42
178
|
}
|
43
179
|
|
44
180
|
|
45
181
|
function stake(
|
46
182
|
NftId stakeNftId,
|
47
|
-
Amount
|
183
|
+
Amount dipAmount
|
48
184
|
)
|
49
185
|
external
|
50
186
|
virtual
|
187
|
+
restricted()
|
188
|
+
onlyNftOwner(stakeNftId)
|
51
189
|
{
|
190
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
191
|
+
address stakeOwner = msg.sender;
|
192
|
+
|
193
|
+
// add additional staked dips by staking
|
194
|
+
Amount stakeBalance = $._staking.stake(
|
195
|
+
stakeNftId,
|
196
|
+
dipAmount);
|
197
|
+
|
198
|
+
// collect staked dip by staking
|
199
|
+
if (dipAmount.gtz()) {
|
200
|
+
$._staking.collectDipAmount(
|
201
|
+
stakeOwner,
|
202
|
+
dipAmount);
|
203
|
+
}
|
52
204
|
|
205
|
+
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
53
206
|
}
|
54
207
|
|
55
208
|
|
56
|
-
function
|
209
|
+
function restakeToNewTarget(
|
57
210
|
NftId stakeNftId,
|
58
|
-
|
211
|
+
NftId newTargetNftId
|
59
212
|
)
|
60
213
|
external
|
61
214
|
virtual
|
215
|
+
restricted()
|
216
|
+
onlyNftOwner(stakeNftId)
|
217
|
+
returns (
|
218
|
+
NftId newStakeNftId
|
219
|
+
)
|
62
220
|
{
|
221
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
222
|
+
// TODO implement
|
223
|
+
}
|
63
224
|
|
64
|
-
}
|
65
225
|
|
66
|
-
function
|
226
|
+
function updateRewards(
|
67
227
|
NftId stakeNftId
|
68
228
|
)
|
69
229
|
external
|
70
230
|
virtual
|
231
|
+
restricted()
|
71
232
|
{
|
233
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
234
|
+
$._staking.updateRewards(stakeNftId);
|
72
235
|
|
236
|
+
emit LogStakingServiceRewardsUpdated(stakeNftId);
|
73
237
|
}
|
74
238
|
|
75
|
-
|
76
|
-
|
77
|
-
NftId newTargetNftId
|
78
|
-
)
|
239
|
+
|
240
|
+
function claimRewards(NftId stakeNftId)
|
79
241
|
external
|
80
242
|
virtual
|
81
|
-
|
82
|
-
|
83
|
-
Timestamp unlockedAt
|
84
|
-
)
|
243
|
+
restricted()
|
244
|
+
onlyNftOwner(stakeNftId)
|
85
245
|
{
|
246
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
247
|
+
address stakeOwner = msg.sender;
|
248
|
+
|
249
|
+
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
250
|
+
$._staking.transferDipAmount(
|
251
|
+
stakeOwner,
|
252
|
+
rewardsClaimedAmount);
|
86
253
|
|
254
|
+
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
87
255
|
}
|
88
256
|
|
89
257
|
|
90
|
-
function
|
91
|
-
NftId targetNftId,
|
92
|
-
address token,
|
93
|
-
Amount amount
|
94
|
-
)
|
258
|
+
function unstake(NftId stakeNftId)
|
95
259
|
external
|
96
260
|
virtual
|
97
|
-
|
261
|
+
restricted()
|
262
|
+
onlyNftOwner(stakeNftId)
|
98
263
|
{
|
264
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
265
|
+
address stakeOwner = msg.sender;
|
266
|
+
|
267
|
+
(
|
268
|
+
Amount unstakedAmount,
|
269
|
+
Amount rewardsClaimedAmount
|
270
|
+
) = $._staking.unstake(stakeNftId);
|
271
|
+
|
272
|
+
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
273
|
+
$._staking.transferDipAmount(
|
274
|
+
stakeOwner,
|
275
|
+
totalAmount);
|
99
276
|
|
277
|
+
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
100
278
|
}
|
101
279
|
|
102
280
|
|
103
|
-
function
|
281
|
+
function setTotalValueLocked(
|
104
282
|
NftId targetNftId,
|
105
283
|
address token,
|
106
284
|
Amount amount
|
107
285
|
)
|
108
286
|
external
|
109
287
|
virtual
|
110
|
-
|
288
|
+
restricted()
|
111
289
|
{
|
290
|
+
// TODO implement
|
112
291
|
|
113
292
|
}
|
114
293
|
|
294
|
+
//--- view functions ----------------------------------------------------//
|
115
295
|
|
116
|
-
function
|
117
|
-
NftId targetNftId,
|
118
|
-
address token
|
119
|
-
)
|
296
|
+
function getDipToken()
|
120
297
|
external
|
121
298
|
virtual
|
299
|
+
returns (IERC20Metadata dip)
|
122
300
|
{
|
123
|
-
|
301
|
+
return _getStakingServiceStorage()._dip;
|
124
302
|
}
|
125
303
|
|
126
304
|
|
127
|
-
function
|
128
|
-
NftId targetNftId,
|
129
|
-
address token
|
130
|
-
)
|
305
|
+
function getTokenHandler()
|
131
306
|
external
|
132
307
|
virtual
|
308
|
+
returns (TokenHandler tokenHandler)
|
133
309
|
{
|
310
|
+
return _getStakingServiceStorage()._tokenHandler;
|
311
|
+
}
|
134
312
|
|
313
|
+
|
314
|
+
function getStaking()
|
315
|
+
external
|
316
|
+
virtual
|
317
|
+
returns (IStaking staking)
|
318
|
+
{
|
319
|
+
return _getStakingServiceStorage()._staking;
|
135
320
|
}
|
136
321
|
|
322
|
+
//--- internal functions ------------------------------------------------//
|
137
323
|
|
138
324
|
function _initialize(
|
139
325
|
address owner,
|
@@ -144,26 +330,82 @@ contract StakingService is
|
|
144
330
|
initializer()
|
145
331
|
{
|
146
332
|
(
|
147
|
-
address
|
148
|
-
|
149
|
-
address
|
333
|
+
address authority,
|
334
|
+
address registryAddress,
|
335
|
+
address stakingAddress
|
150
336
|
) = abi.decode(data, (address, address, address));
|
151
337
|
|
152
338
|
initializeService(registryAddress, authority, owner);
|
153
339
|
|
154
340
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
155
|
-
$.
|
341
|
+
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
342
|
+
$._staking = _registerStaking(stakingAddress);
|
343
|
+
$._dip = $._staking.getToken();
|
344
|
+
$._tokenHandler = $._staking.getTokenHandler();
|
156
345
|
|
157
346
|
registerInterface(type(IStakingService).interfaceId);
|
158
347
|
}
|
159
348
|
|
160
|
-
|
161
|
-
|
349
|
+
|
350
|
+
function _registerStaking(
|
351
|
+
address stakingAddress
|
352
|
+
)
|
353
|
+
internal
|
354
|
+
returns (IStaking staking)
|
355
|
+
{
|
356
|
+
// check if provided staking contract is already registred
|
357
|
+
// staking contract may have been already registered by a previous major relase
|
358
|
+
IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
|
359
|
+
if (stakingInfo.nftId.gtz()) {
|
360
|
+
// registered object but wrong type
|
361
|
+
if (stakingInfo.objectType != STAKING()) {
|
362
|
+
revert ErrorStakingServiceNotStaking(stakingAddress);
|
363
|
+
}
|
364
|
+
|
365
|
+
// return correctly registered staking contract
|
366
|
+
return IStaking(stakingAddress);
|
367
|
+
}
|
368
|
+
|
369
|
+
// check that contract implements IStaking
|
370
|
+
if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
|
371
|
+
revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
|
372
|
+
}
|
373
|
+
|
374
|
+
address owner = msg.sender;
|
375
|
+
_getStakingServiceStorage()._registryService.registerStaking(
|
376
|
+
IRegisterable(stakingAddress),
|
377
|
+
owner);
|
378
|
+
|
379
|
+
return IStaking(stakingAddress);
|
380
|
+
}
|
381
|
+
|
382
|
+
|
383
|
+
function _refillRewardReserves(NftId targetNftId, address rewardProvider, Amount dipAmount)
|
384
|
+
internal
|
385
|
+
virtual
|
386
|
+
returns (Amount newBalance)
|
387
|
+
{
|
388
|
+
// update reward reserve book keeping
|
389
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
390
|
+
newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
|
391
|
+
|
392
|
+
// collect reward dip from provider
|
393
|
+
$._staking.collectDipAmount(
|
394
|
+
rewardProvider,
|
395
|
+
dipAmount);
|
396
|
+
|
397
|
+
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
162
398
|
}
|
163
399
|
|
400
|
+
|
164
401
|
function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
|
165
402
|
assembly {
|
166
403
|
$.slot := STAKING_SERVICE_LOCATION_V1
|
167
404
|
}
|
168
405
|
}
|
406
|
+
|
407
|
+
|
408
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
409
|
+
return STAKING();
|
410
|
+
}
|
169
411
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
4
5
|
import {IVersionable} from "../shared/IVersionable.sol";
|
5
6
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
7
|
import {StakingService} from "./StakingService.sol";
|
@@ -13,14 +14,17 @@ contract StakingServiceManager is
|
|
13
14
|
|
14
15
|
/// @dev initializes proxy manager with service implementation
|
15
16
|
constructor(
|
16
|
-
address authority,
|
17
|
+
address authority,
|
17
18
|
address registryAddress,
|
18
19
|
bytes32 salt
|
19
20
|
)
|
20
21
|
ProxyManager(registryAddress)
|
21
22
|
{
|
22
|
-
StakingService svc = new StakingService
|
23
|
-
bytes memory data = abi.encode(
|
23
|
+
StakingService svc = new StakingService();
|
24
|
+
bytes memory data = abi.encode(
|
25
|
+
authority,
|
26
|
+
registryAddress,
|
27
|
+
IRegistry(registryAddress).getStakingAddress());
|
24
28
|
IVersionable versionable = deployDetermenistic(
|
25
29
|
address(svc),
|
26
30
|
data,
|