@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384
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 +76 -341
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +367 -126
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1546 -211
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +261 -59
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +258 -82
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +97 -14
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -27
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +264 -64
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -11
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -10
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +81 -52
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +109 -68
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +263 -63
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +74 -33
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -60
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -78
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +263 -63
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +359 -33
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +297 -3
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +756 -392
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +231 -75
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +492 -424
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +323 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1444 -2133
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +25 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +277 -60
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -36
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +263 -63
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -10
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -10
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -10
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +263 -63
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -10
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -10
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +537 -300
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +330 -71
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +543 -226
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +167 -103
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -10
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1384 -128
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1472 -185
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +293 -149
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1617 -817
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +140 -78
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +2 -0
- package/contracts/authorization/AccessAdmin.sol +292 -317
- package/contracts/authorization/AccessAdminLib.sol +517 -22
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +64 -239
- package/contracts/authorization/IAccess.sol +23 -14
- package/contracts/authorization/IAccessAdmin.sol +25 -53
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +3 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +9 -8
- package/contracts/distribution/DistributionService.sol +98 -35
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +55 -5
- package/contracts/instance/IInstanceService.sol +37 -6
- package/contracts/instance/Instance.sol +103 -56
- package/contracts/instance/InstanceAdmin.sol +151 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +350 -394
- package/contracts/instance/InstanceService.sol +180 -125
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IComponents.sol +0 -2
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/Oracle.sol +4 -6
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -18
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +64 -11
- package/contracts/product/BasicProduct.sol +2 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +22 -25
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +11 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +33 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +52 -106
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +8 -8
- package/contracts/shared/ComponentService.sol +245 -262
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +12 -13
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -9
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +261 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +468 -217
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +16 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +1 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -0,0 +1,132 @@
|
|
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
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
|
9
|
+
|
10
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
11
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {StakingStore} from "./StakingStore.sol";
|
14
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
15
|
+
|
16
|
+
|
17
|
+
contract TargetHandler is
|
18
|
+
Initializable,
|
19
|
+
AccessManaged,
|
20
|
+
ITargetLimitHandler
|
21
|
+
{
|
22
|
+
|
23
|
+
event LogTargetHandlerUpdateTriggersSet(uint16 tvlUpdatesTrigger, UFixed minTvlRatioTrigger, Blocknumber lastUpdateIn);
|
24
|
+
|
25
|
+
IRegistry private _registry;
|
26
|
+
StakingStore private _store;
|
27
|
+
|
28
|
+
/// @dev Update trigger value: Number of TVL updates below which limit updates are suppressed
|
29
|
+
uint16 private _tvlUpdatesTrigger;
|
30
|
+
/// @dev Maximum TVL ratio: Any ratio above this value will trigger a limit update
|
31
|
+
UFixed private _minTvlRatioTrigger;
|
32
|
+
Blocknumber private _lastUpdateIn;
|
33
|
+
|
34
|
+
|
35
|
+
constructor (
|
36
|
+
IRegistry registry,
|
37
|
+
StakingStore stakingStore
|
38
|
+
)
|
39
|
+
AccessManaged(msg.sender)
|
40
|
+
{
|
41
|
+
// set final authority and registry
|
42
|
+
setAuthority(registry.getAuthority());
|
43
|
+
_registry = registry;
|
44
|
+
_store = stakingStore;
|
45
|
+
|
46
|
+
// set default trigger values
|
47
|
+
_setUpdateTriggers(
|
48
|
+
10, // check after 2 TVL updates
|
49
|
+
UFixedLib.toUFixed(1, -1)); // 10% deviation from baseline TVL
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
// TODO do we really need this?
|
54
|
+
// if so: add onlyDeployer (new base contract? also for reader)
|
55
|
+
// if not: remove oz intializer/initializable
|
56
|
+
function initialize()
|
57
|
+
external
|
58
|
+
initializer()
|
59
|
+
{ }
|
60
|
+
|
61
|
+
//--- staking functions -------------------------------------------------------//
|
62
|
+
|
63
|
+
/// @dev Sets the TVL update triggers.
|
64
|
+
function setUpdateTriggers(
|
65
|
+
uint16 tvlUpdatesTrigger,
|
66
|
+
UFixed minTvlRatioTrigger
|
67
|
+
)
|
68
|
+
external
|
69
|
+
restricted()
|
70
|
+
{
|
71
|
+
_setUpdateTriggers(tvlUpdatesTrigger, minTvlRatioTrigger);
|
72
|
+
}
|
73
|
+
|
74
|
+
//--- ITargetLimitHandler -----------------------------------------------------//
|
75
|
+
|
76
|
+
/// @inheritdoc ITargetLimitHandler
|
77
|
+
// Current implementation only considers the TVL amounts.
|
78
|
+
// Future implementations may also consider target or token specific factors.
|
79
|
+
function isLimitUpdateRequired(
|
80
|
+
NftId, // targetNftId
|
81
|
+
address , // token
|
82
|
+
uint16 tvlUpdatesCount,
|
83
|
+
Amount baselineTvlAmount,
|
84
|
+
Amount currentTvlAmount
|
85
|
+
)
|
86
|
+
external
|
87
|
+
virtual
|
88
|
+
view
|
89
|
+
returns (bool updateIsRequired)
|
90
|
+
{
|
91
|
+
// no update required if below the TVL updates trigger
|
92
|
+
if (tvlUpdatesCount < _tvlUpdatesTrigger) {
|
93
|
+
return false;
|
94
|
+
}
|
95
|
+
|
96
|
+
// no update required if both amounts are zero
|
97
|
+
Amount zero = AmountLib.zero();
|
98
|
+
if (baselineTvlAmount == zero && currentTvlAmount == zero) {
|
99
|
+
return false;
|
100
|
+
|
101
|
+
// update required if one amount is zero
|
102
|
+
} else if (baselineTvlAmount == zero || currentTvlAmount == zero) {
|
103
|
+
return true;
|
104
|
+
}
|
105
|
+
|
106
|
+
// calculate the ratio of the current TVL amount to the baseline TVL amount
|
107
|
+
UFixed baseline = baselineTvlAmount.toUFixed();
|
108
|
+
UFixed current = currentTvlAmount.toUFixed();
|
109
|
+
UFixed ratio;
|
110
|
+
|
111
|
+
if (baseline > current) { ratio = baseline / current; }
|
112
|
+
else { ratio = current / baseline; }
|
113
|
+
|
114
|
+
// update required if the ratio is above the maximum TVL ratio
|
115
|
+
return ratio >= _minTvlRatioTrigger;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
function _setUpdateTriggers(
|
120
|
+
uint16 tvlUpdatesTrigger,
|
121
|
+
UFixed minTvlRatioTrigger
|
122
|
+
)
|
123
|
+
internal
|
124
|
+
{
|
125
|
+
Blocknumber lastUpdateIn = _lastUpdateIn;
|
126
|
+
_tvlUpdatesTrigger = tvlUpdatesTrigger;
|
127
|
+
_minTvlRatioTrigger = minTvlRatioTrigger;
|
128
|
+
_lastUpdateIn = BlocknumberLib.current();
|
129
|
+
|
130
|
+
emit LogTargetHandlerUpdateTriggersSet(tvlUpdatesTrigger, minTvlRatioTrigger, lastUpdateIn);
|
131
|
+
}
|
132
|
+
}
|
@@ -3,8 +3,10 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
+
import {IStaking} from "./IStaking.sol";
|
7
|
+
|
6
8
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
-
import {
|
9
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
8
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
11
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
12
|
import {IStaking} from "./IStaking.sol";
|
@@ -37,7 +39,8 @@ library TargetManagerLib {
|
|
37
39
|
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
38
40
|
}
|
39
41
|
|
40
|
-
|
42
|
+
ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
|
43
|
+
checkLockingPeriod(reader, targetNftId, targetType, lockingPeriod);
|
41
44
|
|
42
45
|
targetInfo = reader.getTargetInfo(targetNftId);
|
43
46
|
oldLockingPeriod = targetInfo.lockingPeriod;
|
@@ -65,7 +68,8 @@ library TargetManagerLib {
|
|
65
68
|
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
66
69
|
}
|
67
70
|
|
68
|
-
|
71
|
+
ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
|
72
|
+
checkRewardRate(reader, targetNftId, targetType, rewardRate);
|
69
73
|
|
70
74
|
targetInfo = reader.getTargetInfo(targetNftId);
|
71
75
|
oldRewardRate = targetInfo.rewardRate;
|
@@ -79,8 +83,8 @@ library TargetManagerLib {
|
|
79
83
|
StakingReader stakingReader,
|
80
84
|
NftId targetNftId,
|
81
85
|
ObjectType expectedObjectType,
|
82
|
-
Seconds
|
83
|
-
UFixed
|
86
|
+
Seconds lockingPeriod,
|
87
|
+
UFixed rewardRate
|
84
88
|
)
|
85
89
|
external
|
86
90
|
view
|
@@ -95,63 +99,54 @@ library TargetManagerLib {
|
|
95
99
|
revert IStaking.ErrorStakingTargetAlreadyRegistered(targetNftId);
|
96
100
|
}
|
97
101
|
|
98
|
-
//
|
99
|
-
|
102
|
+
// get setup info for additional checks
|
103
|
+
IStaking.SupportInfo memory supportInfo = stakingReader.getSupportInfo(expectedObjectType);
|
104
|
+
|
105
|
+
// check if type is supported and new targets of that type are allowed
|
106
|
+
if (!(supportInfo.isSupported && supportInfo.allowNewTargets)) {
|
100
107
|
revert IStaking.ErrorStakingTargetTypeNotSupported(targetNftId, expectedObjectType);
|
101
108
|
}
|
102
109
|
|
103
|
-
|
104
|
-
|
110
|
+
// check if cross chain targets are allowed (if applicable)
|
111
|
+
bool isCurrentChain = ChainIdLib.isCurrentChain(targetNftId);
|
112
|
+
if (!supportInfo.allowCrossChain && !isCurrentChain) {
|
113
|
+
revert IStaking.ErrorStakingCrossChainTargetsNotSupported(targetNftId, expectedObjectType);
|
114
|
+
}
|
105
115
|
|
106
|
-
// target nft id must be known and registered with the expected object type
|
107
|
-
if (
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
116
|
+
// additional check for current chain target: target nft id must be known and registered with the expected object type
|
117
|
+
if (isCurrentChain) {
|
118
|
+
if (!registry.isRegistered(targetNftId)) {
|
119
|
+
revert IStaking.ErrorStakingTargetNotFound(targetNftId);
|
120
|
+
} else {
|
121
|
+
// check that expected object type matches with registered object type
|
122
|
+
ObjectType actualObjectType = registry.getObjectInfo(targetNftId).objectType;
|
123
|
+
if (actualObjectType != expectedObjectType) {
|
124
|
+
revert IStaking.ErrorStakingTargetUnexpectedObjectType(targetNftId, expectedObjectType, actualObjectType);
|
125
|
+
}
|
114
126
|
}
|
115
127
|
}
|
116
|
-
}
|
117
128
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
pure
|
122
|
-
returns (bool isSupported)
|
123
|
-
{
|
124
|
-
if(objectType == PROTOCOL()) { return true; }
|
125
|
-
if(objectType == INSTANCE()) { return true; }
|
126
|
-
|
127
|
-
return false;
|
129
|
+
// check locking period and reward rate
|
130
|
+
_checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
|
131
|
+
_checkRewardRate(targetNftId, rewardRate, supportInfo);
|
128
132
|
}
|
129
133
|
|
130
134
|
|
131
|
-
function checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
|
135
|
+
function checkLockingPeriod(StakingReader reader, NftId targetNftId, ObjectType targetType, Seconds lockingPeriod)
|
132
136
|
public
|
133
|
-
|
137
|
+
view
|
134
138
|
{
|
135
|
-
|
136
|
-
|
137
|
-
revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
|
138
|
-
}
|
139
|
-
|
140
|
-
// check locking period <= max locking period
|
141
|
-
if (lockingPeriod > getMaxLockingPeriod()) {
|
142
|
-
revert IStaking.ErrorStakingLockingPeriodTooLong(targetNftId, getMaxLockingPeriod(), lockingPeriod);
|
143
|
-
}
|
139
|
+
IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
|
140
|
+
_checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
|
144
141
|
}
|
145
142
|
|
146
143
|
|
147
|
-
function checkRewardRate(NftId targetNftId, UFixed rewardRate)
|
144
|
+
function checkRewardRate(StakingReader reader, NftId targetNftId, ObjectType targetType, UFixed rewardRate)
|
148
145
|
public
|
149
|
-
|
146
|
+
view
|
150
147
|
{
|
151
|
-
|
152
|
-
|
153
|
-
revert IStaking.ErrorStakingRewardRateTooHigh(targetNftId, getMaxRewardRate(), rewardRate);
|
154
|
-
}
|
148
|
+
IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
|
149
|
+
_checkRewardRate(targetNftId, rewardRate, supportInfo);
|
155
150
|
}
|
156
151
|
|
157
152
|
|
@@ -160,7 +155,7 @@ library TargetManagerLib {
|
|
160
155
|
UFixed stakingRate
|
161
156
|
)
|
162
157
|
public
|
163
|
-
|
158
|
+
pure
|
164
159
|
returns (Amount dipAmount)
|
165
160
|
{
|
166
161
|
dipAmount = tokenAmount.multiplyWith(stakingRate);
|
@@ -208,4 +203,32 @@ library TargetManagerLib {
|
|
208
203
|
function toTargetKey(NftId targetNftId) public pure returns (Key32 targetKey) {
|
209
204
|
return targetNftId.toKey32(TARGET());
|
210
205
|
}
|
206
|
+
|
207
|
+
|
208
|
+
function _checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod, IStaking.SupportInfo memory supportInfo)
|
209
|
+
private
|
210
|
+
pure
|
211
|
+
{
|
212
|
+
if (lockingPeriod < supportInfo.minLockingPeriod || lockingPeriod > supportInfo.maxLockingPeriod) {
|
213
|
+
revert IStaking.ErrorStakingLockingPeriodInvalid(
|
214
|
+
targetNftId,
|
215
|
+
lockingPeriod,
|
216
|
+
supportInfo.minLockingPeriod,
|
217
|
+
supportInfo.maxLockingPeriod);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
function _checkRewardRate(NftId targetNftId, UFixed rewardRate, IStaking.SupportInfo memory supportInfo)
|
223
|
+
private
|
224
|
+
pure
|
225
|
+
{
|
226
|
+
if (rewardRate < supportInfo.minRewardRate || rewardRate > supportInfo.maxRewardRate) {
|
227
|
+
revert IStaking.ErrorStakingRewardRateInvalid(
|
228
|
+
targetNftId,
|
229
|
+
rewardRate,
|
230
|
+
supportInfo.minRewardRate,
|
231
|
+
supportInfo.maxRewardRate);
|
232
|
+
}
|
233
|
+
}
|
211
234
|
}
|
@@ -3,6 +3,10 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {UFixed, UFixedLib} from "./UFixed.sol";
|
5
5
|
|
6
|
+
/// @dev Targets: 100 trillion (worlds GDP) with 6 decimal places
|
7
|
+
/// 3 trillion USD (total crypto market cap) with 12 decimal places.
|
8
|
+
/// 2023 100 trillion USD => 100e12 * 1e6 = 1e20
|
9
|
+
/// 2024 2 trillion crypto market cap => 2e12 * 1e18 = 2e30
|
6
10
|
type Amount is uint96;
|
7
11
|
|
8
12
|
using {
|
@@ -1,7 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
|
4
|
+
/// @dev Target: Cover 10 years with 1 ms block times.
|
5
|
+
/// Typical block times are a few seconds.
|
6
|
+
type Blocknumber is uint40;
|
5
7
|
|
6
8
|
using {
|
7
9
|
gtBlocknumber as >,
|
@@ -51,30 +53,23 @@ function neBlocknumber(Blocknumber a, Blocknumber b) pure returns (bool) {
|
|
51
53
|
return Blocknumber.unwrap(a) != Blocknumber.unwrap(b);
|
52
54
|
}
|
53
55
|
|
54
|
-
/// @dev Converts the uint256 to a Blocknumber.
|
55
|
-
function toBlocknumber(uint256 blocknum) pure returns (Blocknumber) {
|
56
|
-
return Blocknumber.wrap(uint32(blocknum));
|
57
|
-
}
|
58
56
|
|
59
|
-
|
60
|
-
return BlocknumberLib.currentBlocknumber();
|
61
|
-
}
|
57
|
+
library BlocknumberLib {
|
62
58
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
return toBlocknumber(0);
|
67
|
-
}
|
59
|
+
function zero() public pure returns (Blocknumber) {
|
60
|
+
return Blocknumber.wrap(0);
|
61
|
+
}
|
68
62
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
}
|
63
|
+
function max() public pure returns (Blocknumber) {
|
64
|
+
return Blocknumber.wrap(type(uint40).max);
|
65
|
+
}
|
73
66
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
67
|
+
function current() public view returns (Blocknumber) {
|
68
|
+
return Blocknumber.wrap(uint40(block.number));
|
69
|
+
}
|
70
|
+
|
71
|
+
function toBlocknumber(uint256 blocknum) public pure returns (Blocknumber) {
|
72
|
+
return Blocknumber.wrap(uint32(blocknum));
|
78
73
|
}
|
79
74
|
|
80
75
|
/// @dev return true iff blocknumber is 0
|
@@ -82,7 +77,7 @@ library BlocknumberLib {
|
|
82
77
|
return Blocknumber.unwrap(blocknumber) == 0;
|
83
78
|
}
|
84
79
|
|
85
|
-
/// @dev return true iff blocknumber is 0
|
80
|
+
/// @dev return true iff blocknumber is > 0
|
86
81
|
function gtz(Blocknumber blocknumber) public pure returns (bool) {
|
87
82
|
return Blocknumber.unwrap(blocknumber) > 0;
|
88
83
|
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {NftId} from "./NftId.sol";
|
5
|
+
|
6
|
+
/// @dev Target: Cover chain IDs up to 26 decimal places.
|
7
|
+
/// Current longest chain ID seems to be DCHAIN Testnet: 2713017997578000 with 16 decimal places
|
8
|
+
type ChainId is uint96;
|
9
|
+
|
10
|
+
using {
|
11
|
+
eqChainId as ==,
|
12
|
+
neChainId as !=,
|
13
|
+
ChainIdLib.toInt,
|
14
|
+
ChainIdLib.eqz,
|
15
|
+
ChainIdLib.gtz
|
16
|
+
} for ChainId global;
|
17
|
+
|
18
|
+
|
19
|
+
/// @dev return true if ChainId a is equal to ChainId b
|
20
|
+
function eqChainId(ChainId a, ChainId b) pure returns (bool) {
|
21
|
+
return ChainId.unwrap(a) == ChainId.unwrap(b);
|
22
|
+
}
|
23
|
+
|
24
|
+
/// @dev return true if ChainId a is not equal to ChainId b
|
25
|
+
function neChainId(ChainId a, ChainId b) pure returns (bool) {
|
26
|
+
return ChainId.unwrap(a) != ChainId.unwrap(b);
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
library ChainIdLib {
|
31
|
+
|
32
|
+
error ErrorChainIdLibValueTooBig(uint256 chainId);
|
33
|
+
|
34
|
+
|
35
|
+
function zero() public pure returns (ChainId) {
|
36
|
+
return ChainId.wrap(0);
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
function max() public pure returns (ChainId) {
|
41
|
+
return ChainId.wrap(_max());
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
function current() public view returns (ChainId) {
|
46
|
+
return toChainId(block.chainid);
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
/// @dev return true iff chainId is 0
|
51
|
+
function eqz(ChainId chainId) public pure returns (bool) {
|
52
|
+
return ChainId.unwrap(chainId) == 0;
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
/// @dev return true iff chainId is > 0
|
57
|
+
function gtz(ChainId chainId) public pure returns (bool) {
|
58
|
+
return ChainId.unwrap(chainId) > 0;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
/// @dev converts the uint into ChainId
|
63
|
+
/// function reverts if value is exceeding max ChainId value
|
64
|
+
function toChainId(uint256 chainId) public pure returns (ChainId) {
|
65
|
+
if(chainId > _max()) {
|
66
|
+
revert ErrorChainIdLibValueTooBig(chainId);
|
67
|
+
}
|
68
|
+
|
69
|
+
return ChainId.wrap(uint96(chainId));
|
70
|
+
}
|
71
|
+
|
72
|
+
|
73
|
+
/// @dev returns true iff NFT ID is from the current chain.
|
74
|
+
function isCurrentChain(NftId nftId) public view returns (bool) {
|
75
|
+
return _fromNftId(nftId) == block.chainid;
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
function fromNftId(NftId nftId) public pure returns (ChainId) {
|
80
|
+
return toChainId(_fromNftId(nftId));
|
81
|
+
}
|
82
|
+
|
83
|
+
|
84
|
+
/// @dev converts the ChainId to a uint256
|
85
|
+
function toInt(ChainId chainId) public pure returns (uint256) {
|
86
|
+
return uint256(uint96(ChainId.unwrap(chainId)));
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
function _fromNftId(NftId nftId) internal pure returns (uint256 chainIdInt) {
|
91
|
+
uint256 nftIdInt = nftId.toInt();
|
92
|
+
uint256 chainIdDigits = nftIdInt % 100; // Extract the last two digits
|
93
|
+
chainIdInt = nftIdInt % 10**(chainIdDigits + 2) / 100; // Extract the chainId
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
function _max() internal pure returns (uint96) {
|
98
|
+
// IMPORTANT: type nees to match with actual definition for Amount
|
99
|
+
return type(uint96).max;
|
100
|
+
}
|
101
|
+
}
|
package/contracts/type/NftId.sol
CHANGED
@@ -78,8 +78,8 @@ library NftIdLib {
|
|
78
78
|
}
|
79
79
|
|
80
80
|
function toNftId(KeyId keyId) public pure returns (NftId nftId) {
|
81
|
-
|
82
|
-
|
83
|
-
|
81
|
+
uint248 keyIdInt = uint248(bytes31(KeyId.unwrap(keyId)));
|
82
|
+
assert(keyIdInt < type(uint96).max);
|
83
|
+
return NftId.wrap(uint96(keyIdInt));
|
84
84
|
}
|
85
85
|
}
|
@@ -10,6 +10,7 @@ using {
|
|
10
10
|
eqObjectType as ==,
|
11
11
|
neObjectType as !=,
|
12
12
|
ObjectTypeLib.toInt,
|
13
|
+
ObjectTypeLib.toName,
|
13
14
|
ObjectTypeLib.eqz,
|
14
15
|
ObjectTypeLib.eq,
|
15
16
|
ObjectTypeLib.gtz
|
@@ -143,7 +144,16 @@ function REFERRAL() pure returns (ObjectType) {
|
|
143
144
|
return ObjectType.wrap(49);
|
144
145
|
}
|
145
146
|
|
147
|
+
/// @dev Object type for GIF core target roles.
|
148
|
+
function CORE() pure returns (ObjectType) {
|
149
|
+
return ObjectType.wrap(97);
|
150
|
+
}
|
146
151
|
|
152
|
+
/// @dev Object type for target roles of contracts outside the GIF framework.
|
153
|
+
/// Example: Custom supporting contracts for a product component.
|
154
|
+
function CUSTOM() pure returns (ObjectType) {
|
155
|
+
return ObjectType.wrap(98);
|
156
|
+
}
|
147
157
|
|
148
158
|
/// @dev Object type that includes any other object type.
|
149
159
|
/// Note that eq()/'==' does not take this property into account.
|
@@ -203,6 +213,8 @@ library ObjectTypeLib {
|
|
203
213
|
return "Registry";
|
204
214
|
} else if (objectType == STAKING()) {
|
205
215
|
return "Staking";
|
216
|
+
} else if (objectType == RELEASE()) {
|
217
|
+
return "Release";
|
206
218
|
} else if (objectType == INSTANCE()) {
|
207
219
|
return "Instance";
|
208
220
|
} else if (objectType == COMPONENT()) {
|
@@ -239,6 +251,7 @@ library ObjectTypeLib {
|
|
239
251
|
toInt(objectType))));
|
240
252
|
}
|
241
253
|
|
254
|
+
// TODO move to IService
|
242
255
|
function toVersionedName(
|
243
256
|
string memory name,
|
244
257
|
string memory suffix,
|
@@ -248,10 +261,10 @@ library ObjectTypeLib {
|
|
248
261
|
pure
|
249
262
|
returns (string memory versionedName)
|
250
263
|
{
|
251
|
-
string memory versionName = "
|
264
|
+
string memory versionName = "V0";
|
252
265
|
|
253
266
|
if (release.toInt() >= 10) {
|
254
|
-
versionName = "
|
267
|
+
versionName = "V";
|
255
268
|
}
|
256
269
|
|
257
270
|
versionedName = string(
|
@@ -277,7 +290,7 @@ library ObjectTypeLib {
|
|
277
290
|
}
|
278
291
|
|
279
292
|
bytes memory buffer = new bytes(digits);
|
280
|
-
|
293
|
+
uint256 index = digits - 1;
|
281
294
|
|
282
295
|
temp = value;
|
283
296
|
while (temp != 0) {
|