@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-0fefe0d-162
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 +123 -332
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- 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 +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +372 -131
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1509 -174
- 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 +266 -64
- 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 +263 -87
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +102 -19
- 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 +63 -38
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +269 -69
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -12
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +376 -147
- 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 +20 -11
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +232 -19
- 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 +108 -79
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +268 -68
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +136 -95
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +268 -68
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +500 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2347 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +86 -45
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +268 -68
- 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 +130 -105
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +268 -68
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -147
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +268 -68
- 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 +374 -35
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +305 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +757 -393
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +236 -80
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +723 -553
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +331 -31
- 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 +1323 -2012
- 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 +20 -20
- 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 +282 -65
- 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 +59 -58
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +268 -68
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
- 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 +186 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -20
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -20
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +338 -79
- 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 +46 -37
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +268 -68
- 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 +40 -31
- 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 +511 -21
- 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 -112
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -31
- 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 +542 -305
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +335 -76
- 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 +548 -231
- 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 +196 -201
- 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 +111 -132
- 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 +1390 -134
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +97 -117
- 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 +1479 -192
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +77 -76
- 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 +296 -152
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +131 -167
- 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 +1615 -815
- 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 +153 -91
- 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 +10 -10
- 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 +93 -37
- 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 +22 -25
- 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 +23 -4
- 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/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -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 +69 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- 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 +4 -2
- 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 +29 -12
- 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 +125 -62
- 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/flight/FlightLib.sol +311 -0
- package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
- package/contracts/examples/flight/FlightOracle.sol +167 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +625 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +28 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- 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 +57 -6
- package/contracts/instance/IInstanceService.sol +42 -7
- package/contracts/instance/Instance.sol +111 -56
- package/contracts/instance/InstanceAdmin.sol +151 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +370 -392
- package/contracts/instance/InstanceService.sol +186 -134
- 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/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +15 -5
- package/contracts/instance/module/IDistribution.sol +17 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +12 -12
- 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 +13 -5
- 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 +28 -31
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +15 -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/EcdsaChecker.sol +5 -0
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +14 -15
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +63 -26
- 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/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +17 -33
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -3
- package/contracts/type/UFixed.sol +28 -10
- 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 +2 -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/Fee.sol
CHANGED
@@ -5,16 +5,16 @@ import {Amount, AmountLib} from "./Amount.sol";
|
|
5
5
|
import {UFixed, UFixedLib} from "./UFixed.sol";
|
6
6
|
|
7
7
|
struct Fee {
|
8
|
+
// slot 0
|
8
9
|
UFixed fractionalFee;
|
9
|
-
|
10
|
-
uint256 fixedFee;
|
10
|
+
Amount fixedFee;
|
11
11
|
}
|
12
12
|
|
13
13
|
library FeeLib {
|
14
14
|
|
15
15
|
/// @dev Return a zero fee struct (0, 0)
|
16
16
|
function zero() public pure returns (Fee memory fee) {
|
17
|
-
return Fee(UFixed.wrap(0),
|
17
|
+
return Fee(UFixed.wrap(0), AmountLib.zero());
|
18
18
|
}
|
19
19
|
|
20
20
|
/// @dev Converts the uint256 to a fee struct.
|
@@ -22,7 +22,7 @@ library FeeLib {
|
|
22
22
|
UFixed fractionalFee,
|
23
23
|
uint256 fixedFee
|
24
24
|
) public pure returns (Fee memory fee) {
|
25
|
-
return Fee(fractionalFee, fixedFee);
|
25
|
+
return Fee(fractionalFee, AmountLib.toAmount(fixedFee));
|
26
26
|
}
|
27
27
|
|
28
28
|
/// @dev Calculates fee and net amounts for the provided parameters
|
@@ -41,14 +41,14 @@ library FeeLib {
|
|
41
41
|
if(gtz(fee)) {
|
42
42
|
UFixed fractionalAmount =
|
43
43
|
amount.toUFixed() * fee.fractionalFee;
|
44
|
-
feeAmount = AmountLib.toAmount(fractionalAmount.toInt() + fee.fixedFee
|
44
|
+
feeAmount = AmountLib.toAmount(fractionalAmount.toInt()) + fee.fixedFee;
|
45
45
|
netAmount = netAmount - feeAmount;
|
46
46
|
}
|
47
47
|
}
|
48
48
|
|
49
49
|
/// @dev Return the percent fee struct (x%, 0)
|
50
50
|
function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
|
51
|
-
return Fee(UFixedLib.toUFixed(percent, -2),
|
51
|
+
return Fee(UFixedLib.toUFixed(percent, -2), AmountLib.zero());
|
52
52
|
}
|
53
53
|
|
54
54
|
// pure free functions for operators
|
@@ -57,10 +57,10 @@ library FeeLib {
|
|
57
57
|
}
|
58
58
|
|
59
59
|
function gtz(Fee memory fee) public pure returns (bool) {
|
60
|
-
return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee
|
60
|
+
return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee.gtz();
|
61
61
|
}
|
62
62
|
|
63
63
|
function eqz(Fee memory fee) public pure returns (bool) {
|
64
|
-
return fee.fixedFee
|
64
|
+
return fee.fixedFee.eqz() && UFixed.unwrap(fee.fractionalFee) == 0;
|
65
65
|
}
|
66
66
|
}
|
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
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {StrLib} from "./String.sol";
|
4
5
|
import {VersionPart} from "./Version.sol";
|
5
6
|
|
6
7
|
type ObjectType is uint8;
|
@@ -10,6 +11,7 @@ using {
|
|
10
11
|
eqObjectType as ==,
|
11
12
|
neObjectType as !=,
|
12
13
|
ObjectTypeLib.toInt,
|
14
|
+
ObjectTypeLib.toName,
|
13
15
|
ObjectTypeLib.eqz,
|
14
16
|
ObjectTypeLib.eq,
|
15
17
|
ObjectTypeLib.gtz
|
@@ -143,7 +145,16 @@ function REFERRAL() pure returns (ObjectType) {
|
|
143
145
|
return ObjectType.wrap(49);
|
144
146
|
}
|
145
147
|
|
148
|
+
/// @dev Object type for GIF core target roles.
|
149
|
+
function CORE() pure returns (ObjectType) {
|
150
|
+
return ObjectType.wrap(97);
|
151
|
+
}
|
146
152
|
|
153
|
+
/// @dev Object type for target roles of contracts outside the GIF framework.
|
154
|
+
/// Example: Custom supporting contracts for a product component.
|
155
|
+
function CUSTOM() pure returns (ObjectType) {
|
156
|
+
return ObjectType.wrap(98);
|
157
|
+
}
|
147
158
|
|
148
159
|
/// @dev Object type that includes any other object type.
|
149
160
|
/// Note that eq()/'==' does not take this property into account.
|
@@ -203,6 +214,8 @@ library ObjectTypeLib {
|
|
203
214
|
return "Registry";
|
204
215
|
} else if (objectType == STAKING()) {
|
205
216
|
return "Staking";
|
217
|
+
} else if (objectType == RELEASE()) {
|
218
|
+
return "Release";
|
206
219
|
} else if (objectType == INSTANCE()) {
|
207
220
|
return "Instance";
|
208
221
|
} else if (objectType == COMPONENT()) {
|
@@ -235,10 +248,11 @@ library ObjectTypeLib {
|
|
235
248
|
return string(
|
236
249
|
abi.encodePacked(
|
237
250
|
"ObjectType",
|
238
|
-
|
251
|
+
StrLib.uintToString(
|
239
252
|
toInt(objectType))));
|
240
253
|
}
|
241
254
|
|
255
|
+
// TODO move to IService
|
242
256
|
function toVersionedName(
|
243
257
|
string memory name,
|
244
258
|
string memory suffix,
|
@@ -248,10 +262,10 @@ library ObjectTypeLib {
|
|
248
262
|
pure
|
249
263
|
returns (string memory versionedName)
|
250
264
|
{
|
251
|
-
string memory versionName = "
|
265
|
+
string memory versionName = "V0";
|
252
266
|
|
253
267
|
if (release.toInt() >= 10) {
|
254
|
-
versionName = "
|
268
|
+
versionName = "V";
|
255
269
|
}
|
256
270
|
|
257
271
|
versionedName = string(
|
@@ -261,34 +275,4 @@ library ObjectTypeLib {
|
|
261
275
|
versionName,
|
262
276
|
release.toString()));
|
263
277
|
}
|
264
|
-
|
265
|
-
/// @dev returns the provied int as a string
|
266
|
-
function toString(uint256 value) public pure returns (string memory name) {
|
267
|
-
|
268
|
-
if (value == 0) {
|
269
|
-
return "0";
|
270
|
-
}
|
271
|
-
|
272
|
-
uint256 temp = value;
|
273
|
-
uint256 digits = 0;
|
274
|
-
while (temp != 0) {
|
275
|
-
digits++;
|
276
|
-
temp /= 10;
|
277
|
-
}
|
278
|
-
|
279
|
-
bytes memory buffer = new bytes(digits);
|
280
|
-
uint index = digits - 1;
|
281
|
-
|
282
|
-
temp = value;
|
283
|
-
while (temp != 0) {
|
284
|
-
buffer[index] = bytes1(uint8(48 + temp % 10));
|
285
|
-
temp /= 10;
|
286
|
-
|
287
|
-
if (index > 0) {
|
288
|
-
index--;
|
289
|
-
}
|
290
|
-
}
|
291
|
-
|
292
|
-
return string(buffer);
|
293
|
-
}
|
294
278
|
}
|
@@ -13,6 +13,7 @@ using {
|
|
13
13
|
eqReferralId as ==,
|
14
14
|
neReferralId as !=,
|
15
15
|
ReferralLib.eqz,
|
16
|
+
ReferralLib.toInt,
|
16
17
|
ReferralLib.toKey32
|
17
18
|
} for ReferralId global;
|
18
19
|
|
@@ -74,6 +75,11 @@ library ReferralLib {
|
|
74
75
|
return ReferralStatus.wrap(status);
|
75
76
|
}
|
76
77
|
|
78
|
+
/// @dev Converts a referral id into a uint256.
|
79
|
+
function toInt(ReferralId referralId) public pure returns (uint256) {
|
80
|
+
return uint64(ReferralId.unwrap(referralId));
|
81
|
+
}
|
82
|
+
|
77
83
|
/// @dev Returns the key32 value for the specified nft id and object type.
|
78
84
|
function toKey32(ReferralId id) public pure returns (Key32 key) {
|
79
85
|
return Key32Lib.toKey32(REFERRAL(), toKeyId(id));
|