@etherisc/gif-next 0.0.2-fca9315-260 → 0.0.2-fd4931b-974
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 +8 -13
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +366 -367
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1594
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +285 -211
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +412 -2526
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +480 -166
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +610 -421
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +438 -399
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +348 -106
- 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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
- 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 +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
- 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/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +257 -288
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +565 -186
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +211 -212
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +237 -302
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +530 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +351 -311
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +112 -172
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +857 -214
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +158 -13
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +337 -225
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +277 -30
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +74 -61
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +465 -267
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +334 -93
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +634 -69
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +448 -50
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +321 -280
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +215 -226
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +205 -228
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +203 -160
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
- 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 +27 -29
- 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 +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -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 +314 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +102 -35
- 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 +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -74
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -60
- 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 +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- 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/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1770 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → staking/IStakingService.sol/IStakingService.json} +261 -238
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2500 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +844 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +960 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +694 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +308 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- 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/{types → type}/Blocknumber.sol/BlocknumberLib.json +16 -3
- 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/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- 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/{types → type}/Key32.sol/Key32Lib.json +3 -3
- 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/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- 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/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +148 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +263 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -12
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +49 -44
- package/contracts/instance/IInstanceService.sol +57 -15
- package/contracts/instance/Instance.sol +138 -179
- package/contracts/instance/InstanceAccessManager.sol +406 -161
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +135 -62
- package/contracts/instance/InstanceService.sol +240 -305
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
- package/contracts/instance/module/IAccess.sol +24 -18
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- 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 +15 -1
- package/contracts/registry/IRegistry.sol +38 -18
- package/contracts/registry/IRegistryService.sol +41 -38
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +193 -82
- package/contracts/registry/RegistryAccessManager.sol +72 -121
- package/contracts/registry/RegistryService.sol +164 -98
- package/contracts/registry/RegistryServiceManager.sol +28 -18
- package/contracts/registry/ReleaseManager.sol +390 -192
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +263 -56
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +595 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InstanceLinkedComponent.sol +145 -0
- package/contracts/shared/KeyValueStore.sol +130 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
- package/contracts/shared/NftIdSetManager.sol +69 -0
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +101 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +19 -30
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +37 -20
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +113 -0
- package/contracts/staking/IStakingService.sol +122 -0
- package/contracts/staking/Staking.sol +348 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +92 -0
- package/contracts/staking/StakingService.sol +294 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/TargetManagerLib.sol +141 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +32 -22
- package/contracts/{types → type}/NftId.sol +17 -11
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +26 -9
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +63 -0
- package/contracts/{types → type}/StateId.sol +24 -6
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- 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 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/Component.sol +0 -216
- package/contracts/components/Distribution.sol +0 -150
- package/contracts/components/IComponent.sol +0 -43
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -60
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -227
- package/contracts/components/Product.sol +0 -265
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -293
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -106
- package/contracts/instance/service/IBundleService.sol +0 -44
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -94
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -538
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -110
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -234
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,294 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
6
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
7
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
10
|
+
import {IStaking} from "./IStaking.sol";
|
11
|
+
import {IStakingService} from "./IStakingService.sol";
|
12
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
13
|
+
import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Seconds} from "../type/Seconds.sol";
|
15
|
+
import {Service} from "../shared/Service.sol";
|
16
|
+
import {StakingReader} from "./StakingReader.sol";
|
17
|
+
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
18
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
20
|
+
|
21
|
+
|
22
|
+
contract StakingService is
|
23
|
+
Service,
|
24
|
+
IStakingService
|
25
|
+
{
|
26
|
+
// TODO decide and implement string spec for location calculation
|
27
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
|
28
|
+
bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
|
29
|
+
|
30
|
+
struct StakingServiceStorage {
|
31
|
+
RegistryService _registryService;
|
32
|
+
IStaking _staking;
|
33
|
+
}
|
34
|
+
|
35
|
+
function getDomain() public pure override returns(ObjectType) {
|
36
|
+
return STAKING();
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
function registerProtocolTarget()
|
41
|
+
external
|
42
|
+
virtual
|
43
|
+
{
|
44
|
+
uint256 protocolId = ChainNft(
|
45
|
+
getRegistry().getChainNftAddress()).PROTOCOL_NFT_ID();
|
46
|
+
|
47
|
+
NftId protocolNftId = NftIdLib.toNftId(protocolId);
|
48
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
49
|
+
protocolNftId,
|
50
|
+
PROTOCOL(),
|
51
|
+
1, // protocol is registered on mainnet
|
52
|
+
TargetManagerLib.getDefaultLockingPeriod(),
|
53
|
+
TargetManagerLib.getDefaultRewardRate());
|
54
|
+
}
|
55
|
+
|
56
|
+
// TODO cleanup
|
57
|
+
event LogDebug(uint256 id, string message);
|
58
|
+
|
59
|
+
function createInstanceTarget(
|
60
|
+
NftId targetNftId,
|
61
|
+
Seconds initialLockingPeriod,
|
62
|
+
UFixed initialRewardRate
|
63
|
+
)
|
64
|
+
external
|
65
|
+
virtual
|
66
|
+
// restricted // TODO re-enable once services have stable roles
|
67
|
+
{
|
68
|
+
emit LogDebug(1, "before chainid");
|
69
|
+
|
70
|
+
uint256 chainId = block.chainid;
|
71
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
72
|
+
targetNftId,
|
73
|
+
INSTANCE(),
|
74
|
+
chainId,
|
75
|
+
initialLockingPeriod,
|
76
|
+
initialRewardRate);
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
/// @dev creates a new stake to the specified target nft id with the provided dip amount
|
81
|
+
/// the target nft id must have been registered as an active staking target prior to this call
|
82
|
+
/// the sender of this transaction becomes the stake owner via the minted nft.
|
83
|
+
/// to create the new stake balance and allowance of the staker need to cover the dip amount
|
84
|
+
/// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
|
85
|
+
/// this is a permissionless function.
|
86
|
+
function create(
|
87
|
+
NftId targetNftId,
|
88
|
+
Amount dipAmount
|
89
|
+
)
|
90
|
+
external
|
91
|
+
virtual
|
92
|
+
returns (
|
93
|
+
NftId stakeNftId
|
94
|
+
)
|
95
|
+
{
|
96
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
97
|
+
StakingReader stakingReader = $._staking.getStakingReader();
|
98
|
+
address stakeOwner = msg.sender;
|
99
|
+
|
100
|
+
// check target nft id
|
101
|
+
if (targetNftId.eqz()) {
|
102
|
+
revert ErrorStakingServiceZeroTargetNftId();
|
103
|
+
}
|
104
|
+
|
105
|
+
if (!stakingReader.isTarget(targetNftId)) {
|
106
|
+
revert ErrorStakingServiceNotTargetNftId(targetNftId);
|
107
|
+
}
|
108
|
+
|
109
|
+
if (!stakingReader.isActive(targetNftId)) {
|
110
|
+
revert ErrorStakingServiceNotActiveTargetNftId(targetNftId);
|
111
|
+
}
|
112
|
+
|
113
|
+
// check balance and allowance
|
114
|
+
//TODO implement
|
115
|
+
|
116
|
+
// collect staked dip amount
|
117
|
+
//TODO implement
|
118
|
+
|
119
|
+
// register new stake object with registry
|
120
|
+
stakeNftId = $._registryService.registerStake(
|
121
|
+
IRegistry.ObjectInfo({
|
122
|
+
nftId: NftIdLib.zero(),
|
123
|
+
parentNftId: targetNftId,
|
124
|
+
objectType: STAKE(),
|
125
|
+
isInterceptor: false,
|
126
|
+
objectAddress: address(0),
|
127
|
+
initialOwner: stakeOwner,
|
128
|
+
data: ""
|
129
|
+
}));
|
130
|
+
|
131
|
+
// create stake info in staking
|
132
|
+
$._staking.create(
|
133
|
+
stakeNftId,
|
134
|
+
targetNftId,
|
135
|
+
dipAmount);
|
136
|
+
|
137
|
+
emit LogStakingServiceNewStakeCreated(stakeNftId, stakeOwner, targetNftId, dipAmount);
|
138
|
+
}
|
139
|
+
|
140
|
+
|
141
|
+
function stake(
|
142
|
+
NftId stakeNftId,
|
143
|
+
Amount amount
|
144
|
+
)
|
145
|
+
external
|
146
|
+
virtual
|
147
|
+
{
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
|
152
|
+
function unstake(
|
153
|
+
NftId stakeNftId,
|
154
|
+
Amount amount
|
155
|
+
)
|
156
|
+
external
|
157
|
+
virtual
|
158
|
+
{
|
159
|
+
|
160
|
+
}
|
161
|
+
|
162
|
+
function close(
|
163
|
+
NftId stakeNftId
|
164
|
+
)
|
165
|
+
external
|
166
|
+
virtual
|
167
|
+
{
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
function reStake(
|
172
|
+
NftId stakeNftId,
|
173
|
+
NftId newTargetNftId
|
174
|
+
)
|
175
|
+
external
|
176
|
+
virtual
|
177
|
+
returns (
|
178
|
+
NftId newStakeNftId,
|
179
|
+
Timestamp unlockedAt
|
180
|
+
)
|
181
|
+
{
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
function increaseTotalValueLocked(
|
187
|
+
NftId targetNftId,
|
188
|
+
address token,
|
189
|
+
Amount amount
|
190
|
+
)
|
191
|
+
external
|
192
|
+
virtual
|
193
|
+
returns (Amount totalValueLocked)
|
194
|
+
{
|
195
|
+
|
196
|
+
}
|
197
|
+
|
198
|
+
|
199
|
+
function decreaseTotalValueLocked(
|
200
|
+
NftId targetNftId,
|
201
|
+
address token,
|
202
|
+
Amount amount
|
203
|
+
)
|
204
|
+
external
|
205
|
+
virtual
|
206
|
+
returns (Amount totalValueLocked)
|
207
|
+
{
|
208
|
+
|
209
|
+
}
|
210
|
+
|
211
|
+
|
212
|
+
function setTotalValueLocked(
|
213
|
+
NftId targetNftId,
|
214
|
+
address token,
|
215
|
+
Amount amount
|
216
|
+
)
|
217
|
+
external
|
218
|
+
virtual
|
219
|
+
{
|
220
|
+
|
221
|
+
}
|
222
|
+
|
223
|
+
|
224
|
+
function getStaking()
|
225
|
+
external
|
226
|
+
virtual
|
227
|
+
returns (IStaking staking)
|
228
|
+
{
|
229
|
+
return _getStakingServiceStorage()._staking;
|
230
|
+
}
|
231
|
+
|
232
|
+
|
233
|
+
function _initialize(
|
234
|
+
address owner,
|
235
|
+
bytes memory data
|
236
|
+
)
|
237
|
+
internal
|
238
|
+
virtual override
|
239
|
+
initializer()
|
240
|
+
{
|
241
|
+
(
|
242
|
+
address registryAddress,
|
243
|
+
address stakingAddress
|
244
|
+
) = abi.decode(data, (address, address));
|
245
|
+
|
246
|
+
initializeService(registryAddress, address(0), owner);
|
247
|
+
|
248
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
249
|
+
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
250
|
+
$._staking = _registerStaking(stakingAddress);
|
251
|
+
|
252
|
+
registerInterface(type(IStakingService).interfaceId);
|
253
|
+
}
|
254
|
+
|
255
|
+
|
256
|
+
function _registerStaking(
|
257
|
+
address stakingAddress
|
258
|
+
)
|
259
|
+
internal
|
260
|
+
returns (IStaking staking)
|
261
|
+
{
|
262
|
+
// check if provided staking contract is already registred
|
263
|
+
// staking contract may have been already registered by a previous major relase
|
264
|
+
IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
|
265
|
+
if (stakingInfo.nftId.gtz()) {
|
266
|
+
// registered object but wrong type
|
267
|
+
if (stakingInfo.objectType != STAKING()) {
|
268
|
+
revert ErrorStakingServiceNotStaking(stakingAddress);
|
269
|
+
}
|
270
|
+
|
271
|
+
// return correctly registered staking contract
|
272
|
+
return IStaking(stakingAddress);
|
273
|
+
}
|
274
|
+
|
275
|
+
// check that contract implements IStaking
|
276
|
+
if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
|
277
|
+
revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
|
278
|
+
}
|
279
|
+
|
280
|
+
address owner = msg.sender;
|
281
|
+
_getStakingServiceStorage()._registryService.registerStaking(
|
282
|
+
IRegisterable(stakingAddress),
|
283
|
+
owner);
|
284
|
+
|
285
|
+
return IStaking(stakingAddress);
|
286
|
+
}
|
287
|
+
|
288
|
+
|
289
|
+
function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
|
290
|
+
assembly {
|
291
|
+
$.slot := STAKING_SERVICE_LOCATION_V1
|
292
|
+
}
|
293
|
+
}
|
294
|
+
}
|
@@ -0,0 +1,44 @@
|
|
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 registryAddress,
|
18
|
+
bytes32 salt
|
19
|
+
)
|
20
|
+
ProxyManager(registryAddress)
|
21
|
+
{
|
22
|
+
StakingService svc = new StakingService();
|
23
|
+
bytes memory data = abi.encode(
|
24
|
+
registryAddress,
|
25
|
+
IRegistry(registryAddress).getStakingAddress());
|
26
|
+
|
27
|
+
IVersionable versionable = deployDetermenistic(
|
28
|
+
address(svc),
|
29
|
+
data,
|
30
|
+
salt);
|
31
|
+
|
32
|
+
_stakingService = StakingService(address(versionable));
|
33
|
+
_stakingService.registerProtocolTarget();
|
34
|
+
}
|
35
|
+
|
36
|
+
//--- view functions ----------------------------------------------------//
|
37
|
+
function getStakingService()
|
38
|
+
external
|
39
|
+
view
|
40
|
+
returns (StakingService)
|
41
|
+
{
|
42
|
+
return _stakingService;
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,141 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
+
import {Component} from "../shared/Component.sol";
|
6
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
8
|
+
import {IStaking} from "./IStaking.sol";
|
9
|
+
import {Key32} from "../type/Key32.sol";
|
10
|
+
import {NftId} from "../type/NftId.sol";
|
11
|
+
import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
|
12
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
13
|
+
import {StakingReader} from "./StakingReader.sol";
|
14
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
15
|
+
|
16
|
+
|
17
|
+
library TargetManagerLib {
|
18
|
+
|
19
|
+
function updateLockingPeriod(
|
20
|
+
IStaking staking,
|
21
|
+
NftId targetNftId,
|
22
|
+
Seconds lockingPeriod
|
23
|
+
)
|
24
|
+
external
|
25
|
+
returns (
|
26
|
+
Key32 targetKey,
|
27
|
+
bytes memory targetData
|
28
|
+
)
|
29
|
+
|
30
|
+
{
|
31
|
+
StakingReader reader = staking.getStakingReader();
|
32
|
+
|
33
|
+
// check target exists
|
34
|
+
if(!reader.isTarget(targetNftId)) {
|
35
|
+
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
36
|
+
}
|
37
|
+
|
38
|
+
checkLockingPeriod(targetNftId, lockingPeriod);
|
39
|
+
|
40
|
+
IStaking.TargetInfo memory info = reader.getTargetInfo(targetNftId);
|
41
|
+
info.lockingPeriod = lockingPeriod;
|
42
|
+
|
43
|
+
targetKey = toTargetKey(targetNftId);
|
44
|
+
targetData = abi.encode(info);
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
function checkTargetParameters(
|
49
|
+
IRegistry registry,
|
50
|
+
StakingReader stakingReader,
|
51
|
+
NftId targetNftId,
|
52
|
+
ObjectType expectedObjectType,
|
53
|
+
Seconds initialLockingPeriod,
|
54
|
+
UFixed initialRewardRate
|
55
|
+
)
|
56
|
+
external
|
57
|
+
{
|
58
|
+
// target nft id must not be zero
|
59
|
+
if (targetNftId.eqz()) {
|
60
|
+
revert IStaking.ErrorStakingTargetNftIdZero();
|
61
|
+
}
|
62
|
+
|
63
|
+
// only accept "new" targets to be registered
|
64
|
+
if (stakingReader.isTarget(targetNftId)) {
|
65
|
+
revert IStaking.ErrorStakingTargetAlreadyRegistered(targetNftId);
|
66
|
+
}
|
67
|
+
|
68
|
+
// target object type must be allowed
|
69
|
+
if (!isTargetTypeSupported(expectedObjectType)) {
|
70
|
+
revert IStaking.ErrorStakingTargetTypeNotSupported(targetNftId, expectedObjectType);
|
71
|
+
}
|
72
|
+
|
73
|
+
checkLockingPeriod(targetNftId, initialLockingPeriod);
|
74
|
+
checkRewardRate(targetNftId, initialRewardRate);
|
75
|
+
|
76
|
+
// target nft id must be known and registered with the expected object type
|
77
|
+
if (!registry.isRegistered(targetNftId)) {
|
78
|
+
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
79
|
+
} else {
|
80
|
+
// check that expected object type matches with registered object type
|
81
|
+
ObjectType actualObjectType = registry.getObjectInfo(targetNftId).objectType;
|
82
|
+
if (actualObjectType != expectedObjectType) {
|
83
|
+
revert IStaking.ErrorStakingTargetUnexpectedObjectType(targetNftId, expectedObjectType, actualObjectType);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
function isTargetTypeSupported(ObjectType objectType) public pure returns (bool isSupported) {
|
90
|
+
if(objectType == PROTOCOL()) { return true; }
|
91
|
+
if(objectType == INSTANCE()) { return true; }
|
92
|
+
|
93
|
+
return false;
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
function checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod) internal view {
|
98
|
+
// check locking period is > 0
|
99
|
+
if (lockingPeriod.eqz()) {
|
100
|
+
revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
|
101
|
+
}
|
102
|
+
|
103
|
+
// check locking period <= max locking period
|
104
|
+
if (lockingPeriod > getMaxLockingPeriod()) {
|
105
|
+
revert IStaking.ErrorStakingLockingPeriodTooLong(targetNftId, getMaxLockingPeriod(), lockingPeriod);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
function checkRewardRate(NftId targetNftId, UFixed rewardRate) internal view {
|
111
|
+
// check reward rate <= max reward rate
|
112
|
+
if (rewardRate > getMaxRewardRate()) {
|
113
|
+
revert IStaking.ErrorStakingRewardRateTooHigh(targetNftId, getMaxRewardRate(), rewardRate);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
function getMaxLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
|
119
|
+
return SecondsLib.toSeconds(5 * 365 * 24 * 3600);
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
function getDefaultLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
|
124
|
+
return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
|
129
|
+
return UFixedLib.toUFixed(33, -2);
|
130
|
+
}
|
131
|
+
|
132
|
+
|
133
|
+
function getDefaultRewardRate() public pure returns (UFixed defaultRewardRate) {
|
134
|
+
return UFixedLib.toUFixed(5, -2);
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
function toTargetKey(NftId targetNftId) public pure returns (Key32 targetKey) {
|
139
|
+
return targetNftId.toKey32(TARGET());
|
140
|
+
}
|
141
|
+
}
|
@@ -0,0 +1,114 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {UFixed, UFixedLib} from "./UFixed.sol";
|
5
|
+
|
6
|
+
type Amount is uint96;
|
7
|
+
|
8
|
+
using {
|
9
|
+
addAmount as +,
|
10
|
+
subAmount as -,
|
11
|
+
eqAmount as ==,
|
12
|
+
nqAmount as !=,
|
13
|
+
ltAmount as <,
|
14
|
+
gtAmount as >,
|
15
|
+
AmountLib.eq,
|
16
|
+
AmountLib.eqz,
|
17
|
+
AmountLib.gtz,
|
18
|
+
AmountLib.toInt,
|
19
|
+
AmountLib.add,
|
20
|
+
AmountLib.toUFixed
|
21
|
+
} for Amount global;
|
22
|
+
|
23
|
+
function addAmount(Amount a, Amount b) pure returns (Amount) {
|
24
|
+
return AmountLib.add(a, b);
|
25
|
+
}
|
26
|
+
|
27
|
+
function subAmount(Amount a, Amount b) pure returns (Amount) {
|
28
|
+
return AmountLib.sub(a, b);
|
29
|
+
}
|
30
|
+
|
31
|
+
function eqAmount(Amount a, Amount b) pure returns (bool) {
|
32
|
+
return AmountLib.eq(a, b);
|
33
|
+
}
|
34
|
+
|
35
|
+
function nqAmount(Amount a, Amount b) pure returns (bool) {
|
36
|
+
return !AmountLib.eq(a, b);
|
37
|
+
}
|
38
|
+
|
39
|
+
function ltAmount(Amount a, Amount b) pure returns (bool) {
|
40
|
+
return AmountLib.lt(a, b);
|
41
|
+
}
|
42
|
+
|
43
|
+
function gtAmount(Amount a, Amount b) pure returns (bool) {
|
44
|
+
return AmountLib.gt(a, b);
|
45
|
+
}
|
46
|
+
|
47
|
+
library AmountLib {
|
48
|
+
|
49
|
+
error ErrorAmountLibValueTooBig(uint256 amount);
|
50
|
+
|
51
|
+
function zero() public pure returns (Amount) {
|
52
|
+
return Amount.wrap(0);
|
53
|
+
}
|
54
|
+
|
55
|
+
function max() public pure returns (Amount) {
|
56
|
+
return Amount.wrap(_max());
|
57
|
+
}
|
58
|
+
|
59
|
+
/// @dev converts the uint amount into Amount
|
60
|
+
/// function reverts if value is exceeding max Amount value
|
61
|
+
function toAmount(uint256 amount) public pure returns (Amount) {
|
62
|
+
if(amount > _max()) {
|
63
|
+
revert ErrorAmountLibValueTooBig(amount);
|
64
|
+
}
|
65
|
+
|
66
|
+
return Amount.wrap(uint96(amount));
|
67
|
+
}
|
68
|
+
|
69
|
+
/// @dev return true if amount equals 0
|
70
|
+
function eqz(Amount amount) public pure returns (bool) {
|
71
|
+
return Amount.unwrap(amount) == 0;
|
72
|
+
}
|
73
|
+
|
74
|
+
/// @dev return true if amount1 equals amount2
|
75
|
+
function eq(Amount amount1, Amount amount2) public pure returns (bool) {
|
76
|
+
return Amount.unwrap(amount1) == Amount.unwrap(amount2);
|
77
|
+
}
|
78
|
+
|
79
|
+
/// @dev return true if amount a1 is smaller than a2
|
80
|
+
function lt(Amount a1, Amount a2) public pure returns (bool) {
|
81
|
+
return Amount.unwrap(a1) < Amount.unwrap(a2);
|
82
|
+
}
|
83
|
+
|
84
|
+
/// @dev return true if amount a1 is larger than a2
|
85
|
+
function gt(Amount a1, Amount a2) public pure returns (bool) {
|
86
|
+
return Amount.unwrap(a1) > Amount.unwrap(a2);
|
87
|
+
}
|
88
|
+
|
89
|
+
/// @dev return true if amount is larger than 0
|
90
|
+
function gtz(Amount amount) public pure returns (bool) {
|
91
|
+
return Amount.unwrap(amount) > 0;
|
92
|
+
}
|
93
|
+
|
94
|
+
function add(Amount a1, Amount a2) public pure returns (Amount) {
|
95
|
+
return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
|
96
|
+
}
|
97
|
+
|
98
|
+
function sub(Amount a1, Amount a2) public pure returns (Amount) {
|
99
|
+
return Amount.wrap(Amount.unwrap(a1) - Amount.unwrap(a2));
|
100
|
+
}
|
101
|
+
|
102
|
+
function toInt(Amount amount) public pure returns (uint256) {
|
103
|
+
return uint256(uint96(Amount.unwrap(amount)));
|
104
|
+
}
|
105
|
+
|
106
|
+
function toUFixed(Amount amount) public pure returns (UFixed) {
|
107
|
+
return UFixedLib.toUFixed(Amount.unwrap(amount));
|
108
|
+
}
|
109
|
+
|
110
|
+
function _max() internal pure returns (uint96) {
|
111
|
+
// IMPORTANT: type nees to match with actual definition for Amount
|
112
|
+
return type(uint96).max;
|
113
|
+
}
|
114
|
+
}
|
@@ -49,9 +49,10 @@ function toBlocknumber(uint256 blocknum) pure returns (Blocknumber) {
|
|
49
49
|
}
|
50
50
|
|
51
51
|
function blockBlocknumber() view returns (Blocknumber) {
|
52
|
-
return
|
52
|
+
return BlocknumberLib.currentBlocknumber();
|
53
53
|
}
|
54
54
|
|
55
|
+
// TODO move to BlocknumberLib and rename to zero()
|
55
56
|
/// @dev Return the Blocknumber zero (0)
|
56
57
|
function zeroBlocknumber() pure returns (Blocknumber) {
|
57
58
|
return toBlocknumber(0);
|
@@ -63,6 +64,11 @@ function blockNumber() view returns (Blocknumber) {
|
|
63
64
|
}
|
64
65
|
|
65
66
|
library BlocknumberLib {
|
67
|
+
/// @dev returns the current Blocknumber
|
68
|
+
function currentBlocknumber() public view returns (Blocknumber) {
|
69
|
+
return Blocknumber.wrap(uint32(block.number));
|
70
|
+
}
|
71
|
+
|
66
72
|
/// @dev return true if Blocknumber a is greater than Blocknumber b
|
67
73
|
function gt(
|
68
74
|
Blocknumber a,
|
@@ -0,0 +1,75 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
// uint16 allows for 65'535 claims per policy
|
5
|
+
type ClaimId is uint16;
|
6
|
+
|
7
|
+
import {CLAIM} from "./ObjectType.sol";
|
8
|
+
import {Key32, KeyId, Key32Lib} from "./Key32.sol";
|
9
|
+
import {NftId} from "./NftId.sol";
|
10
|
+
|
11
|
+
// type bindings
|
12
|
+
using {
|
13
|
+
eqClaimId as ==,
|
14
|
+
neClaimId as !=,
|
15
|
+
ClaimIdLib.eqz,
|
16
|
+
ClaimIdLib.gtz,
|
17
|
+
ClaimIdLib.toInt,
|
18
|
+
ClaimIdLib.toKey32
|
19
|
+
} for ClaimId global;
|
20
|
+
|
21
|
+
|
22
|
+
// pure free functions for operators
|
23
|
+
function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
|
24
|
+
return ClaimId.unwrap(a) == ClaimId.unwrap(b);
|
25
|
+
}
|
26
|
+
|
27
|
+
function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
|
28
|
+
return ClaimId.unwrap(a) != ClaimId.unwrap(b);
|
29
|
+
}
|
30
|
+
|
31
|
+
// library functions that operate on user defined type
|
32
|
+
library ClaimIdLib {
|
33
|
+
/// @dev claim id min value (0), use only for non-initialized values
|
34
|
+
function zero() public pure returns (ClaimId) {
|
35
|
+
return ClaimId.wrap(0);
|
36
|
+
}
|
37
|
+
/// @dev claim id max value (2**16-1), use only for non-initialized values
|
38
|
+
function max() public pure returns (ClaimId) {
|
39
|
+
return ClaimId.wrap(type(uint16).max);
|
40
|
+
}
|
41
|
+
|
42
|
+
/// @dev Converts an uint into a ClaimId.
|
43
|
+
function toClaimId(uint256 a) public pure returns (ClaimId) {
|
44
|
+
return ClaimId.wrap(uint16(a));
|
45
|
+
}
|
46
|
+
|
47
|
+
/// @dev Converts the ClaimId to a uint.
|
48
|
+
function toInt(ClaimId a) public pure returns (uint16) {
|
49
|
+
return uint16(ClaimId.unwrap(a));
|
50
|
+
}
|
51
|
+
|
52
|
+
/// @dev Converts the ClaimId and NftId to a Key32.
|
53
|
+
function toKey32(ClaimId claimId, NftId policyNftId) public pure returns (Key32) {
|
54
|
+
return Key32Lib.toKey32(CLAIM(), toKeyId(claimId, policyNftId));
|
55
|
+
}
|
56
|
+
|
57
|
+
/// @dev Converts the ClaimId and NftId to a Key32.
|
58
|
+
function toKeyId(ClaimId claimId, NftId policyNftId) public pure returns (KeyId) {
|
59
|
+
return KeyId.wrap(
|
60
|
+
bytes31(
|
61
|
+
bytes14(
|
62
|
+
uint112(
|
63
|
+
NftId.unwrap(policyNftId) << 16 + ClaimId.unwrap(claimId)))));
|
64
|
+
}
|
65
|
+
|
66
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
67
|
+
function gtz(ClaimId a) public pure returns (bool) {
|
68
|
+
return ClaimId.unwrap(a) > 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
/// @dev Returns true if the value is zero (== 0).
|
72
|
+
function eqz(ClaimId a) public pure returns (bool) {
|
73
|
+
return ClaimId.unwrap(a) == 0;
|
74
|
+
}
|
75
|
+
}
|