@etherisc/gif-next 0.0.2-7edd44f → 0.0.2-7ef1483-704
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 +448 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +672 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.json +972 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1045 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.json +10 -0
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +784 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +906 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.json +1230 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +494 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +37 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +391 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +79 -0
- package/contracts/instance/IInstanceService.sol +81 -0
- package/contracts/instance/Instance.sol +235 -0
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +365 -0
- package/contracts/instance/InstanceService.sol +362 -0
- package/contracts/instance/InstanceServiceManager.sol +44 -0
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +46 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +42 -0
- package/contracts/instance/module/IPolicy.sol +84 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/{Dip.sol → mock/Dip.sol} +1 -1
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +147 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +424 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +437 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +473 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +216 -0
- package/contracts/registry/IRegistry.sol +124 -0
- package/contracts/registry/IRegistryService.sol +69 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +576 -0
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +266 -0
- package/contracts/registry/RegistryServiceManager.sol +58 -0
- package/contracts/registry/ReleaseManager.sol +599 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +361 -0
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/shared/IKeyValueStore.sol +53 -0
- package/contracts/shared/ILifecycle.sol +30 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +18 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +130 -0
- package/contracts/shared/Lifecycle.sol +121 -0
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +107 -0
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +199 -0
- package/contracts/shared/Registerable.sol +75 -0
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +77 -0
- package/contracts/shared/TokenHandler.sol +58 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/staking/IStaking.sol +152 -0
- package/contracts/staking/IStakingManager.sol +15 -0
- package/contracts/staking/IStakingService.sol +162 -0
- package/contracts/staking/IStakingStore.sol +130 -0
- package/contracts/staking/StakeManagerLib.sol +156 -0
- package/contracts/staking/Staking.sol +497 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +146 -0
- package/contracts/staking/StakingService.sol +376 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +331 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/type/AddressSet.sol +58 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/type/Blocknumber.sol +136 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/type/DistributorType.sol +55 -0
- package/contracts/type/Fee.sol +66 -0
- package/contracts/type/Key32.sol +50 -0
- package/contracts/type/NftId.sol +78 -0
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +169 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/type/Referral.sol +89 -0
- package/contracts/type/RiskId.sol +43 -0
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +71 -0
- package/contracts/type/StateId.sol +123 -0
- package/contracts/type/Timestamp.sol +132 -0
- package/contracts/type/UFixed.sol +326 -0
- package/contracts/type/Version.sol +108 -0
- package/package.json +26 -10
- package/artifacts/contracts/Dip.sol/DIP.dbg.json +0 -4
- package/artifacts/contracts/Dip.sol/DIP.json +0 -338
- package/artifacts/contracts/Lock.sol/Lock.dbg.json +0 -4
- package/artifacts/contracts/Lock.sol/Lock.json +0 -74
- package/contracts/Lock.sol +0 -34
@@ -0,0 +1,376 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {Amount} from "../type/Amount.sol";
|
7
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
8
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
9
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
12
|
+
import {IStaking} from "./IStaking.sol";
|
13
|
+
import {IStakingService} from "./IStakingService.sol";
|
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";
|
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";
|
21
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
22
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
|
+
import {UFixed} from "../type/UFixed.sol";
|
24
|
+
|
25
|
+
|
26
|
+
contract StakingService is
|
27
|
+
Service,
|
28
|
+
IStakingService
|
29
|
+
{
|
30
|
+
// TODO decide and implement string spec for location calculation
|
31
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
|
32
|
+
bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
|
33
|
+
|
34
|
+
struct StakingServiceStorage {
|
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
|
+
function getDomain() public pure override returns(ObjectType) {
|
49
|
+
return STAKING();
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
function registerProtocolTarget()
|
54
|
+
external
|
55
|
+
virtual
|
56
|
+
{
|
57
|
+
uint256 protocolId = ChainNft(
|
58
|
+
getRegistry().getChainNftAddress()).PROTOCOL_NFT_ID();
|
59
|
+
|
60
|
+
NftId protocolNftId = NftIdLib.toNftId(protocolId);
|
61
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
62
|
+
protocolNftId,
|
63
|
+
PROTOCOL(),
|
64
|
+
1, // protocol is registered on mainnet
|
65
|
+
TargetManagerLib.getDefaultLockingPeriod(),
|
66
|
+
TargetManagerLib.getDefaultRewardRate());
|
67
|
+
|
68
|
+
emit LogStakingServiceProtocolTargetRegistered(protocolNftId);
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
function createInstanceTarget(
|
73
|
+
NftId targetNftId,
|
74
|
+
Seconds initialLockingPeriod,
|
75
|
+
UFixed initialRewardRate
|
76
|
+
)
|
77
|
+
external
|
78
|
+
virtual
|
79
|
+
// restricted // TODO re-enable once services have stable roles
|
80
|
+
{
|
81
|
+
uint256 chainId = block.chainid;
|
82
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
83
|
+
targetNftId,
|
84
|
+
INSTANCE(),
|
85
|
+
chainId,
|
86
|
+
initialLockingPeriod,
|
87
|
+
initialRewardRate);
|
88
|
+
|
89
|
+
emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
|
90
|
+
}
|
91
|
+
|
92
|
+
function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
|
93
|
+
external
|
94
|
+
virtual
|
95
|
+
onlyNftOwner(targetNftId)
|
96
|
+
{
|
97
|
+
_getStakingServiceStorage()._staking.setLockingPeriod(
|
98
|
+
targetNftId, lockingPeriod);
|
99
|
+
}
|
100
|
+
|
101
|
+
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
102
|
+
external
|
103
|
+
virtual
|
104
|
+
onlyNftOwner(targetNftId)
|
105
|
+
{
|
106
|
+
_getStakingServiceStorage()._staking.setRewardRate(
|
107
|
+
targetNftId, rewardRate);
|
108
|
+
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
/// @dev creates a new stake to the specified target nft id with the provided dip amount
|
113
|
+
/// the target nft id must have been registered as an active staking target prior to this call
|
114
|
+
/// the sender of this transaction becomes the stake owner via the minted nft.
|
115
|
+
/// to create the new stake balance and allowance of the staker need to cover the dip amount
|
116
|
+
/// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
|
117
|
+
/// this is a permissionless function.
|
118
|
+
function create(
|
119
|
+
NftId targetNftId,
|
120
|
+
Amount dipAmount
|
121
|
+
)
|
122
|
+
external
|
123
|
+
virtual
|
124
|
+
// restricted // TODO re-enable once services have stable roles
|
125
|
+
returns (
|
126
|
+
NftId stakeNftId
|
127
|
+
)
|
128
|
+
{
|
129
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
130
|
+
StakingReader stakingReader = $._staking.getStakingReader();
|
131
|
+
address stakeOwner = msg.sender;
|
132
|
+
|
133
|
+
StakeManagerLib.checkActiveTarget(
|
134
|
+
stakingReader,
|
135
|
+
targetNftId);
|
136
|
+
|
137
|
+
// register new stake object with registry
|
138
|
+
stakeNftId = $._registryService.registerStake(
|
139
|
+
IRegistry.ObjectInfo({
|
140
|
+
nftId: NftIdLib.zero(),
|
141
|
+
parentNftId: targetNftId,
|
142
|
+
objectType: STAKE(),
|
143
|
+
isInterceptor: false,
|
144
|
+
objectAddress: address(0),
|
145
|
+
initialOwner: stakeOwner,
|
146
|
+
data: ""
|
147
|
+
}));
|
148
|
+
|
149
|
+
// create stake info with staking
|
150
|
+
$._staking.registerStake(
|
151
|
+
stakeNftId,
|
152
|
+
targetNftId,
|
153
|
+
dipAmount);
|
154
|
+
|
155
|
+
// collect staked dip by staking
|
156
|
+
$._staking.collectDipAmount(
|
157
|
+
stakeOwner,
|
158
|
+
dipAmount);
|
159
|
+
|
160
|
+
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
161
|
+
}
|
162
|
+
|
163
|
+
|
164
|
+
function stake(
|
165
|
+
NftId stakeNftId,
|
166
|
+
Amount dipAmount
|
167
|
+
)
|
168
|
+
external
|
169
|
+
virtual
|
170
|
+
// restricted // TODO re-enable once services have stable roles
|
171
|
+
onlyNftOwner(stakeNftId)
|
172
|
+
{
|
173
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
174
|
+
StakingReader stakingReader = $._staking.getStakingReader();
|
175
|
+
address stakeOwner = msg.sender;
|
176
|
+
|
177
|
+
// add additional staked dips by staking
|
178
|
+
$._staking.stake(
|
179
|
+
stakeNftId,
|
180
|
+
dipAmount);
|
181
|
+
|
182
|
+
// collect staked dip by staking
|
183
|
+
$._staking.collectDipAmount(
|
184
|
+
stakeOwner,
|
185
|
+
dipAmount);
|
186
|
+
|
187
|
+
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount);
|
188
|
+
}
|
189
|
+
|
190
|
+
|
191
|
+
function restake(
|
192
|
+
NftId stakeNftId
|
193
|
+
)
|
194
|
+
external
|
195
|
+
virtual
|
196
|
+
// restricted // TODO re-enable once services have stable roles
|
197
|
+
onlyNftOwner(stakeNftId)
|
198
|
+
{
|
199
|
+
// restake all rewards as additional stakes
|
200
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
201
|
+
$._staking.restake(stakeNftId);
|
202
|
+
}
|
203
|
+
|
204
|
+
|
205
|
+
function restakeToNewTarget(
|
206
|
+
NftId stakeNftId,
|
207
|
+
NftId newTargetNftId
|
208
|
+
)
|
209
|
+
external
|
210
|
+
virtual
|
211
|
+
// restricted // TODO re-enable once services have stable roles
|
212
|
+
onlyNftOwner(stakeNftId)
|
213
|
+
returns (
|
214
|
+
NftId newStakeNftId
|
215
|
+
)
|
216
|
+
{
|
217
|
+
// TODO implement
|
218
|
+
}
|
219
|
+
|
220
|
+
|
221
|
+
function unstake(
|
222
|
+
NftId stakeNftId,
|
223
|
+
Amount amount
|
224
|
+
)
|
225
|
+
external
|
226
|
+
virtual
|
227
|
+
{
|
228
|
+
|
229
|
+
}
|
230
|
+
|
231
|
+
|
232
|
+
function updateRewards(
|
233
|
+
NftId stakeNftId
|
234
|
+
)
|
235
|
+
external
|
236
|
+
// unpermissioned, anybody may call this function
|
237
|
+
// TODO consider to add restricted (just to be able to disable function when target is disabled)
|
238
|
+
{
|
239
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
240
|
+
$._staking.updateRewards(stakeNftId);
|
241
|
+
|
242
|
+
emit LogStakingServiceRewardsUpdated(stakeNftId);
|
243
|
+
}
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
function increaseTotalValueLocked(
|
248
|
+
NftId targetNftId,
|
249
|
+
address token,
|
250
|
+
Amount amount
|
251
|
+
)
|
252
|
+
external
|
253
|
+
virtual
|
254
|
+
returns (Amount totalValueLocked)
|
255
|
+
{
|
256
|
+
|
257
|
+
}
|
258
|
+
|
259
|
+
|
260
|
+
function decreaseTotalValueLocked(
|
261
|
+
NftId targetNftId,
|
262
|
+
address token,
|
263
|
+
Amount amount
|
264
|
+
)
|
265
|
+
external
|
266
|
+
virtual
|
267
|
+
returns (Amount totalValueLocked)
|
268
|
+
{
|
269
|
+
|
270
|
+
}
|
271
|
+
|
272
|
+
|
273
|
+
function setTotalValueLocked(
|
274
|
+
NftId targetNftId,
|
275
|
+
address token,
|
276
|
+
Amount amount
|
277
|
+
)
|
278
|
+
external
|
279
|
+
virtual
|
280
|
+
{
|
281
|
+
|
282
|
+
}
|
283
|
+
|
284
|
+
|
285
|
+
function getDipToken()
|
286
|
+
external
|
287
|
+
virtual
|
288
|
+
returns (IERC20Metadata dip)
|
289
|
+
{
|
290
|
+
return _getStakingServiceStorage()._dip;
|
291
|
+
}
|
292
|
+
|
293
|
+
|
294
|
+
function getTokenHandler()
|
295
|
+
external
|
296
|
+
virtual
|
297
|
+
returns (TokenHandler tokenHandler)
|
298
|
+
{
|
299
|
+
return _getStakingServiceStorage()._tokenHandler;
|
300
|
+
}
|
301
|
+
|
302
|
+
|
303
|
+
function getStaking()
|
304
|
+
external
|
305
|
+
virtual
|
306
|
+
returns (IStaking staking)
|
307
|
+
{
|
308
|
+
return _getStakingServiceStorage()._staking;
|
309
|
+
}
|
310
|
+
|
311
|
+
|
312
|
+
function _initialize(
|
313
|
+
address owner,
|
314
|
+
bytes memory data
|
315
|
+
)
|
316
|
+
internal
|
317
|
+
virtual override
|
318
|
+
initializer()
|
319
|
+
{
|
320
|
+
(
|
321
|
+
address authority,
|
322
|
+
address registryAddress,
|
323
|
+
address stakingAddress
|
324
|
+
) = abi.decode(data, (address, address, address));
|
325
|
+
|
326
|
+
initializeService(registryAddress, authority, owner);
|
327
|
+
|
328
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
329
|
+
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
330
|
+
$._staking = _registerStaking(stakingAddress);
|
331
|
+
$._dip = $._staking.getToken();
|
332
|
+
$._tokenHandler = $._staking.getTokenHandler();
|
333
|
+
|
334
|
+
registerInterface(type(IStakingService).interfaceId);
|
335
|
+
}
|
336
|
+
|
337
|
+
|
338
|
+
function _registerStaking(
|
339
|
+
address stakingAddress
|
340
|
+
)
|
341
|
+
internal
|
342
|
+
returns (IStaking staking)
|
343
|
+
{
|
344
|
+
// check if provided staking contract is already registred
|
345
|
+
// staking contract may have been already registered by a previous major relase
|
346
|
+
IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
|
347
|
+
if (stakingInfo.nftId.gtz()) {
|
348
|
+
// registered object but wrong type
|
349
|
+
if (stakingInfo.objectType != STAKING()) {
|
350
|
+
revert ErrorStakingServiceNotStaking(stakingAddress);
|
351
|
+
}
|
352
|
+
|
353
|
+
// return correctly registered staking contract
|
354
|
+
return IStaking(stakingAddress);
|
355
|
+
}
|
356
|
+
|
357
|
+
// check that contract implements IStaking
|
358
|
+
if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
|
359
|
+
revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
|
360
|
+
}
|
361
|
+
|
362
|
+
address owner = msg.sender;
|
363
|
+
_getStakingServiceStorage()._registryService.registerStaking(
|
364
|
+
IRegisterable(stakingAddress),
|
365
|
+
owner);
|
366
|
+
|
367
|
+
return IStaking(stakingAddress);
|
368
|
+
}
|
369
|
+
|
370
|
+
|
371
|
+
function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
|
372
|
+
assembly {
|
373
|
+
$.slot := STAKING_SERVICE_LOCATION_V1
|
374
|
+
}
|
375
|
+
}
|
376
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
6
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
7
|
+
import {StakingService} from "./StakingService.sol";
|
8
|
+
|
9
|
+
contract StakingServiceManager is
|
10
|
+
ProxyManager
|
11
|
+
{
|
12
|
+
|
13
|
+
StakingService private _stakingService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with service implementation
|
16
|
+
constructor(
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
21
|
+
ProxyManager(registryAddress)
|
22
|
+
{
|
23
|
+
StakingService svc = new StakingService();
|
24
|
+
bytes memory data = abi.encode(
|
25
|
+
authority,
|
26
|
+
registryAddress,
|
27
|
+
IRegistry(registryAddress).getStakingAddress());
|
28
|
+
IVersionable versionable = deployDetermenistic(
|
29
|
+
address(svc),
|
30
|
+
data,
|
31
|
+
salt);
|
32
|
+
|
33
|
+
_stakingService = StakingService(address(versionable));
|
34
|
+
_stakingService.registerProtocolTarget();
|
35
|
+
}
|
36
|
+
|
37
|
+
//--- view functions ----------------------------------------------------//
|
38
|
+
function getStakingService()
|
39
|
+
external
|
40
|
+
view
|
41
|
+
returns (StakingService)
|
42
|
+
{
|
43
|
+
return _stakingService;
|
44
|
+
}
|
45
|
+
}
|