@etherisc/gif-next 0.0.2-f15b559-661 → 0.0.2-f1b01e0-214
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 +43 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +38 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +26 -26
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +6 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +366 -251
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +101 -28
- 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 +283 -189
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +37 -5
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +32 -145
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +101 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1 -87
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +160 -89
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +56 -52
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1 -87
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +68 -5
- 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 +44 -74
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +101 -46
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +94 -124
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +101 -46
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +82 -173
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +101 -46
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +20 -63
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +69 -112
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +101 -46
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +95 -138
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +101 -46
- 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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +104 -8
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +62 -13
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +119 -26
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +520 -413
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +101 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -196
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +94 -65
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -36
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +356 -346
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
- 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 +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 +14 -35
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +98 -35
- 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 +0 -21
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -21
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +42 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +31 -31
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +22 -43
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +101 -46
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +64 -64
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +39 -39
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +6 -6
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +10 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +18 -18
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +10 -31
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +34 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +80 -80
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +41 -41
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +90 -24
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +27 -48
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +101 -46
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +78 -78
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +50 -50
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +42 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +21 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +21 -42
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +21 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +62 -62
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +32 -32
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +41 -41
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -82
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +21 -42
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +55 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +27 -23
- 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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +445 -355
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +19 -19
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +481 -376
- 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 +128 -124
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -21
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +114 -129
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +45 -49
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +60 -4
- 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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +44 -51
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -21
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- 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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -21
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- 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 +2 -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/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/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 +83 -39
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -4
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +133 -94
- 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 +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +41 -37
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +34 -61
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +109 -30
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +27 -23
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +148 -134
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +47 -37
- 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/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 +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- 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/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -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 +4 -4
- 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/IAccountingService.sol +2 -2
- package/contracts/authorization/AccessAdmin.sol +201 -186
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +40 -31
- package/contracts/authorization/Authorization.sol +61 -33
- package/contracts/authorization/IAccess.sol +13 -5
- package/contracts/authorization/IAccessAdmin.sol +63 -36
- package/contracts/authorization/IAuthorization.sol +6 -0
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +3 -48
- package/contracts/distribution/DistributionService.sol +57 -30
- package/contracts/distribution/IDistributionComponent.sol +0 -9
- package/contracts/distribution/IDistributionService.sol +4 -2
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
- package/contracts/instance/IInstance.sol +45 -9
- package/contracts/instance/IInstanceService.sol +19 -3
- package/contracts/instance/Instance.sol +73 -16
- package/contracts/instance/InstanceAdmin.sol +120 -107
- package/contracts/instance/InstanceAuthorizationV3.sol +43 -21
- package/contracts/instance/InstanceReader.sol +13 -0
- package/contracts/instance/InstanceService.sol +128 -73
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +16 -5
- package/contracts/instance/module/IDistribution.sol +19 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -1
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +0 -2
- package/contracts/pool/BasicPool.sol +0 -2
- package/contracts/pool/BasicPoolAuthorization.sol +1 -1
- package/contracts/pool/Pool.sol +0 -2
- package/contracts/pool/PoolService.sol +1 -3
- package/contracts/product/ApplicationService.sol +21 -6
- package/contracts/product/BasicProduct.sol +0 -2
- package/contracts/product/BasicProductAuthorization.sol +1 -1
- package/contracts/product/IApplicationService.sol +3 -0
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +3 -0
- package/contracts/product/PolicyService.sol +0 -18
- package/contracts/product/PricingService.sol +11 -6
- package/contracts/product/Product.sol +0 -2
- package/contracts/product/RiskService.sol +10 -0
- package/contracts/registry/IRegistry.sol +4 -0
- package/contracts/registry/RegistryAdmin.sol +133 -229
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/ReleaseAdmin.sol +30 -22
- package/contracts/registry/ReleaseRegistry.sol +39 -33
- package/contracts/registry/ServiceAuthorizationV3.sol +87 -3
- package/contracts/shared/Component.sol +13 -30
- package/contracts/shared/ComponentService.sol +58 -42
- package/contracts/shared/ContractLib.sol +28 -0
- package/contracts/shared/IComponent.sol +0 -3
- package/contracts/shared/IComponentService.sol +9 -9
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +0 -2
- package/contracts/shared/NftOwnable.sol +1 -1
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/TokenHandler.sol +5 -4
- package/contracts/staking/IStaking.sol +12 -2
- package/contracts/staking/IStakingService.sol +8 -1
- package/contracts/staking/Staking.sol +35 -15
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +79 -22
- package/contracts/staking/StakingReader.sol +5 -15
- package/contracts/staking/StakingService.sol +36 -2
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/ObjectType.sol +5 -14
- package/contracts/type/UFixed.sol +27 -10
- package/contracts/type/Version.sol +39 -0
- package/package.json +2 -2
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
@@ -26,7 +26,6 @@ abstract contract Registerable is
|
|
26
26
|
struct RegisterableStorage {
|
27
27
|
NftId _parentNftId;
|
28
28
|
ObjectType _objectType;
|
29
|
-
VersionPart _release;
|
30
29
|
bool _isInterceptor;
|
31
30
|
bytes _data;
|
32
31
|
}
|
@@ -61,7 +60,6 @@ abstract contract Registerable is
|
|
61
60
|
RegisterableStorage storage $ = _getRegisterableStorage();
|
62
61
|
$._parentNftId = parentNftId;
|
63
62
|
$._objectType = objectType;
|
64
|
-
$._release = AccessManagerCloneable(authority).getRelease();
|
65
63
|
$._isInterceptor = isInterceptor;
|
66
64
|
$._data = data;
|
67
65
|
|
@@ -77,8 +75,7 @@ abstract contract Registerable is
|
|
77
75
|
|
78
76
|
/// @inheritdoc IRelease
|
79
77
|
function getRelease() public virtual view returns (VersionPart release) {
|
80
|
-
|
81
|
-
return $._release;
|
78
|
+
return AccessManagerCloneable(authority()).getRelease();
|
82
79
|
}
|
83
80
|
|
84
81
|
|
@@ -270,11 +270,12 @@ contract TokenHandler is
|
|
270
270
|
AccessManaged(authority)
|
271
271
|
{ }
|
272
272
|
|
273
|
-
/// @dev
|
274
|
-
///
|
275
|
-
///
|
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
|
276
277
|
/// owner of the external wallet to the tokenhandler of the component that
|
277
|
-
/// covers the current component balance must exist
|
278
|
+
/// covers the current component balance must exist.
|
278
279
|
function setWallet(address newWallet)
|
279
280
|
external
|
280
281
|
restricted()
|
@@ -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);
|
@@ -51,8 +54,8 @@ interface IStaking is
|
|
51
54
|
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
52
55
|
error ErrorStakingTargetNotFound(NftId targetNftId);
|
53
56
|
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
57
|
+
error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount maxStakedAmount, Amount stakedAmount);
|
54
58
|
|
55
|
-
error ErrorStakingTargetNotActive(NftId targetNftId);
|
56
59
|
error ErrorStakingStakeAmountZero(NftId targetNftId);
|
57
60
|
|
58
61
|
// info for individual stake
|
@@ -65,10 +68,13 @@ interface IStaking is
|
|
65
68
|
uint256 chainId;
|
66
69
|
Seconds lockingPeriod;
|
67
70
|
UFixed rewardRate;
|
71
|
+
Amount maxStakedAmount;
|
68
72
|
}
|
69
73
|
|
70
74
|
function initializeTokenHandler() external;
|
71
75
|
|
76
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external;
|
77
|
+
|
72
78
|
// staking rate management
|
73
79
|
|
74
80
|
/// @dev sets the rate that converts 1 token of total value locked into the
|
@@ -95,6 +101,10 @@ interface IStaking is
|
|
95
101
|
/// permissioned: only the staking service may call this function
|
96
102
|
function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
|
97
103
|
|
104
|
+
/// @dev set the maximum staked amount for the specified target.
|
105
|
+
/// permissioned: only the staking service may call this function
|
106
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount) external;
|
107
|
+
|
98
108
|
/// @dev (re)fills the staking reward reserves for the specified target
|
99
109
|
/// unpermissioned: anybody may fill up staking reward reserves
|
100
110
|
function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
@@ -132,7 +142,7 @@ interface IStaking is
|
|
132
142
|
/// @dev restakes the dips to a new target.
|
133
143
|
/// the sum of the staked dips and the accumulated rewards will be restaked.
|
134
144
|
/// permissioned: only staking service may call this function.
|
135
|
-
function restake(NftId stakeNftId, NftId
|
145
|
+
function restake(NftId stakeNftId, NftId newStakeNftId) external returns (Amount newStakeBalance);
|
136
146
|
|
137
147
|
/// @dev retuns the specified amount of dips to the holder of the specified stake nft.
|
138
148
|
/// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
|
@@ -26,6 +26,7 @@ interface IStakingService is IService
|
|
26
26
|
event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
|
27
27
|
event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
|
28
28
|
event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
|
29
|
+
event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
|
29
30
|
|
30
31
|
event LogStakingServiceRewardsUpdated(NftId stakeNftId);
|
31
32
|
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
@@ -36,6 +37,7 @@ interface IStakingService is IService
|
|
36
37
|
error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
|
37
38
|
|
38
39
|
// create
|
40
|
+
error ErrorStakingServiceTargetUnknown(NftId targetNftId);
|
39
41
|
error ErrorStakingServiceZeroTargetNftId();
|
40
42
|
error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
|
41
43
|
error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
|
@@ -72,6 +74,10 @@ interface IStakingService is IService
|
|
72
74
|
/// Permissioned: Only owner of the specified target.
|
73
75
|
function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
|
74
76
|
|
77
|
+
/// @dev Set the instance max staked amount to the specified value.
|
78
|
+
/// Permissioned: Only owner of the specified target.
|
79
|
+
function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
|
80
|
+
|
75
81
|
/// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
|
76
82
|
/// unpermissioned: anybody may fill up staking reward reserves
|
77
83
|
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
|
@@ -116,7 +122,8 @@ interface IStakingService is IService
|
|
116
122
|
)
|
117
123
|
external
|
118
124
|
returns (
|
119
|
-
NftId newStakeNftId
|
125
|
+
NftId newStakeNftId,
|
126
|
+
Amount newStakeBalance
|
120
127
|
);
|
121
128
|
|
122
129
|
|
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
8
7
|
import {IRelease} from "../registry/IRelease.sol";
|
9
8
|
import {IStaking} from "./IStaking.sol";
|
10
9
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
@@ -14,10 +13,10 @@ import {Component} from "../shared/Component.sol";
|
|
14
13
|
import {IComponent} from "../shared/IComponent.sol";
|
15
14
|
import {IComponentService} from "../shared/IComponentService.sol";
|
16
15
|
import {NftId} from "../type/NftId.sol";
|
17
|
-
import {ObjectType,
|
16
|
+
import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
|
18
17
|
import {Seconds} from "../type/Seconds.sol";
|
19
18
|
import {Registerable} from "../shared/Registerable.sol";
|
20
|
-
import {
|
19
|
+
import {StakingLib} from "./StakingLib.sol";
|
21
20
|
import {StakingReader} from "./StakingReader.sol";
|
22
21
|
import {StakingStore} from "./StakingStore.sol";
|
23
22
|
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
@@ -71,10 +70,11 @@ contract Staking is
|
|
71
70
|
}
|
72
71
|
|
73
72
|
StakingStorage storage $ = _getStakingStorage();
|
73
|
+
address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
|
74
74
|
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
75
75
|
address(getRegistry()),
|
76
76
|
address(this),
|
77
|
-
|
77
|
+
dipToken,
|
78
78
|
getRegistry().getAuthority());
|
79
79
|
}
|
80
80
|
|
@@ -147,7 +147,8 @@ contract Staking is
|
|
147
147
|
objectType: expectedObjectType,
|
148
148
|
chainId: chainId,
|
149
149
|
lockingPeriod: initialLockingPeriod,
|
150
|
-
rewardRate: initialRewardRate
|
150
|
+
rewardRate: initialRewardRate,
|
151
|
+
maxStakedAmount: AmountLib.max()}));
|
151
152
|
}
|
152
153
|
|
153
154
|
|
@@ -195,6 +196,21 @@ contract Staking is
|
|
195
196
|
emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
|
196
197
|
}
|
197
198
|
|
199
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
|
200
|
+
external
|
201
|
+
virtual
|
202
|
+
restricted()
|
203
|
+
onlyTarget(targetNftId)
|
204
|
+
{
|
205
|
+
IStaking.TargetInfo memory targetInfo = getStakingReader().getTargetInfo(targetNftId);
|
206
|
+
|
207
|
+
targetInfo.maxStakedAmount = maxStakedAmount;
|
208
|
+
|
209
|
+
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
210
|
+
|
211
|
+
emit LogStakingMaxStakedAmountSet(targetNftId, maxStakedAmount);
|
212
|
+
}
|
213
|
+
|
198
214
|
|
199
215
|
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
200
216
|
external
|
@@ -276,7 +292,7 @@ contract Staking is
|
|
276
292
|
restricted() // only staking service
|
277
293
|
{
|
278
294
|
StakingStorage storage $ = _getStakingStorage();
|
279
|
-
Timestamp lockedUntil =
|
295
|
+
Timestamp lockedUntil = StakingLib.checkCreateParameters(
|
280
296
|
$._reader,
|
281
297
|
targetNftId,
|
282
298
|
stakeAmount);
|
@@ -306,7 +322,7 @@ contract Staking is
|
|
306
322
|
returns (Amount stakeBalance)
|
307
323
|
{
|
308
324
|
StakingStorage storage $ = _getStakingStorage();
|
309
|
-
stakeBalance =
|
325
|
+
stakeBalance = StakingLib.stake(
|
310
326
|
getRegistry(),
|
311
327
|
$._reader,
|
312
328
|
$._store,
|
@@ -317,21 +333,26 @@ contract Staking is
|
|
317
333
|
|
318
334
|
function restake(
|
319
335
|
NftId stakeNftId,
|
320
|
-
NftId
|
336
|
+
NftId newStakeNftId
|
321
337
|
)
|
322
338
|
external
|
323
339
|
virtual
|
324
340
|
restricted() // only staking service
|
325
341
|
onlyStake(stakeNftId)
|
326
|
-
returns (
|
342
|
+
returns (Amount newStakeBalance)
|
327
343
|
{
|
344
|
+
_checkNftType(stakeNftId, STAKE());
|
345
|
+
_checkNftType(newStakeNftId, STAKE());
|
346
|
+
|
328
347
|
// TODO add check that allows additional staking amount
|
329
348
|
StakingStorage storage $ = _getStakingStorage();
|
330
|
-
|
331
|
-
|
349
|
+
newStakeBalance = StakingLib.restake(
|
350
|
+
$._reader,
|
351
|
+
$._store,
|
352
|
+
stakeNftId,
|
353
|
+
newStakeNftId);
|
332
354
|
}
|
333
355
|
|
334
|
-
|
335
356
|
function updateRewards(NftId stakeNftId)
|
336
357
|
external
|
337
358
|
virtual
|
@@ -380,7 +401,7 @@ contract Staking is
|
|
380
401
|
{
|
381
402
|
StakingStorage storage $ = _getStakingStorage();
|
382
403
|
|
383
|
-
|
404
|
+
StakingLib.checkUnstakeParameters($._reader, stakeNftId);
|
384
405
|
|
385
406
|
// update rewards since last update
|
386
407
|
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
@@ -452,7 +473,7 @@ contract Staking is
|
|
452
473
|
UFixed rewardRate;
|
453
474
|
|
454
475
|
(targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
|
455
|
-
(Amount rewardIncrement, ) =
|
476
|
+
(Amount rewardIncrement, ) = StakingLib.calculateRewardIncrease(
|
456
477
|
reader,
|
457
478
|
stakeNftId,
|
458
479
|
rewardRate);
|
@@ -507,7 +528,6 @@ contract Staking is
|
|
507
528
|
registryAddress,
|
508
529
|
registry.getNftId(), // parent nft id
|
509
530
|
CONTRACT_NAME,
|
510
|
-
dipTokenAddress,
|
511
531
|
STAKING(),
|
512
532
|
false, // is interceptor
|
513
533
|
stakingOwner,
|
@@ -1,16 +1,10 @@
|
|
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
|
-
|
6
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
-
import {Component} from "../shared/Component.sol";
|
8
5
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
6
|
import {IStaking} from "./IStaking.sol";
|
11
|
-
import {Key32} from "../type/Key32.sol";
|
12
7
|
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
|
14
8
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
9
|
import {StakingReader} from "./StakingReader.sol";
|
16
10
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -18,7 +12,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
|
18
12
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
13
|
|
20
14
|
|
21
|
-
library
|
15
|
+
library StakingLib {
|
22
16
|
|
23
17
|
function stake(
|
24
18
|
IRegistry registry,
|
@@ -52,6 +46,11 @@ library StakeManagerLib {
|
|
52
46
|
// TODO check that additional dip, rewards and rewards increment
|
53
47
|
// are still ok with max target staking amount
|
54
48
|
NftId targetNftId = registry.getParentNftId(stakeNftId);
|
49
|
+
Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
|
50
|
+
|
51
|
+
if (stakeBalance > maxStakedAmount) {
|
52
|
+
revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, stakeBalance);
|
53
|
+
}
|
55
54
|
|
56
55
|
stakingStore.restakeRewards(
|
57
56
|
stakeNftId,
|
@@ -72,6 +71,55 @@ library StakeManagerLib {
|
|
72
71
|
|
73
72
|
}
|
74
73
|
|
74
|
+
function restake(
|
75
|
+
StakingReader stakingReader,
|
76
|
+
StakingStore stakingStore,
|
77
|
+
NftId oldStakeNftId,
|
78
|
+
NftId newStakeNftId
|
79
|
+
)
|
80
|
+
external
|
81
|
+
returns (Amount newStakeBalance)
|
82
|
+
{
|
83
|
+
checkUnstakeParameters(stakingReader, oldStakeNftId);
|
84
|
+
(NftId oldTargetNftId, UFixed oldRewardRate) = stakingReader.getTargetRewardRate(oldStakeNftId);
|
85
|
+
|
86
|
+
// calculate new rewards update and unstake full amount
|
87
|
+
(
|
88
|
+
Amount rewardIncrementAmount,
|
89
|
+
) = calculateRewardIncrease(
|
90
|
+
stakingReader,
|
91
|
+
oldStakeNftId,
|
92
|
+
oldRewardRate);
|
93
|
+
stakingStore.updateRewards(
|
94
|
+
oldStakeNftId,
|
95
|
+
oldTargetNftId,
|
96
|
+
rewardIncrementAmount);
|
97
|
+
(
|
98
|
+
Amount unstakedAmount,
|
99
|
+
Amount rewardsAmount
|
100
|
+
) = stakingStore.unstakeUpTo(
|
101
|
+
oldStakeNftId,
|
102
|
+
oldTargetNftId,
|
103
|
+
AmountLib.max(), // unstake all stakes
|
104
|
+
AmountLib.max()); // claim all rewards
|
105
|
+
|
106
|
+
// calculate full restake amount
|
107
|
+
newStakeBalance = unstakedAmount + rewardsAmount;
|
108
|
+
NftId newTargetNftId = stakingReader.getTargetNftId(newStakeNftId);
|
109
|
+
|
110
|
+
// create new staking target and increase stake
|
111
|
+
Timestamp newLockedUntil = _checkCreateParameters(stakingReader, newTargetNftId, newStakeBalance);
|
112
|
+
stakingStore.create(
|
113
|
+
newStakeNftId,
|
114
|
+
IStaking.StakeInfo({
|
115
|
+
lockedUntil: newLockedUntil
|
116
|
+
}));
|
117
|
+
stakingStore.increaseStake(
|
118
|
+
newStakeNftId,
|
119
|
+
newTargetNftId,
|
120
|
+
newStakeBalance);
|
121
|
+
}
|
122
|
+
|
75
123
|
function checkCreateParameters(
|
76
124
|
StakingReader stakingReader,
|
77
125
|
NftId targetNftId,
|
@@ -82,6 +130,19 @@ library StakeManagerLib {
|
|
82
130
|
returns (
|
83
131
|
Timestamp lockedUntil
|
84
132
|
)
|
133
|
+
{
|
134
|
+
return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
|
135
|
+
}
|
136
|
+
|
137
|
+
function _checkCreateParameters(
|
138
|
+
StakingReader stakingReader,
|
139
|
+
NftId targetNftId,
|
140
|
+
Amount dipAmount
|
141
|
+
)
|
142
|
+
internal view
|
143
|
+
returns (
|
144
|
+
Timestamp lockedUntil
|
145
|
+
)
|
85
146
|
{
|
86
147
|
Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
|
87
148
|
checkDipAmount(stakingReader, targetNftId, dipAmount);
|
@@ -104,11 +165,11 @@ library StakeManagerLib {
|
|
104
165
|
{
|
105
166
|
NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
|
106
167
|
|
107
|
-
//
|
108
|
-
if (!stakingReader.
|
109
|
-
revert IStaking.
|
168
|
+
// target nft id must be registered
|
169
|
+
if (!stakingReader.isTarget(targetNftId)) {
|
170
|
+
revert IStaking.ErrorStakingNotTarget(targetNftId);
|
110
171
|
}
|
111
|
-
|
172
|
+
|
112
173
|
IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
|
113
174
|
rewardRate = info.rewardRate;
|
114
175
|
lockingPeriod = info.lockingPeriod;
|
@@ -121,12 +182,11 @@ library StakeManagerLib {
|
|
121
182
|
public
|
122
183
|
view
|
123
184
|
returns (
|
124
|
-
UFixed rewardRate,
|
125
185
|
Seconds lockingPeriod
|
126
186
|
)
|
127
187
|
{
|
128
188
|
IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
|
129
|
-
|
189
|
+
|
130
190
|
if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
|
131
191
|
revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
|
132
192
|
}
|
@@ -146,11 +206,6 @@ library StakeManagerLib {
|
|
146
206
|
revert IStaking.ErrorStakingNotTarget(targetNftId);
|
147
207
|
}
|
148
208
|
|
149
|
-
// only accept stakes for active targets
|
150
|
-
if (!stakingReader.isActive(targetNftId)) {
|
151
|
-
revert IStaking.ErrorStakingTargetNotActive(targetNftId);
|
152
|
-
}
|
153
|
-
|
154
209
|
lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
|
155
210
|
}
|
156
211
|
|
@@ -161,14 +216,17 @@ library StakeManagerLib {
|
|
161
216
|
Amount dipAmount
|
162
217
|
)
|
163
218
|
public
|
164
|
-
|
219
|
+
view
|
165
220
|
{
|
166
221
|
// check stake amount > 0
|
167
222
|
if (dipAmount.eqz()) {
|
168
223
|
revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
|
169
224
|
}
|
170
225
|
|
171
|
-
|
226
|
+
Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
|
227
|
+
if (dipAmount > maxStakedAmount) {
|
228
|
+
revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, dipAmount);
|
229
|
+
}
|
172
230
|
}
|
173
231
|
|
174
232
|
function calculateRewardIncrease(
|
@@ -196,11 +254,10 @@ library StakeManagerLib {
|
|
196
254
|
rewardRate,
|
197
255
|
duration,
|
198
256
|
stakeAmount);
|
199
|
-
|
257
|
+
|
200
258
|
totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
|
201
259
|
}
|
202
260
|
|
203
|
-
|
204
261
|
function calculateRewardAmount(
|
205
262
|
UFixed rewardRate,
|
206
263
|
Seconds duration,
|
@@ -77,21 +77,6 @@ contract StakingReader is
|
|
77
77
|
}
|
78
78
|
|
79
79
|
|
80
|
-
function isActive(NftId targetNftId) external view returns (bool) {
|
81
|
-
return _store.getTargetNftIdSet().isActive(targetNftId);
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
function activeTargets() external view returns (uint256) {
|
86
|
-
return _store.getTargetNftIdSet().activeNftIds();
|
87
|
-
}
|
88
|
-
|
89
|
-
|
90
|
-
function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
|
91
|
-
return _store.getTargetNftIdSet().getActiveNftId(idx);
|
92
|
-
}
|
93
|
-
|
94
|
-
|
95
80
|
function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
|
96
81
|
return _registry.getParentNftId(stakeNftId);
|
97
82
|
}
|
@@ -119,6 +104,11 @@ contract StakingReader is
|
|
119
104
|
rewardRate = getTargetInfo(targetNftId).rewardRate;
|
120
105
|
}
|
121
106
|
|
107
|
+
/// @dev get the max staked amount allowed for the specified target nft id.
|
108
|
+
function getTargetMaxStakedAmount(NftId targetNftId) external view returns (Amount maxStakedAmount) {
|
109
|
+
return getTargetInfo(targetNftId).maxStakedAmount;
|
110
|
+
}
|
111
|
+
|
122
112
|
|
123
113
|
/// @dev get the reward rate for the specified target nft id.
|
124
114
|
function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
|
@@ -98,6 +98,17 @@ contract StakingService is
|
|
98
98
|
rewardRate);
|
99
99
|
}
|
100
100
|
|
101
|
+
function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount)
|
102
|
+
external
|
103
|
+
virtual
|
104
|
+
restricted()
|
105
|
+
{
|
106
|
+
_checkNftType(instanceNftId, INSTANCE());
|
107
|
+
_getStakingServiceStorage()._staking.setMaxStakedAmount(
|
108
|
+
instanceNftId,
|
109
|
+
maxStakingAmount);
|
110
|
+
}
|
111
|
+
|
101
112
|
|
102
113
|
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
|
103
114
|
external
|
@@ -227,13 +238,36 @@ contract StakingService is
|
|
227
238
|
restricted()
|
228
239
|
onlyNftOwner(stakeNftId)
|
229
240
|
returns (
|
230
|
-
NftId newStakeNftId
|
241
|
+
NftId newStakeNftId,
|
242
|
+
Amount newStakeBalance
|
231
243
|
)
|
232
244
|
{
|
233
245
|
_checkNftType(stakeNftId, STAKE());
|
234
246
|
|
235
247
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
236
|
-
|
248
|
+
address stakeOwner = msg.sender;
|
249
|
+
|
250
|
+
if (! getRegistry().isRegistered(newTargetNftId)) {
|
251
|
+
revert ErrorStakingServiceTargetUnknown(newTargetNftId);
|
252
|
+
}
|
253
|
+
|
254
|
+
// register new stake object with registry
|
255
|
+
newStakeNftId = $._registryService.registerStake(
|
256
|
+
IRegistry.ObjectInfo({
|
257
|
+
nftId: NftIdLib.zero(),
|
258
|
+
parentNftId: newTargetNftId,
|
259
|
+
objectType: STAKE(),
|
260
|
+
isInterceptor: false,
|
261
|
+
objectAddress: address(0),
|
262
|
+
initialOwner: stakeOwner,
|
263
|
+
data: ""
|
264
|
+
}));
|
265
|
+
|
266
|
+
newStakeBalance = $._staking.restake(
|
267
|
+
stakeNftId,
|
268
|
+
newStakeNftId);
|
269
|
+
|
270
|
+
emit LogStakingServiceStakeRestaked(stakeOwner, stakeNftId, newStakeNftId, newTargetNftId, newStakeBalance);
|
237
271
|
}
|
238
272
|
|
239
273
|
|
@@ -91,7 +91,8 @@ contract StakingStore is
|
|
91
91
|
objectType: PROTOCOL(),
|
92
92
|
chainId: 1,
|
93
93
|
lockingPeriod: TargetManagerLib.getDefaultLockingPeriod(),
|
94
|
-
rewardRate: TargetManagerLib.getDefaultRewardRate()
|
94
|
+
rewardRate: TargetManagerLib.getDefaultRewardRate(),
|
95
|
+
maxStakedAmount: AmountLib.max()}));
|
95
96
|
}
|
96
97
|
|
97
98
|
|
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
|
}
|
@@ -1,6 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {VersionPart} from "./Version.sol";
|
5
|
+
|
4
6
|
type ObjectType is uint8;
|
5
7
|
|
6
8
|
// type bindings
|
@@ -161,8 +163,6 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
|
|
161
163
|
// library functions that operate on user defined type
|
162
164
|
library ObjectTypeLib {
|
163
165
|
|
164
|
-
error ErrorVersionTooBig(uint256 version);
|
165
|
-
|
166
166
|
function zero() public pure returns (ObjectType) {
|
167
167
|
return ObjectType.wrap(0);
|
168
168
|
}
|
@@ -242,19 +242,15 @@ library ObjectTypeLib {
|
|
242
242
|
function toVersionedName(
|
243
243
|
string memory name,
|
244
244
|
string memory suffix,
|
245
|
-
|
245
|
+
VersionPart release
|
246
246
|
)
|
247
247
|
external
|
248
248
|
pure
|
249
249
|
returns (string memory versionedName)
|
250
250
|
{
|
251
|
-
if (version > maxNumReleases()) {
|
252
|
-
revert ErrorVersionTooBig(version);
|
253
|
-
}
|
254
|
-
|
255
251
|
string memory versionName = "_v0";
|
256
252
|
|
257
|
-
if (
|
253
|
+
if (release.toInt() >= 10) {
|
258
254
|
versionName = "_v";
|
259
255
|
}
|
260
256
|
|
@@ -263,12 +259,7 @@ library ObjectTypeLib {
|
|
263
259
|
name,
|
264
260
|
suffix,
|
265
261
|
versionName,
|
266
|
-
toString(
|
267
|
-
}
|
268
|
-
|
269
|
-
/// @dev returns the max number of releases (major versions) this gif setup can handle.
|
270
|
-
function maxNumReleases() public pure returns (uint8) {
|
271
|
-
return 99;
|
262
|
+
release.toString()));
|
272
263
|
}
|
273
264
|
|
274
265
|
/// @dev returns the provied int as a string
|