@etherisc/gif-next 0.0.2-95b223b-528 → 0.0.2-95f0eec-843
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 +57 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +134 -59
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +93 -49
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +85 -9
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -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 +409 -33
- 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 +525 -213
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +105 -153
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +58 -95
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +533 -218
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +149 -81
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +45 -82
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +379 -79
- 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 +145 -114
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +183 -144
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
- 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 +163 -169
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +380 -45
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -68
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +175 -141
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +259 -146
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +380 -45
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +474 -48
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +377 -10
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +485 -83
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +999 -334
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +380 -52
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +724 -412
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +381 -77
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +82 -56
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +434 -358
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +96 -53
- 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 +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 +77 -49
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
- 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 +49 -21
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -33
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +120 -68
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +98 -54
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -82
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +304 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -75
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -89
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -44
- 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 +574 -360
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +145 -73
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +292 -62
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +105 -45
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +87 -59
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +171 -174
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +120 -84
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +234 -3
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +63 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -68
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +70 -42
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +150 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +278 -187
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -84
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +102 -74
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +81 -53
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +218 -76
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +102 -46
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +51 -16
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/{authorization/AccessAdmin.sol/IAccessManagedChecker.json → registry/IRelease.sol/IRelease.json} +6 -6
- 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 +89 -54
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +728 -480
- 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 +75 -39
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +78 -42
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- 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 +385 -63
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- 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 +60 -32
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +211 -250
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +104 -68
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +178 -34
- 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 +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 +49 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +131 -153
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +49 -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/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -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/IService.sol/IService.json +56 -3
- 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 +60 -32
- 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 +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +268 -39
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +163 -10
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +341 -103
- 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 +112 -50
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +90 -61
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +218 -58
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -47
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +162 -148
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +60 -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 +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 +30 -6
- 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 +21 -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/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- 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 -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/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +64 -26
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +18 -7
- package/contracts/accounting/AccountingServiceManager.sol +1 -1
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +419 -254
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +142 -262
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +87 -80
- package/contracts/authorization/IAuthorization.sol +9 -42
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +247 -33
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +18 -58
- package/contracts/distribution/DistributionService.sol +168 -77
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
- package/contracts/examples/fire/FireProduct.sol +2 -7
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleProduct.sol +26 -11
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
- package/contracts/instance/BundleSet.sol +4 -4
- package/contracts/instance/IInstance.sol +91 -17
- package/contracts/instance/IInstanceService.sol +50 -4
- package/contracts/instance/Instance.sol +159 -52
- package/contracts/instance/InstanceAdmin.sol +265 -170
- package/contracts/instance/InstanceAuthorizationV3.sol +75 -34
- package/contracts/instance/InstanceReader.sol +415 -379
- package/contracts/instance/InstanceService.sol +251 -144
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/RiskSet.sol +11 -12
- package/contracts/instance/base/BalanceStore.sol +3 -5
- package/contracts/instance/base/ObjectLifecycle.sol +0 -3
- package/contracts/instance/base/ObjectSet.sol +7 -8
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +16 -5
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +1 -3
- package/contracts/oracle/OracleService.sol +20 -19
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +2 -15
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +55 -94
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +27 -32
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +11 -23
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +192 -193
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +85 -17
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +0 -2
- package/contracts/product/BasicProductAuthorization.sol +31 -9
- package/contracts/product/ClaimService.sol +127 -169
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +23 -1
- package/contracts/product/IClaimService.sol +2 -3
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +11 -7
- package/contracts/product/PolicyService.sol +104 -195
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +38 -35
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +30 -21
- package/contracts/product/RiskService.sol +85 -29
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/IRegistry.sol +21 -19
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +19 -8
- package/contracts/registry/RegistryAdmin.sol +100 -369
- package/contracts/registry/RegistryAuthorization.sol +284 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +150 -116
- package/contracts/registry/ServiceAuthorizationV3.sol +159 -22
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +17 -26
- package/contracts/shared/ComponentService.sol +263 -283
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +163 -76
- package/contracts/shared/IComponent.sol +1 -5
- package/contracts/shared/IComponentService.sol +21 -26
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -7
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +42 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +45 -92
- package/contracts/staking/IStaking.sol +41 -19
- package/contracts/staking/IStakingService.sol +21 -8
- package/contracts/staking/Staking.sol +159 -69
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +28 -19
- package/contracts/staking/StakingService.sol +74 -46
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +3 -2
- package/contracts/staking/TargetManagerLib.sol +1 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/ObjectType.sol +69 -52
- package/contracts/type/RiskId.sol +9 -3
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +4 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +27 -10
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- 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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
@@ -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,
|
@@ -51,7 +45,12 @@ library StakeManagerLib {
|
|
51
45
|
|
52
46
|
// TODO check that additional dip, rewards and rewards increment
|
53
47
|
// are still ok with max target staking amount
|
54
|
-
NftId targetNftId = registry.
|
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,
|
@@ -10,8 +10,9 @@ import {IStaking} from "../staking/IStaking.sol";
|
|
10
10
|
import {Amount} from "../type/Amount.sol";
|
11
11
|
import {Blocknumber} from "../type/Blocknumber.sol";
|
12
12
|
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {
|
13
|
+
import {Seconds} from "../type/Seconds.sol";
|
14
14
|
import {StakingStore} from "./StakingStore.sol";
|
15
|
+
import {STAKE, TARGET} from "../type/ObjectType.sol";
|
15
16
|
import {Timestamp} from "../type/Timestamp.sol";
|
16
17
|
import {UFixed} from "../type/UFixed.sol";
|
17
18
|
|
@@ -57,6 +58,10 @@ contract StakingReader is
|
|
57
58
|
return _staking;
|
58
59
|
}
|
59
60
|
|
61
|
+
function getProtocolNftId() external view returns (NftId protocolNftId) {
|
62
|
+
return _registry.getProtocolNftId();
|
63
|
+
}
|
64
|
+
|
60
65
|
function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
|
61
66
|
return _store.getStakingRate(chainId, token);
|
62
67
|
}
|
@@ -77,23 +82,8 @@ contract StakingReader is
|
|
77
82
|
}
|
78
83
|
|
79
84
|
|
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
85
|
function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
|
96
|
-
return _registry.
|
86
|
+
return _registry.getParentNftId(stakeNftId);
|
97
87
|
}
|
98
88
|
|
99
89
|
|
@@ -113,14 +103,33 @@ contract StakingReader is
|
|
113
103
|
}
|
114
104
|
|
115
105
|
|
116
|
-
/// @dev
|
106
|
+
/// @dev Get the locking period that applies to the specified stake NFT ID.
|
107
|
+
function getTargetLockingPeriod(NftId stakeNftId) external view returns (NftId targetNftId, Seconds lockingPeriod) {
|
108
|
+
targetNftId = getTargetNftId(stakeNftId);
|
109
|
+
lockingPeriod = getTargetInfo(targetNftId).lockingPeriod;
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
/// @dev Get the reward rate that applies to the specified stake NFT ID.
|
117
114
|
function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
|
118
115
|
targetNftId = getTargetNftId(stakeNftId);
|
119
116
|
rewardRate = getTargetInfo(targetNftId).rewardRate;
|
120
117
|
}
|
121
118
|
|
122
119
|
|
123
|
-
/// @dev
|
120
|
+
/// @dev Get the max staked amount allowed for the specified target NFT ID.
|
121
|
+
function getTargetMaxStakedAmount(NftId targetNftId) external view returns (Amount maxStakedAmount) {
|
122
|
+
return getTargetInfo(targetNftId).maxStakedAmount;
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
/// @dev Get the reward rate for the specified target NFT ID.
|
127
|
+
function getLockingPeriod(NftId targetNftId) external view returns (Seconds lockingPeriod) {
|
128
|
+
return getTargetInfo(targetNftId).lockingPeriod;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
/// @dev Get the reward rate for the specified target NFT ID.
|
124
133
|
function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
|
125
134
|
return getTargetInfo(targetNftId).rewardRate;
|
126
135
|
}
|
@@ -3,12 +3,13 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {Amount} from "../type/Amount.sol";
|
7
6
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
8
7
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
10
8
|
import {IStaking} from "./IStaking.sol";
|
11
9
|
import {IStakingService} from "./IStakingService.sol";
|
10
|
+
|
11
|
+
import {Amount} from "../type/Amount.sol";
|
12
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
12
13
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
13
14
|
import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
14
15
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -32,6 +33,28 @@ contract StakingService is
|
|
32
33
|
TokenHandler _tokenHandler;
|
33
34
|
}
|
34
35
|
|
36
|
+
|
37
|
+
modifier onlyStaking() {
|
38
|
+
if (msg.sender != address(_getStakingServiceStorage()._staking)) {
|
39
|
+
revert ErrorStakingServiceNotStaking(msg.sender);
|
40
|
+
}
|
41
|
+
_;
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
function approveTokenHandler(
|
46
|
+
IERC20Metadata token,
|
47
|
+
Amount amount
|
48
|
+
)
|
49
|
+
external
|
50
|
+
virtual
|
51
|
+
onlyStaking()
|
52
|
+
{
|
53
|
+
_getStakingServiceStorage()._tokenHandler.approve(token, amount);
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
/// @inheritdoc IStakingService
|
35
58
|
function createInstanceTarget(
|
36
59
|
NftId targetNftId,
|
37
60
|
Seconds initialLockingPeriod,
|
@@ -76,6 +99,17 @@ contract StakingService is
|
|
76
99
|
rewardRate);
|
77
100
|
}
|
78
101
|
|
102
|
+
function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount)
|
103
|
+
external
|
104
|
+
virtual
|
105
|
+
restricted()
|
106
|
+
{
|
107
|
+
_checkNftType(instanceNftId, INSTANCE());
|
108
|
+
_getStakingServiceStorage()._staking.setMaxStakedAmount(
|
109
|
+
instanceNftId,
|
110
|
+
maxStakingAmount);
|
111
|
+
}
|
112
|
+
|
79
113
|
|
80
114
|
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
|
81
115
|
external
|
@@ -113,8 +147,7 @@ contract StakingService is
|
|
113
147
|
// transfer withdrawal amount to target owner
|
114
148
|
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
115
149
|
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
116
|
-
|
117
|
-
$._staking.getTokenHandler(),
|
150
|
+
$._tokenHandler.pushToken(
|
118
151
|
instanceOwner,
|
119
152
|
dipAmount);
|
120
153
|
}
|
@@ -162,39 +195,11 @@ contract StakingService is
|
|
162
195
|
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
163
196
|
|
164
197
|
// collect staked dip by staking
|
165
|
-
|
166
|
-
$._staking.getTokenHandler(),
|
198
|
+
$._tokenHandler.pullToken(
|
167
199
|
stakeOwner,
|
168
200
|
dipAmount);
|
169
201
|
}
|
170
202
|
|
171
|
-
function _collectToken(
|
172
|
-
TokenHandler tokenHandler,
|
173
|
-
address from,
|
174
|
-
Amount amount
|
175
|
-
)
|
176
|
-
internal
|
177
|
-
virtual
|
178
|
-
{
|
179
|
-
tokenHandler.collectTokens(
|
180
|
-
from,
|
181
|
-
amount);
|
182
|
-
}
|
183
|
-
|
184
|
-
function _distributeToken(
|
185
|
-
TokenHandler tokenHandler,
|
186
|
-
address to,
|
187
|
-
Amount amount
|
188
|
-
)
|
189
|
-
internal
|
190
|
-
virtual
|
191
|
-
{
|
192
|
-
tokenHandler.distributeTokens(
|
193
|
-
tokenHandler.getWallet(),
|
194
|
-
to,
|
195
|
-
amount);
|
196
|
-
}
|
197
|
-
|
198
203
|
|
199
204
|
function stake(
|
200
205
|
NftId stakeNftId,
|
@@ -218,8 +223,7 @@ contract StakingService is
|
|
218
223
|
// collect staked dip by staking
|
219
224
|
if (dipAmount.gtz()) {
|
220
225
|
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
221
|
-
|
222
|
-
$._staking.getTokenHandler(),
|
226
|
+
$._tokenHandler.pullToken(
|
223
227
|
stakeOwner,
|
224
228
|
dipAmount);
|
225
229
|
}
|
@@ -235,13 +239,36 @@ contract StakingService is
|
|
235
239
|
restricted()
|
236
240
|
onlyNftOwner(stakeNftId)
|
237
241
|
returns (
|
238
|
-
NftId newStakeNftId
|
242
|
+
NftId newStakeNftId,
|
243
|
+
Amount newStakeBalance
|
239
244
|
)
|
240
245
|
{
|
241
246
|
_checkNftType(stakeNftId, STAKE());
|
242
247
|
|
243
248
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
244
|
-
|
249
|
+
address stakeOwner = msg.sender;
|
250
|
+
|
251
|
+
if (! getRegistry().isRegistered(newTargetNftId)) {
|
252
|
+
revert ErrorStakingServiceTargetUnknown(newTargetNftId);
|
253
|
+
}
|
254
|
+
|
255
|
+
// register new stake object with registry
|
256
|
+
newStakeNftId = $._registryService.registerStake(
|
257
|
+
IRegistry.ObjectInfo({
|
258
|
+
nftId: NftIdLib.zero(),
|
259
|
+
parentNftId: newTargetNftId,
|
260
|
+
objectType: STAKE(),
|
261
|
+
isInterceptor: false,
|
262
|
+
objectAddress: address(0),
|
263
|
+
initialOwner: stakeOwner,
|
264
|
+
data: ""
|
265
|
+
}));
|
266
|
+
|
267
|
+
newStakeBalance = $._staking.restake(
|
268
|
+
stakeNftId,
|
269
|
+
newStakeNftId);
|
270
|
+
|
271
|
+
emit LogStakingServiceStakeRestaked(stakeOwner, stakeNftId, newStakeNftId, newTargetNftId, newStakeBalance);
|
245
272
|
}
|
246
273
|
|
247
274
|
|
@@ -274,8 +301,7 @@ contract StakingService is
|
|
274
301
|
|
275
302
|
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
276
303
|
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
277
|
-
|
278
|
-
$._staking.getTokenHandler(),
|
304
|
+
$._tokenHandler.pushToken(
|
279
305
|
stakeOwner,
|
280
306
|
rewardsClaimedAmount);
|
281
307
|
}
|
@@ -300,7 +326,7 @@ contract StakingService is
|
|
300
326
|
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
301
327
|
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
302
328
|
|
303
|
-
$.
|
329
|
+
$._tokenHandler.pushToken(
|
304
330
|
stakeOwner,
|
305
331
|
totalAmount);
|
306
332
|
}
|
@@ -323,6 +349,7 @@ contract StakingService is
|
|
323
349
|
|
324
350
|
function getDipToken()
|
325
351
|
external
|
352
|
+
view
|
326
353
|
virtual
|
327
354
|
returns (IERC20Metadata dip)
|
328
355
|
{
|
@@ -332,6 +359,7 @@ contract StakingService is
|
|
332
359
|
|
333
360
|
function getTokenHandler()
|
334
361
|
external
|
362
|
+
view
|
335
363
|
virtual
|
336
364
|
returns (TokenHandler tokenHandler)
|
337
365
|
{
|
@@ -341,6 +369,7 @@ contract StakingService is
|
|
341
369
|
|
342
370
|
function getStaking()
|
343
371
|
external
|
372
|
+
view
|
344
373
|
virtual
|
345
374
|
returns (IStaking staking)
|
346
375
|
{
|
@@ -359,15 +388,15 @@ contract StakingService is
|
|
359
388
|
{
|
360
389
|
(
|
361
390
|
address authority,
|
362
|
-
address
|
363
|
-
address
|
391
|
+
address registry,
|
392
|
+
address staking
|
364
393
|
) = abi.decode(data, (address, address, address));
|
365
394
|
|
366
|
-
|
395
|
+
__Service_init(authority, registry, owner);
|
367
396
|
|
368
397
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
369
398
|
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
370
|
-
$._staking = _registerStaking(
|
399
|
+
$._staking = _registerStaking(staking);
|
371
400
|
$._dip = $._staking.getToken();
|
372
401
|
$._tokenHandler = $._staking.getTokenHandler();
|
373
402
|
|
@@ -420,8 +449,7 @@ contract StakingService is
|
|
420
449
|
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
421
450
|
|
422
451
|
// collect reward dip from provider
|
423
|
-
|
424
|
-
$._staking.getTokenHandler(),
|
452
|
+
$._tokenHandler.pullToken(
|
425
453
|
rewardProvider,
|
426
454
|
dipAmount);
|
427
455
|
}
|
@@ -15,17 +15,18 @@ contract StakingServiceManager is
|
|
15
15
|
/// @dev initializes proxy manager with service implementation
|
16
16
|
constructor(
|
17
17
|
address authority,
|
18
|
-
address
|
18
|
+
address registry,
|
19
19
|
bytes32 salt
|
20
20
|
)
|
21
21
|
{
|
22
22
|
StakingService svc = new StakingService();
|
23
23
|
bytes memory data = abi.encode(
|
24
24
|
authority,
|
25
|
-
|
26
|
-
IRegistry(
|
25
|
+
registry,
|
26
|
+
IRegistry(registry).getStakingAddress());
|
27
|
+
|
27
28
|
IVersionable versionable = initialize(
|
28
|
-
|
29
|
+
registry,
|
29
30
|
address(svc),
|
30
31
|
data,
|
31
32
|
salt);
|
@@ -80,7 +80,7 @@ contract StakingStore is
|
|
80
80
|
setAuthority(registry.getAuthority());
|
81
81
|
|
82
82
|
// set internal variables
|
83
|
-
_registry = registry;
|
83
|
+
_registry = registry;
|
84
84
|
_reader = reader;
|
85
85
|
_targetNftIdSet = new NftIdSet();
|
86
86
|
|
@@ -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
|
}
|