@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed1536c-164
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 +71 -14
- 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/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- 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 +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -776
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3065
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- 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 +504 -322
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +510 -378
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -123
- 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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
- 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 +71 -45
- 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/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +294 -349
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
- 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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
- 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/product/IPolicyService.sol/IPolicyService.json +701 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +257 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
- 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/product/Product.sol/Product.json +1391 -0
- 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 +389 -117
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +368 -222
- 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 +488 -182
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +438 -333
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -132
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -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 +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
- 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/shared/Component.sol/Component.json +890 -0
- 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/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
- 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/shared/IComponent.sol/IComponent.json +625 -0
- 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/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
- 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 -34
- 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 +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
- 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 +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
- 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 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
- 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 +185 -165
- 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 +1435 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -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 +2002 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -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/{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/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/{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/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- 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 +174 -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 +20 -20
- 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 +60 -31
- package/contracts/instance/IInstanceService.sol +66 -13
- package/contracts/instance/Instance.sol +149 -364
- package/contracts/instance/InstanceAccessManager.sol +432 -177
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +143 -83
- package/contracts/instance/InstanceService.sol +313 -141
- package/contracts/instance/InstanceServiceManager.sol +12 -25
- 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 +37 -21
- 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/Usdc.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 +14 -0
- package/contracts/registry/IRegistry.sol +76 -30
- package/contracts/registry/IRegistryService.sol +46 -28
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +369 -235
- package/contracts/registry/RegistryAccessManager.sol +196 -0
- package/contracts/registry/RegistryService.sol +113 -205
- package/contracts/registry/RegistryServiceManager.sol +34 -42
- package/contracts/registry/ReleaseManager.sol +563 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +300 -57
- 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 +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +7 -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 +65 -0
- package/contracts/shared/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +101 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +45 -23
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- 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 +502 -0
- package/contracts/staking/StakingManager.sol +65 -0
- package/contracts/staking/StakingReader.sol +147 -0
- package/contracts/staking/StakingService.sol +375 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +329 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +20 -2
- 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/type/NftIdSet.sol +62 -0
- 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 +71 -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/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -719
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- 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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
- 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/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- 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 -305
- 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 -600
- 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/Blocknumber.sol/BlocknumberLib.json +0 -174
- 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/NftIdSet.sol/LibNftIdSet.json +0 -10
- 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/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -159
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -242
- package/contracts/components/Product.sol +0 -284
- 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/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -124
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -44
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -88
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -194
- package/contracts/instance/service/PoolServiceManager.sol +0 -54
- package/contracts/instance/service/ProductService.sol +0 -543
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- 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 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- 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,329 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
|
+
|
6
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
8
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
9
|
+
import {Component} from "../shared/Component.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
12
|
+
import {IStaking} from "./IStaking.sol";
|
13
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
14
|
+
import {Key32} from "../type/Key32.sol";
|
15
|
+
import {KeyValueStore} from "../shared/KeyValueStore.sol";
|
16
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
17
|
+
import {LibNftIdSet} from "../type/NftIdSet.sol";
|
18
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
19
|
+
import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
|
20
|
+
import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
21
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
22
|
+
import {StakingReader} from "./StakingReader.sol";
|
23
|
+
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
24
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
25
|
+
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
26
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
27
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
28
|
+
import {Versionable} from "../shared/Versionable.sol";
|
29
|
+
|
30
|
+
|
31
|
+
contract StakingStore is
|
32
|
+
AccessManaged,
|
33
|
+
KeyValueStore
|
34
|
+
{
|
35
|
+
|
36
|
+
event LogStakingStoreStakesIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
|
37
|
+
event LogStakingStoreStakesDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
|
38
|
+
|
39
|
+
event LogStakingStoreRewardsIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
|
40
|
+
event LogStakingStoreRewardsDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
|
41
|
+
|
42
|
+
event LogStakingStoreRewardsRestaked(NftId nftId, Amount amount, Amount rewardAmount, Amount rewardIncrementAmount, Amount newBalance, Blocknumber lastUpdatedIn);
|
43
|
+
|
44
|
+
// creating and updating of balance
|
45
|
+
error ErrorStakingStoreBalanceAlreadyInitialized(NftId nftId);
|
46
|
+
error ErrorStakingStoreBalanceNotInitialized(NftId nftId);
|
47
|
+
|
48
|
+
// update balance
|
49
|
+
|
50
|
+
IRegistry private _registry;
|
51
|
+
NftIdSetManager private _targetManager;
|
52
|
+
StakingReader private _reader;
|
53
|
+
|
54
|
+
mapping(NftId nftId => Amount stakes) private _stakeBalance;
|
55
|
+
mapping(NftId nftId => Amount rewards) private _rewardBalance;
|
56
|
+
|
57
|
+
// TODO check if this is made redundant by *Info struct updates
|
58
|
+
mapping(NftId nftId => Timestamp lastUpdatedAt) private _lastUpdatedAt;
|
59
|
+
mapping(NftId nftId => Blocknumber lastUpdatedIn) private _lastUpdatedIn;
|
60
|
+
|
61
|
+
|
62
|
+
constructor(
|
63
|
+
address initialAuthority,
|
64
|
+
address registryAddress
|
65
|
+
)
|
66
|
+
AccessManaged(initialAuthority)
|
67
|
+
{
|
68
|
+
_registry = IRegistry(registryAddress);
|
69
|
+
_reader = new StakingReader();
|
70
|
+
_targetManager = new NftIdSetManager();
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
//--- target specific functions ------------------------------------//
|
75
|
+
|
76
|
+
function createTarget(
|
77
|
+
NftId targetNftId,
|
78
|
+
IStaking.TargetInfo memory targetInfo
|
79
|
+
)
|
80
|
+
external
|
81
|
+
{
|
82
|
+
_create(
|
83
|
+
targetNftId.toKey32(TARGET()),
|
84
|
+
abi.encode(targetInfo));
|
85
|
+
|
86
|
+
_createBalance(targetNftId, AmountLib.zero());
|
87
|
+
_targetManager.add(targetNftId);
|
88
|
+
}
|
89
|
+
|
90
|
+
|
91
|
+
function updateTarget(
|
92
|
+
NftId targetNftId,
|
93
|
+
IStaking.TargetInfo memory targetInfo
|
94
|
+
)
|
95
|
+
external
|
96
|
+
{
|
97
|
+
_update(
|
98
|
+
targetNftId.toKey32(TARGET()),
|
99
|
+
abi.encode(targetInfo), KEEP_STATE());
|
100
|
+
}
|
101
|
+
|
102
|
+
//--- stake specific functions -------------------------------------//
|
103
|
+
|
104
|
+
function create(
|
105
|
+
NftId stakeNftId,
|
106
|
+
IStaking.StakeInfo memory stakeInfo,
|
107
|
+
Amount stakeAmount
|
108
|
+
)
|
109
|
+
external
|
110
|
+
{
|
111
|
+
_create(
|
112
|
+
stakeNftId.toKey32(STAKE()),
|
113
|
+
abi.encode(stakeInfo));
|
114
|
+
|
115
|
+
_createBalance(stakeNftId, stakeAmount);
|
116
|
+
}
|
117
|
+
|
118
|
+
function update(
|
119
|
+
NftId stakeNftId,
|
120
|
+
IStaking.StakeInfo memory stakeInfo
|
121
|
+
)
|
122
|
+
external
|
123
|
+
{
|
124
|
+
_update(
|
125
|
+
stakeNftId.toKey32(STAKE()),
|
126
|
+
abi.encode(stakeInfo),
|
127
|
+
KEEP_STATE());
|
128
|
+
}
|
129
|
+
|
130
|
+
//--- general functions --------------------------------------------//
|
131
|
+
|
132
|
+
|
133
|
+
function increaseBalance(NftId nftId, Amount amount, Amount rewardIncrementAmount)
|
134
|
+
external
|
135
|
+
{
|
136
|
+
Blocknumber lastUpdatedIn = _lastUpdatedIn[nftId];
|
137
|
+
bool updated = false;
|
138
|
+
|
139
|
+
if (lastUpdatedIn.eqz()) {
|
140
|
+
revert ErrorStakingStoreBalanceNotInitialized(nftId);
|
141
|
+
}
|
142
|
+
|
143
|
+
// update stake balance with amount
|
144
|
+
if(amount.gtz()) {
|
145
|
+
updated = true;
|
146
|
+
_stakeBalance[nftId] = _stakeBalance[nftId] + amount;
|
147
|
+
emit LogStakingStoreStakesIncreased(nftId, amount, _stakeBalance[nftId], lastUpdatedIn);
|
148
|
+
}
|
149
|
+
|
150
|
+
// update reward balance with amount
|
151
|
+
if(rewardIncrementAmount.gtz()) {
|
152
|
+
updated = true;
|
153
|
+
_rewardBalance[nftId] = _rewardBalance[nftId] + rewardIncrementAmount;
|
154
|
+
emit LogStakingStoreRewardsIncreased(nftId, rewardIncrementAmount, _rewardBalance[nftId], lastUpdatedIn);
|
155
|
+
}
|
156
|
+
|
157
|
+
if (updated) {
|
158
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
159
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
|
164
|
+
function restakeRewards(
|
165
|
+
NftId nftId,
|
166
|
+
Amount rewardIncrementAmount
|
167
|
+
)
|
168
|
+
external
|
169
|
+
{
|
170
|
+
Blocknumber lastUpdatedIn = _lastUpdatedIn[nftId];
|
171
|
+
Amount stakeAmount = _stakeBalance[nftId];
|
172
|
+
Amount rewardAmount = _rewardBalance[nftId];
|
173
|
+
|
174
|
+
if (lastUpdatedIn.eqz()) {
|
175
|
+
revert ErrorStakingStoreBalanceNotInitialized(nftId);
|
176
|
+
}
|
177
|
+
|
178
|
+
// move all rewards to stake balance
|
179
|
+
_stakeBalance[nftId] = stakeAmount + rewardAmount + rewardIncrementAmount;
|
180
|
+
_rewardBalance[nftId] = AmountLib.zero();
|
181
|
+
|
182
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
183
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
184
|
+
|
185
|
+
emit LogStakingStoreRewardsRestaked(nftId, stakeAmount, rewardAmount, rewardIncrementAmount, _stakeBalance[nftId], lastUpdatedIn);
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
function updateRewards(
|
190
|
+
NftId nftId,
|
191
|
+
Amount rewardIncrementAmount
|
192
|
+
)
|
193
|
+
external
|
194
|
+
{
|
195
|
+
Blocknumber lastUpdatedIn = _lastUpdatedIn[nftId];
|
196
|
+
Amount rewardAmount = _rewardBalance[nftId];
|
197
|
+
|
198
|
+
if (lastUpdatedIn.eqz()) {
|
199
|
+
revert ErrorStakingStoreBalanceNotInitialized(nftId);
|
200
|
+
}
|
201
|
+
|
202
|
+
// move all rewards to stake balance
|
203
|
+
_rewardBalance[nftId] = rewardAmount + rewardIncrementAmount;
|
204
|
+
|
205
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
206
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
207
|
+
|
208
|
+
emit LogStakingStoreRewardsIncreased(nftId, rewardIncrementAmount, _rewardBalance[nftId], lastUpdatedIn);
|
209
|
+
}
|
210
|
+
|
211
|
+
|
212
|
+
function claimUpTo(
|
213
|
+
NftId nftId,
|
214
|
+
Amount maxRewardAmount
|
215
|
+
)
|
216
|
+
external
|
217
|
+
returns (Amount rewardsClaimedAmount)
|
218
|
+
{
|
219
|
+
Blocknumber lastUpdatedIn = _lastUpdatedIn[nftId];
|
220
|
+
bool updated = false;
|
221
|
+
|
222
|
+
if (lastUpdatedIn.eqz()) {
|
223
|
+
revert ErrorStakingStoreBalanceNotInitialized(nftId);
|
224
|
+
}
|
225
|
+
|
226
|
+
// determine the claimable rewards amount
|
227
|
+
if (maxRewardAmount > _rewardBalance[nftId]) {
|
228
|
+
rewardsClaimedAmount = _rewardBalance[nftId];
|
229
|
+
} else {
|
230
|
+
rewardsClaimedAmount = maxRewardAmount;
|
231
|
+
}
|
232
|
+
|
233
|
+
// decrease reward amount
|
234
|
+
_rewardBalance[nftId] = _rewardBalance[nftId] - rewardsClaimedAmount;
|
235
|
+
|
236
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
237
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
238
|
+
|
239
|
+
emit LogStakingStoreRewardsDecreased(nftId, rewardsClaimedAmount, _rewardBalance[nftId], lastUpdatedIn);
|
240
|
+
}
|
241
|
+
|
242
|
+
|
243
|
+
function unstakeUpTo(
|
244
|
+
NftId nftId,
|
245
|
+
Amount maxUnstakeAmount,
|
246
|
+
Amount maxClaimAmount
|
247
|
+
)
|
248
|
+
external
|
249
|
+
returns (
|
250
|
+
Amount unstakedAmount,
|
251
|
+
Amount claimedAmount
|
252
|
+
)
|
253
|
+
{
|
254
|
+
Blocknumber lastUpdatedIn = _lastUpdatedIn[nftId];
|
255
|
+
bool updated = false;
|
256
|
+
|
257
|
+
if (lastUpdatedIn.eqz()) {
|
258
|
+
revert ErrorStakingStoreBalanceNotInitialized(nftId);
|
259
|
+
}
|
260
|
+
|
261
|
+
// determine the unstakeable amount
|
262
|
+
if (maxUnstakeAmount > _rewardBalance[nftId]) {
|
263
|
+
unstakedAmount = _rewardBalance[nftId];
|
264
|
+
} else {
|
265
|
+
unstakedAmount = maxUnstakeAmount;
|
266
|
+
}
|
267
|
+
|
268
|
+
// determine the claimable rewards amount
|
269
|
+
if (maxClaimAmount > _rewardBalance[nftId]) {
|
270
|
+
claimedAmount = _rewardBalance[nftId];
|
271
|
+
} else {
|
272
|
+
claimedAmount = maxClaimAmount;
|
273
|
+
}
|
274
|
+
|
275
|
+
// decrease amounts
|
276
|
+
_stakeBalance[nftId] = _stakeBalance[nftId] - unstakedAmount;
|
277
|
+
_rewardBalance[nftId] = _rewardBalance[nftId] - claimedAmount;
|
278
|
+
|
279
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
280
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
281
|
+
|
282
|
+
emit LogStakingStoreStakesDecreased(nftId, unstakedAmount, _stakeBalance[nftId], lastUpdatedIn);
|
283
|
+
emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
|
284
|
+
}
|
285
|
+
|
286
|
+
//--- view functions -----------------------------------------------//
|
287
|
+
|
288
|
+
function getStakingReader() external view returns (StakingReader stakingReader){
|
289
|
+
return _reader;
|
290
|
+
}
|
291
|
+
|
292
|
+
function getTargetManager() external view returns (NftIdSetManager targetManager){
|
293
|
+
return _targetManager;
|
294
|
+
}
|
295
|
+
|
296
|
+
function exists(NftId stakeNftId) external view returns (bool) {
|
297
|
+
return exists(stakeNftId.toKey32(STAKE()));
|
298
|
+
}
|
299
|
+
|
300
|
+
function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) { return _stakeBalance[nftId]; }
|
301
|
+
function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) { return _rewardBalance[nftId]; }
|
302
|
+
function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) { return _lastUpdatedAt[nftId]; }
|
303
|
+
|
304
|
+
function getBalanceAndLastUpdatedAt(NftId nftId)
|
305
|
+
external
|
306
|
+
view
|
307
|
+
returns (
|
308
|
+
Amount stakeBalance,
|
309
|
+
Timestamp lastUpdatedAt
|
310
|
+
)
|
311
|
+
{
|
312
|
+
stakeBalance = _stakeBalance[nftId];
|
313
|
+
lastUpdatedAt = _lastUpdatedAt[nftId];
|
314
|
+
}
|
315
|
+
|
316
|
+
//--- private functions -------------------------------------------//
|
317
|
+
|
318
|
+
function _createBalance(NftId nftId, Amount amount) private {
|
319
|
+
if (_lastUpdatedIn[nftId].gtz()) {
|
320
|
+
revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
|
321
|
+
}
|
322
|
+
|
323
|
+
_stakeBalance[nftId] = amount;
|
324
|
+
_rewardBalance[nftId] = AmountLib.zero();
|
325
|
+
|
326
|
+
_lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
|
327
|
+
_lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
|
328
|
+
}
|
329
|
+
}
|
@@ -0,0 +1,179 @@
|
|
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
|
+
view
|
26
|
+
returns (
|
27
|
+
Seconds oldLockingPeriod,
|
28
|
+
IStaking.TargetInfo memory targetInfo
|
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
|
+
targetInfo = reader.getTargetInfo(targetNftId);
|
41
|
+
oldLockingPeriod = targetInfo.lockingPeriod;
|
42
|
+
|
43
|
+
targetInfo.lockingPeriod = lockingPeriod;
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
function updateRewardRate(
|
48
|
+
IStaking staking,
|
49
|
+
NftId targetNftId,
|
50
|
+
UFixed rewardRate
|
51
|
+
)
|
52
|
+
external
|
53
|
+
view
|
54
|
+
returns (
|
55
|
+
UFixed oldRewardRate,
|
56
|
+
IStaking.TargetInfo memory targetInfo
|
57
|
+
)
|
58
|
+
{
|
59
|
+
StakingReader reader = staking.getStakingReader();
|
60
|
+
|
61
|
+
// check target exists
|
62
|
+
if(!reader.isTarget(targetNftId)) {
|
63
|
+
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
64
|
+
}
|
65
|
+
|
66
|
+
checkRewardRate(targetNftId, rewardRate);
|
67
|
+
|
68
|
+
targetInfo = reader.getTargetInfo(targetNftId);
|
69
|
+
oldRewardRate = targetInfo.rewardRate;
|
70
|
+
|
71
|
+
targetInfo.rewardRate = rewardRate;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
function checkTargetParameters(
|
76
|
+
IRegistry registry,
|
77
|
+
StakingReader stakingReader,
|
78
|
+
NftId targetNftId,
|
79
|
+
ObjectType expectedObjectType,
|
80
|
+
Seconds initialLockingPeriod,
|
81
|
+
UFixed initialRewardRate
|
82
|
+
)
|
83
|
+
external
|
84
|
+
view
|
85
|
+
{
|
86
|
+
// target nft id must not be zero
|
87
|
+
if (targetNftId.eqz()) {
|
88
|
+
revert IStaking.ErrorStakingTargetNftIdZero();
|
89
|
+
}
|
90
|
+
|
91
|
+
// only accept "new" targets to be registered
|
92
|
+
if (stakingReader.isTarget(targetNftId)) {
|
93
|
+
revert IStaking.ErrorStakingTargetAlreadyRegistered(targetNftId);
|
94
|
+
}
|
95
|
+
|
96
|
+
// target object type must be allowed
|
97
|
+
if (!isTargetTypeSupported(expectedObjectType)) {
|
98
|
+
revert IStaking.ErrorStakingTargetTypeNotSupported(targetNftId, expectedObjectType);
|
99
|
+
}
|
100
|
+
|
101
|
+
checkLockingPeriod(targetNftId, initialLockingPeriod);
|
102
|
+
checkRewardRate(targetNftId, initialRewardRate);
|
103
|
+
|
104
|
+
// target nft id must be known and registered with the expected object type
|
105
|
+
if (!registry.isRegistered(targetNftId)) {
|
106
|
+
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
107
|
+
} else {
|
108
|
+
// check that expected object type matches with registered object type
|
109
|
+
ObjectType actualObjectType = registry.getObjectInfo(targetNftId).objectType;
|
110
|
+
if (actualObjectType != expectedObjectType) {
|
111
|
+
revert IStaking.ErrorStakingTargetUnexpectedObjectType(targetNftId, expectedObjectType, actualObjectType);
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
function isTargetTypeSupported(ObjectType objectType)
|
118
|
+
public
|
119
|
+
pure
|
120
|
+
returns (bool isSupported)
|
121
|
+
{
|
122
|
+
if(objectType == PROTOCOL()) { return true; }
|
123
|
+
if(objectType == INSTANCE()) { return true; }
|
124
|
+
|
125
|
+
return false;
|
126
|
+
}
|
127
|
+
|
128
|
+
|
129
|
+
function checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
|
130
|
+
public
|
131
|
+
pure
|
132
|
+
{
|
133
|
+
// check locking period is > 0
|
134
|
+
if (lockingPeriod.eqz()) {
|
135
|
+
revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
|
136
|
+
}
|
137
|
+
|
138
|
+
// check locking period <= max locking period
|
139
|
+
if (lockingPeriod > getMaxLockingPeriod()) {
|
140
|
+
revert IStaking.ErrorStakingLockingPeriodTooLong(targetNftId, getMaxLockingPeriod(), lockingPeriod);
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
|
145
|
+
function checkRewardRate(NftId targetNftId, UFixed rewardRate)
|
146
|
+
public
|
147
|
+
pure
|
148
|
+
{
|
149
|
+
// check reward rate <= max reward rate
|
150
|
+
if (rewardRate > getMaxRewardRate()) {
|
151
|
+
revert IStaking.ErrorStakingRewardRateTooHigh(targetNftId, getMaxRewardRate(), rewardRate);
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
function getMaxLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
|
157
|
+
return SecondsLib.toSeconds(5 * 365 * 24 * 3600);
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
function getDefaultLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
|
162
|
+
return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
|
167
|
+
return UFixedLib.toUFixed(33, -2);
|
168
|
+
}
|
169
|
+
|
170
|
+
|
171
|
+
function getDefaultRewardRate() public pure returns (UFixed defaultRewardRate) {
|
172
|
+
return UFixedLib.toUFixed(5, -2);
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
function toTargetKey(NftId targetNftId) public pure returns (Key32 targetKey) {
|
177
|
+
return targetNftId.toKey32(TARGET());
|
178
|
+
}
|
179
|
+
}
|
@@ -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
|
+
}
|
@@ -10,7 +10,9 @@ using {
|
|
10
10
|
lteBlocknumber as <=,
|
11
11
|
eqBlocknumber as ==,
|
12
12
|
neBlocknumber as !=,
|
13
|
-
BlocknumberLib.toInt
|
13
|
+
BlocknumberLib.toInt,
|
14
|
+
BlocknumberLib.eqz,
|
15
|
+
BlocknumberLib.gtz
|
14
16
|
} for Blocknumber global;
|
15
17
|
|
16
18
|
/// @dev return true if Blocknumber a is greater than Blocknumber b
|
@@ -49,9 +51,10 @@ function toBlocknumber(uint256 blocknum) pure returns (Blocknumber) {
|
|
49
51
|
}
|
50
52
|
|
51
53
|
function blockBlocknumber() view returns (Blocknumber) {
|
52
|
-
return
|
54
|
+
return BlocknumberLib.currentBlocknumber();
|
53
55
|
}
|
54
56
|
|
57
|
+
// TODO move to BlocknumberLib and rename to zero()
|
55
58
|
/// @dev Return the Blocknumber zero (0)
|
56
59
|
function zeroBlocknumber() pure returns (Blocknumber) {
|
57
60
|
return toBlocknumber(0);
|
@@ -63,6 +66,21 @@ function blockNumber() view returns (Blocknumber) {
|
|
63
66
|
}
|
64
67
|
|
65
68
|
library BlocknumberLib {
|
69
|
+
/// @dev returns the current Blocknumber
|
70
|
+
function currentBlocknumber() public view returns (Blocknumber) {
|
71
|
+
return Blocknumber.wrap(uint32(block.number));
|
72
|
+
}
|
73
|
+
|
74
|
+
/// @dev return true iff blocknumber is 0
|
75
|
+
function eqz(Blocknumber blocknumber) public pure returns (bool) {
|
76
|
+
return Blocknumber.unwrap(blocknumber) == 0;
|
77
|
+
}
|
78
|
+
|
79
|
+
/// @dev return true iff blocknumber is 0
|
80
|
+
function gtz(Blocknumber blocknumber) public pure returns (bool) {
|
81
|
+
return Blocknumber.unwrap(blocknumber) > 0;
|
82
|
+
}
|
83
|
+
|
66
84
|
/// @dev return true if Blocknumber a is greater than Blocknumber b
|
67
85
|
function gt(
|
68
86
|
Blocknumber a,
|