@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c25ee-730
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 +81 -7
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +677 -258
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1255 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +496 -206
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -450
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +90 -330
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +410 -289
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +180 -122
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -172
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +238 -70
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +471 -48
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +222 -64
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +475 -144
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1132 -392
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1319 -452
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +239 -238
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +822 -806
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- 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 +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +123 -322
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- 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 +98 -121
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +99 -274
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +132 -98
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +139 -314
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +164 -377
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +116 -138
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +129 -163
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +287 -265
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +127 -313
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +494 -511
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +170 -108
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +191 -164
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -98
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -372
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +407 -242
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +150 -124
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -59
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +252 -214
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -264
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +349 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +151 -109
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +180 -241
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -113
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +250 -364
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +341 -41
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +547 -102
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +821 -372
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2160 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +487 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +81 -227
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +520 -644
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -131
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +616 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +463 -300
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -121
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -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 +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -273
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +197 -118
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +288 -341
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +136 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +205 -168
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +113 -95
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
- 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 +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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 +94 -38
- 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 +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- 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 +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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 +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +545 -261
- package/contracts/authorization/AccessAdminLib.sol +379 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +246 -202
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +79 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +254 -24
- package/contracts/distribution/BasicDistribution.sol +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +39 -89
- package/contracts/distribution/DistributionService.sol +215 -111
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +6 -8
- package/contracts/distribution/IDistributionService.sol +32 -24
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +96 -43
- package/contracts/instance/IInstanceService.sol +43 -30
- package/contracts/instance/Instance.sol +183 -96
- package/contracts/instance/InstanceAdmin.sol +462 -178
- package/contracts/instance/InstanceAuthorizationV3.sol +113 -54
- package/contracts/instance/InstanceReader.sol +384 -67
- package/contracts/instance/InstanceService.sol +262 -205
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +13 -6
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -3
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -13
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +33 -12
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +7 -19
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +32 -25
- package/contracts/pool/BasicPoolAuthorization.sol +33 -9
- package/contracts/pool/BundleService.sol +93 -136
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +15 -34
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +70 -65
- package/contracts/pool/Pool.sol +137 -120
- package/contracts/pool/PoolLib.sol +260 -0
- package/contracts/pool/PoolService.sol +462 -238
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +48 -23
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +10 -13
- package/contracts/product/BasicProductAuthorization.sol +30 -12
- package/contracts/product/ClaimService.sol +364 -150
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +43 -8
- package/contracts/product/IPolicyService.sol +35 -13
- package/contracts/product/IPricingService.sol +10 -9
- package/contracts/product/IProductComponent.sol +27 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -9
- package/contracts/product/PolicyService.sol +343 -255
- package/contracts/product/PolicyServiceLib.sol +86 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +38 -30
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +139 -78
- package/contracts/product/RiskService.sol +154 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +63 -27
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +356 -202
- package/contracts/registry/RegistryAdmin.sol +203 -286
- package/contracts/registry/RegistryAuthorization.sol +277 -0
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +268 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +272 -240
- package/contracts/registry/ServiceAuthorizationV3.sol +197 -55
- package/contracts/registry/TokenRegistry.sol +10 -9
- package/contracts/shared/Component.sol +65 -123
- package/contracts/shared/ComponentService.sol +437 -370
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +292 -0
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +44 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +4 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -49
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +28 -8
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +17 -33
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +25 -13
- package/contracts/staking/IStakingService.sol +16 -4
- package/contracts/staking/Staking.sol +101 -52
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +18 -21
- package/contracts/staking/StakingService.sol +82 -25
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +69 -37
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +37 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +79 -43
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -2,6 +2,8 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
|
+
|
6
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
5
7
|
import {IRegistry} from "../registry/IRegistry.sol";
|
6
8
|
import {IRegistryLinked} from "./IRegistryLinked.sol";
|
7
9
|
|
@@ -10,30 +12,23 @@ contract RegistryLinked is
|
|
10
12
|
IRegistryLinked
|
11
13
|
{
|
12
14
|
|
15
|
+
// priorize simplicity and size over using standard upgradeability structs
|
13
16
|
IRegistry private _registry;
|
14
17
|
|
15
18
|
/// @dev initialization for upgradable contracts
|
16
19
|
// used in _initializeRegisterable
|
17
|
-
function
|
18
|
-
address
|
20
|
+
function __RegistryLinked_init(
|
21
|
+
address registry
|
19
22
|
)
|
20
|
-
|
23
|
+
internal
|
21
24
|
virtual
|
22
25
|
onlyInitializing()
|
23
26
|
{
|
24
|
-
if (
|
25
|
-
revert ErrorNotRegistry(
|
27
|
+
if (!ContractLib.isRegistry(registry)) {
|
28
|
+
revert ErrorNotRegistry(registry);
|
26
29
|
}
|
27
30
|
|
28
|
-
_registry = IRegistry(
|
29
|
-
|
30
|
-
try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
|
31
|
-
if (!isRegistry) {
|
32
|
-
revert ErrorNotRegistry(registryAddress);
|
33
|
-
}
|
34
|
-
} catch {
|
35
|
-
revert ErrorNotRegistry(registryAddress);
|
36
|
-
}
|
31
|
+
_registry = IRegistry(registry);
|
37
32
|
}
|
38
33
|
|
39
34
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
4
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
|
+
import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
6
6
|
|
7
7
|
import {IRegistry} from "../registry/IRegistry.sol";
|
8
8
|
import {IService} from "./IService.sol";
|
9
9
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
10
|
-
import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
10
|
+
import {ObjectType, ObjectTypeLib, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
11
11
|
import {Registerable} from "./Registerable.sol";
|
12
12
|
import {RoleId, RoleIdLib} from "../type/RoleId.sol";
|
13
13
|
import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
|
@@ -18,23 +18,23 @@ import {Versionable} from "../upgradeability/Versionable.sol";
|
|
18
18
|
abstract contract Service is
|
19
19
|
Registerable,
|
20
20
|
Versionable,
|
21
|
-
|
21
|
+
ReentrancyGuardUpgradeable,
|
22
22
|
IService
|
23
23
|
{
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
function initializeService(
|
29
|
-
address registry,
|
25
|
+
function __Service_init(
|
30
26
|
address authority, // real authority for registry service adress(0) for other services
|
27
|
+
address registry,
|
31
28
|
address initialOwner
|
32
29
|
)
|
33
|
-
|
30
|
+
internal
|
34
31
|
virtual
|
35
32
|
onlyInitializing()
|
36
33
|
{
|
37
|
-
|
34
|
+
__ReentrancyGuard_init();
|
35
|
+
|
36
|
+
__Registerable_init(
|
37
|
+
authority,
|
38
38
|
registry,
|
39
39
|
IRegistry(registry).getNftId(),
|
40
40
|
SERVICE(),
|
@@ -42,41 +42,25 @@ abstract contract Service is
|
|
42
42
|
initialOwner,
|
43
43
|
""); // data
|
44
44
|
|
45
|
-
|
46
|
-
if(authority != address(0)) {
|
47
|
-
__AccessManaged_init(authority);
|
48
|
-
} else {
|
49
|
-
address registryServiceAddress = _getServiceAddress(REGISTRY());
|
50
|
-
|
51
|
-
// copy authority from already registered registry services
|
52
|
-
__AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
|
53
|
-
}
|
54
|
-
|
55
|
-
registerInterface(type(IAccessManaged).interfaceId);
|
56
|
-
registerInterface(type(IService).interfaceId);
|
45
|
+
_registerInterface(type(IService).interfaceId);
|
57
46
|
}
|
58
47
|
|
59
48
|
function getDomain() external virtual pure returns(ObjectType serviceDomain) {
|
60
49
|
return _getDomain();
|
61
50
|
}
|
62
51
|
|
63
|
-
function
|
64
|
-
return
|
52
|
+
function getVersion() public pure virtual override (IVersionable, Versionable) returns(Version) {
|
53
|
+
return VersionLib.toVersion(3, 0, 0);
|
65
54
|
}
|
66
55
|
|
67
|
-
//
|
68
|
-
function
|
69
|
-
|
70
|
-
pure
|
71
|
-
virtual override (IVersionable, Versionable)
|
72
|
-
returns(Version)
|
73
|
-
{
|
74
|
-
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
56
|
+
// TODO cleanup
|
57
|
+
function getRoleId() external virtual view returns(RoleId serviceRoleId) {
|
58
|
+
return RoleIdLib.toServiceRoleId(_getDomain(), getRelease());
|
75
59
|
}
|
76
60
|
|
77
61
|
function _getDomain() internal virtual pure returns (ObjectType);
|
78
62
|
|
79
63
|
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
80
|
-
return getRegistry().getServiceAddress(domain,
|
64
|
+
return getRegistry().getServiceAddress(domain, getRelease());
|
81
65
|
}
|
82
66
|
}
|
@@ -5,91 +5,191 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
5
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
6
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
7
7
|
|
8
|
-
import {Amount} from "../type/Amount.sol";
|
8
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
9
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {SERVICE} from "../type/ObjectType.sol";
|
9
13
|
|
10
|
-
|
11
|
-
///
|
12
|
-
///
|
13
|
-
|
14
|
-
|
14
|
+
|
15
|
+
/// @dev Token specific transfer helper base contract.
|
16
|
+
/// A default token contract is provided via contract constructor.
|
17
|
+
/// Relies internally on OpenZeppelin SafeERC20.safeTransferFrom.
|
18
|
+
/// This base contract simplifies writing tests.
|
19
|
+
contract TokenHandlerBase {
|
20
|
+
|
21
|
+
// _setWallet
|
22
|
+
event LogTokenHandlerWalletAddressChanged(NftId componentNftId, address oldWallet, address newWallet);
|
23
|
+
event LogTokenHandlerWalletTokensTransferred(NftId componentNftId, address oldWallet, address newWallet, Amount amount);
|
24
|
+
|
25
|
+
// _approveTokenHandler
|
26
|
+
event LogTokenHandlerTokenApproved(NftId nftId, address tokenHandler, address token, Amount amount, bool isMaxAmount);
|
27
|
+
|
28
|
+
// _transfer
|
29
|
+
event LogTokenHandlerTokenTransfer(address token, address from, address to, Amount amount);
|
30
|
+
|
31
|
+
// constructor
|
32
|
+
error ErrorTokenHandlerNotRegistry(address registry);
|
33
|
+
error ErrorTokenHandlerComponentNotRegistered(address component);
|
34
|
+
error ErrorTokenHandlerTokenAddressZero();
|
35
|
+
|
36
|
+
// _setWallet
|
37
|
+
error ErrorTokenHandlerNewWalletAddressZero();
|
38
|
+
error ErrorTokenHandlerAddressIsSameAsCurrent();
|
39
|
+
|
40
|
+
// _approveTokenHandler
|
41
|
+
error ErrorTokenHandlerNotWallet(NftId nftId, address tokenHandler, address wallet);
|
42
|
+
|
43
|
+
// _checkPreconditions
|
15
44
|
error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
|
16
45
|
error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
|
17
|
-
error
|
18
|
-
|
19
|
-
event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
|
46
|
+
error ErrorTokenHandlerAmountIsZero();
|
20
47
|
|
21
|
-
|
48
|
+
IRegistry public immutable REGISTRY;
|
49
|
+
IERC20Metadata public immutable TOKEN;
|
50
|
+
address public immutable COMPONENT;
|
51
|
+
NftId public immutable NFT_ID;
|
22
52
|
|
23
|
-
|
24
|
-
_token = IERC20Metadata(token);
|
25
|
-
}
|
53
|
+
address internal _wallet;
|
26
54
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
returns (IERC20Metadata)
|
32
|
-
{
|
33
|
-
return _token;
|
34
|
-
}
|
35
|
-
|
36
|
-
/// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
|
37
|
-
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
38
|
-
function collectTokens(
|
39
|
-
address from,
|
40
|
-
address to,
|
41
|
-
Amount amount
|
55
|
+
constructor(
|
56
|
+
address registry,
|
57
|
+
address component,
|
58
|
+
address token
|
42
59
|
)
|
43
|
-
external
|
44
|
-
restricted()
|
45
60
|
{
|
46
|
-
|
61
|
+
if (!ContractLib.isRegistry(registry)) {
|
62
|
+
revert ErrorTokenHandlerNotRegistry(registry);
|
63
|
+
}
|
64
|
+
|
65
|
+
if (token == address(0)) {
|
66
|
+
revert ErrorTokenHandlerTokenAddressZero();
|
67
|
+
}
|
68
|
+
|
69
|
+
REGISTRY = IRegistry(registry);
|
70
|
+
COMPONENT = component;
|
71
|
+
NFT_ID = REGISTRY.getNftIdForAddress(component);
|
72
|
+
|
73
|
+
if (NFT_ID.eqz()) {
|
74
|
+
revert ErrorTokenHandlerComponentNotRegistered(component);
|
75
|
+
}
|
76
|
+
|
77
|
+
TOKEN = IERC20Metadata(token);
|
78
|
+
|
79
|
+
// self approval of token handler to max amount
|
80
|
+
_approve(TOKEN, AmountLib.max());
|
47
81
|
}
|
48
82
|
|
49
|
-
|
50
|
-
///
|
51
|
-
|
83
|
+
|
84
|
+
/// @dev Checks the balance and allowance for the from address and amount.
|
85
|
+
/// When requiring amount > 0 set checkAmount to true.
|
86
|
+
function checkBalanceAndAllowance(
|
52
87
|
address from,
|
53
|
-
address to,
|
54
88
|
Amount amount,
|
55
|
-
|
56
|
-
Amount amount2,
|
57
|
-
address to3,
|
58
|
-
Amount amount3
|
89
|
+
bool checkAmount
|
59
90
|
)
|
60
91
|
external
|
61
|
-
|
92
|
+
view
|
62
93
|
{
|
63
|
-
|
64
|
-
|
94
|
+
_checkBalanceAndAllowance(from, amount, checkAmount);
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
/// @dev Returns the wallet linked to this TokenHandler.
|
99
|
+
function getWallet()
|
100
|
+
public
|
101
|
+
view
|
102
|
+
returns (address wallet)
|
103
|
+
{
|
104
|
+
if (_wallet == address(0)) {
|
105
|
+
return address(this);
|
65
106
|
}
|
66
107
|
|
67
|
-
|
108
|
+
return _wallet;
|
109
|
+
}
|
110
|
+
|
68
111
|
|
69
|
-
|
70
|
-
|
112
|
+
/// @dev Approves token handler to spend up to the specified amount of tokens.
|
113
|
+
/// Sets spending limit to type(uint256).max for AmountLib.max().
|
114
|
+
/// Reverts if wallet is not token handler itself.
|
115
|
+
/// Sets approvel using SareERC20.forceApprove internally.
|
116
|
+
function _approve(
|
117
|
+
IERC20Metadata token,
|
118
|
+
Amount amount
|
119
|
+
)
|
120
|
+
internal
|
121
|
+
{
|
122
|
+
// check that wallet is token handler contract itself
|
123
|
+
if(_wallet != address(0)) {
|
124
|
+
revert ErrorTokenHandlerNotWallet(NFT_ID, address(this), _wallet);
|
71
125
|
}
|
72
|
-
|
73
|
-
|
126
|
+
|
127
|
+
// update spending limit for AmountLib.max() to type(uint256).max
|
128
|
+
uint256 amountInt = amount.toInt();
|
129
|
+
bool isMaxAmount = false;
|
130
|
+
if (amount == AmountLib.max()) {
|
131
|
+
amountInt = type(uint256).max;
|
132
|
+
isMaxAmount = true;
|
74
133
|
}
|
75
|
-
|
76
|
-
|
134
|
+
|
135
|
+
emit LogTokenHandlerTokenApproved(NFT_ID, address(this), address(token), amount, isMaxAmount);
|
136
|
+
|
137
|
+
// execute approval
|
138
|
+
SafeERC20.forceApprove(
|
139
|
+
token,
|
140
|
+
address(this),
|
141
|
+
amountInt);
|
142
|
+
}
|
143
|
+
|
144
|
+
|
145
|
+
function _setWallet(address newWallet)
|
146
|
+
internal
|
147
|
+
{
|
148
|
+
address oldWallet = _wallet;
|
149
|
+
if (newWallet == oldWallet) {
|
150
|
+
revert ErrorTokenHandlerAddressIsSameAsCurrent();
|
151
|
+
}
|
152
|
+
|
153
|
+
// effects
|
154
|
+
address oldWalletForBalance = getWallet();
|
155
|
+
_wallet = newWallet;
|
156
|
+
|
157
|
+
emit LogTokenHandlerWalletAddressChanged(NFT_ID, oldWallet, newWallet);
|
158
|
+
|
159
|
+
// interactions
|
160
|
+
Amount balanceAmount = AmountLib.toAmount(
|
161
|
+
TOKEN.balanceOf(oldWalletForBalance));
|
162
|
+
|
163
|
+
if (balanceAmount.gtz()) {
|
164
|
+
// move tokens from old to new wallet
|
165
|
+
emit LogTokenHandlerWalletTokensTransferred(NFT_ID, oldWallet, newWallet, balanceAmount);
|
166
|
+
|
167
|
+
if (oldWallet == address(0)) {
|
168
|
+
// transfer from the component requires an allowance
|
169
|
+
_transfer(address(this), newWallet, balanceAmount, true);
|
170
|
+
} else if (newWallet == address(0)) {
|
171
|
+
_transfer(oldWallet, address(this), balanceAmount, true);
|
172
|
+
} else {
|
173
|
+
_transfer(oldWallet, newWallet, balanceAmount, true);
|
174
|
+
}
|
77
175
|
}
|
78
176
|
}
|
79
177
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
address from,
|
84
|
-
address to,
|
85
|
-
Amount amount
|
86
|
-
)
|
87
|
-
external
|
88
|
-
restricted()
|
178
|
+
|
179
|
+
function _pullToken(address from, Amount amount)
|
180
|
+
internal
|
89
181
|
{
|
90
|
-
_transfer(from,
|
182
|
+
_transfer(from, getWallet(), amount, true);
|
91
183
|
}
|
92
184
|
|
185
|
+
|
186
|
+
function _pushToken(address to, Amount amount)
|
187
|
+
internal
|
188
|
+
{
|
189
|
+
_transfer(getWallet(), to, amount, true);
|
190
|
+
}
|
191
|
+
|
192
|
+
|
93
193
|
function _transfer(
|
94
194
|
address from,
|
95
195
|
address to,
|
@@ -99,41 +199,144 @@ contract TokenHandler is AccessManaged {
|
|
99
199
|
internal
|
100
200
|
{
|
101
201
|
if (checkPreconditions) {
|
102
|
-
|
103
|
-
|
202
|
+
bool checkAmount = true;
|
203
|
+
_checkBalanceAndAllowance(from, amount, checkAmount);
|
104
204
|
}
|
105
205
|
|
106
206
|
// transfer the tokens
|
107
|
-
emit LogTokenHandlerTokenTransfer(address(
|
207
|
+
emit LogTokenHandlerTokenTransfer(address(TOKEN), from, to, amount);
|
208
|
+
|
108
209
|
SafeERC20.safeTransferFrom(
|
109
|
-
|
210
|
+
TOKEN,
|
110
211
|
from,
|
111
212
|
to,
|
112
213
|
amount.toInt());
|
113
214
|
}
|
114
215
|
|
115
|
-
|
216
|
+
|
217
|
+
function _checkBalanceAndAllowance(
|
116
218
|
address from,
|
117
|
-
Amount amount
|
219
|
+
Amount amount,
|
220
|
+
bool checkAmount
|
118
221
|
)
|
119
222
|
internal
|
120
223
|
view
|
121
224
|
{
|
122
225
|
// amount must be greater than zero
|
123
|
-
if (amount.eqz()) {
|
226
|
+
if (checkAmount && amount.eqz()) {
|
124
227
|
revert ErrorTokenHandlerAmountIsZero();
|
125
228
|
}
|
126
229
|
|
230
|
+
// allowance must be >= amount
|
231
|
+
uint256 allowance = TOKEN.allowance(from, address(this));
|
232
|
+
if (allowance < amount.toInt()) {
|
233
|
+
revert ErrorTokenHandlerAllowanceTooSmall(address(TOKEN), from, address(this), allowance, amount.toInt());
|
234
|
+
}
|
235
|
+
|
127
236
|
// balance must be >= amount
|
128
|
-
uint256 balance =
|
237
|
+
uint256 balance = TOKEN.balanceOf(from);
|
129
238
|
if (balance < amount.toInt()) {
|
130
|
-
revert ErrorTokenHandlerBalanceTooLow(address(
|
239
|
+
revert ErrorTokenHandlerBalanceTooLow(address(TOKEN), from, balance, amount.toInt());
|
131
240
|
}
|
241
|
+
}
|
242
|
+
}
|
132
243
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
244
|
+
|
245
|
+
/// @dev Token specific transfer helper.
|
246
|
+
/// Contract is derived from TokenHandlerBase and adds
|
247
|
+
/// authorization based on OpenZeppelin AccessManaged.
|
248
|
+
contract TokenHandler is
|
249
|
+
AccessManaged,
|
250
|
+
TokenHandlerBase
|
251
|
+
{
|
252
|
+
|
253
|
+
// onlyService
|
254
|
+
error ErrorTokenHandlerNotService(address service);
|
255
|
+
|
256
|
+
modifier onlyService() {
|
257
|
+
if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
|
258
|
+
revert ErrorTokenHandlerNotService(msg.sender);
|
137
259
|
}
|
260
|
+
_;
|
261
|
+
}
|
262
|
+
|
263
|
+
constructor(
|
264
|
+
address registry,
|
265
|
+
address component,
|
266
|
+
address token,
|
267
|
+
address authority
|
268
|
+
)
|
269
|
+
TokenHandlerBase(registry, component, token)
|
270
|
+
AccessManaged(authority)
|
271
|
+
{ }
|
272
|
+
|
273
|
+
/// @dev Sets the wallet address for the component.
|
274
|
+
/// Seeting the new wallet address to address(0) will set the wallet to the tokenHandler contract itself.
|
275
|
+
/// If the current wallet has tokens, these will be transferred.
|
276
|
+
/// If the new wallet address is externally owned, an approval from the
|
277
|
+
/// owner of the external wallet to the tokenhandler of the component that
|
278
|
+
/// covers the current component balance must exist.
|
279
|
+
function setWallet(address newWallet)
|
280
|
+
external
|
281
|
+
restricted()
|
282
|
+
onlyService()
|
283
|
+
{
|
284
|
+
_setWallet(newWallet);
|
285
|
+
}
|
286
|
+
|
287
|
+
|
288
|
+
/// @dev Approves token handler to spend up to the specified amount of tokens.
|
289
|
+
/// Sets spending limit to type(uint256).max for AmountLib.max().
|
290
|
+
/// Reverts if component wallet is not component itself.
|
291
|
+
/// Sets approvel using SareERC20.forceApprove internally.
|
292
|
+
function approve(
|
293
|
+
IERC20Metadata token,
|
294
|
+
Amount amount
|
295
|
+
)
|
296
|
+
external
|
297
|
+
restricted()
|
298
|
+
onlyService()
|
299
|
+
{
|
300
|
+
_approve(token, amount);
|
301
|
+
}
|
302
|
+
|
303
|
+
/// @dev Collect tokens from outside of GIF and transfer them to the wallet.
|
304
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
305
|
+
function pullToken(
|
306
|
+
address from,
|
307
|
+
Amount amount
|
308
|
+
)
|
309
|
+
external
|
310
|
+
restricted()
|
311
|
+
onlyService()
|
312
|
+
{
|
313
|
+
_pullToken(from, amount);
|
314
|
+
}
|
315
|
+
|
316
|
+
|
317
|
+
/// @dev Distribute tokens from a wallet within the scope of gif to some address.
|
318
|
+
function pushToken(
|
319
|
+
address to,
|
320
|
+
Amount amount
|
321
|
+
)
|
322
|
+
external
|
323
|
+
restricted()
|
324
|
+
onlyService()
|
325
|
+
{
|
326
|
+
_pushToken(to, amount);
|
327
|
+
}
|
328
|
+
|
329
|
+
|
330
|
+
/// @dev Distribute fee tokens from a wallet within the scope of gif to some address.
|
331
|
+
/// Separate push function for component service.
|
332
|
+
function pushFeeToken(
|
333
|
+
address to,
|
334
|
+
Amount amount
|
335
|
+
)
|
336
|
+
external
|
337
|
+
restricted()
|
338
|
+
onlyService()
|
339
|
+
{
|
340
|
+
_pushToken(to, amount);
|
138
341
|
}
|
139
342
|
}
|
@@ -5,8 +5,16 @@ import {TokenHandler} from "./TokenHandler.sol";
|
|
5
5
|
|
6
6
|
library TokenHandlerDeployerLib {
|
7
7
|
|
8
|
-
function deployTokenHandler(
|
9
|
-
|
8
|
+
function deployTokenHandler(
|
9
|
+
address registry,
|
10
|
+
address component,
|
11
|
+
address token,
|
12
|
+
address authority
|
13
|
+
)
|
14
|
+
public
|
15
|
+
returns (TokenHandler)
|
16
|
+
{
|
17
|
+
return new TokenHandler(registry, component, token, authority);
|
10
18
|
}
|
11
19
|
|
12
20
|
}
|
@@ -1,6 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {Amount} from "../type/Amount.sol";
|
5
7
|
import {IComponent} from "../shared/IComponent.sol";
|
6
8
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
@@ -22,6 +24,7 @@ interface IStaking is
|
|
22
24
|
// target parameters
|
23
25
|
event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
|
24
26
|
event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
|
27
|
+
event LogStakingMaxStakedAmountSet(NftId targetNftId, Amount maxStakedAmount);
|
25
28
|
|
26
29
|
// modifiers
|
27
30
|
error ErrorStakingNotStake(NftId stakeNftId);
|
@@ -30,6 +33,9 @@ interface IStaking is
|
|
30
33
|
error ErrorStakingNotStakingOwner();
|
31
34
|
error ErrorStakingNotNftOwner(NftId nftId);
|
32
35
|
|
36
|
+
// initializeTokenHandler
|
37
|
+
error ErrorStakingNotRegistry(address registry);
|
38
|
+
|
33
39
|
// staking rate
|
34
40
|
error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
|
35
41
|
|
@@ -42,27 +48,37 @@ interface IStaking is
|
|
42
48
|
error ErrorStakingTargetNftIdZero();
|
43
49
|
error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
|
44
50
|
error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
|
45
|
-
error
|
51
|
+
error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
|
46
52
|
error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
|
53
|
+
error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
|
47
54
|
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
48
55
|
error ErrorStakingTargetNotFound(NftId targetNftId);
|
49
56
|
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
57
|
+
error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount maxStakedAmount, Amount stakedAmount);
|
50
58
|
|
51
|
-
error ErrorStakingTargetNotActive(NftId targetNftId);
|
52
59
|
error ErrorStakingStakeAmountZero(NftId targetNftId);
|
53
60
|
|
54
61
|
// info for individual stake
|
55
62
|
struct StakeInfo {
|
63
|
+
// slot 0
|
56
64
|
Timestamp lockedUntil;
|
57
65
|
}
|
58
66
|
|
59
67
|
struct TargetInfo {
|
68
|
+
// Slot 0
|
69
|
+
UFixed rewardRate;
|
70
|
+
Amount maxStakedAmount;
|
71
|
+
// Slot 1
|
60
72
|
ObjectType objectType;
|
61
|
-
uint256 chainId;
|
62
73
|
Seconds lockingPeriod;
|
63
|
-
|
74
|
+
// Slot 2
|
75
|
+
uint256 chainId;
|
64
76
|
}
|
65
77
|
|
78
|
+
function initializeTokenHandler() external;
|
79
|
+
|
80
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external;
|
81
|
+
|
66
82
|
// staking rate management
|
67
83
|
|
68
84
|
/// @dev sets the rate that converts 1 token of total value locked into the
|
@@ -89,6 +105,10 @@ interface IStaking is
|
|
89
105
|
/// permissioned: only the staking service may call this function
|
90
106
|
function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
|
91
107
|
|
108
|
+
/// @dev set the maximum staked amount for the specified target.
|
109
|
+
/// permissioned: only the staking service may call this function
|
110
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount) external;
|
111
|
+
|
92
112
|
/// @dev (re)fills the staking reward reserves for the specified target
|
93
113
|
/// unpermissioned: anybody may fill up staking reward reserves
|
94
114
|
function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
@@ -126,7 +146,7 @@ interface IStaking is
|
|
126
146
|
/// @dev restakes the dips to a new target.
|
127
147
|
/// the sum of the staked dips and the accumulated rewards will be restaked.
|
128
148
|
/// permissioned: only staking service may call this function.
|
129
|
-
function restake(NftId stakeNftId, NftId
|
149
|
+
function restake(NftId stakeNftId, NftId newStakeNftId) external returns (Amount newStakeBalance);
|
130
150
|
|
131
151
|
/// @dev retuns the specified amount of dips to the holder of the specified stake nft.
|
132
152
|
/// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
|
@@ -152,14 +172,6 @@ interface IStaking is
|
|
152
172
|
Amount rewardsClaimedAmount
|
153
173
|
);
|
154
174
|
|
155
|
-
//--- helper functions --------------------------------------------------//
|
156
|
-
|
157
|
-
/// @dev transfers the specified amount of dips from the from address to the staking wallet.
|
158
|
-
function collectDipAmount(address from, Amount dipAmount) external;
|
159
|
-
|
160
|
-
/// @dev transfers the specified amount of dips from the staking wallet to the to addess.
|
161
|
-
function transferDipAmount(address to, Amount dipAmount) external;
|
162
|
-
|
163
175
|
//--- view and pure functions -------------------------------------------//
|
164
176
|
|
165
177
|
function getStakingStore() external view returns (StakingStore stakingStore);
|