@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e7a5428-226
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 +133 -10
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
- 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 +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -607
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +288 -118
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -273
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -96
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +497 -75
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +617 -250
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1789 -713
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -220
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +204 -96
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1109 -817
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +278 -96
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -394
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -682
- 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 +940 -518
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +283 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +222 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +251 -113
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -264
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
- 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 +259 -97
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +220 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +322 -596
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +454 -42
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +275 -193
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +806 -97
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +320 -312
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +206 -94
- 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 +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +257 -147
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +92 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +241 -115
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -94
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -130
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +51 -19
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -366
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +61 -104
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1388 -635
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1703 -957
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +274 -92
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +751 -212
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +215 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +81 -17
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -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 +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +167 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
- 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 +120 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +780 -0
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +158 -0
- package/contracts/authorization/Authorization.sol +169 -0
- package/contracts/authorization/IAccess.sol +67 -0
- package/contracts/authorization/IAccessAdmin.sol +144 -0
- package/contracts/authorization/IAuthorization.sol +26 -0
- package/contracts/authorization/IServiceAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +320 -0
- package/contracts/distribution/BasicDistribution.sol +141 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
- package/contracts/distribution/Distribution.sol +126 -142
- package/contracts/distribution/DistributionService.sol +288 -137
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +22 -43
- package/contracts/distribution/IDistributionService.sol +61 -27
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +117 -49
- package/contracts/instance/IInstanceService.sol +80 -46
- package/contracts/instance/Instance.sol +252 -133
- package/contracts/instance/InstanceAdmin.sol +383 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
- package/contracts/instance/InstanceReader.sol +499 -233
- package/contracts/instance/InstanceService.sol +370 -218
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +94 -55
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/base/BalanceStore.sol +16 -13
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +20 -0
- package/contracts/instance/base/ObjectLifecycle.sol +109 -0
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +45 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
- package/contracts/oracle/IOracle.sol +41 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +154 -0
- package/contracts/oracle/OracleService.sol +310 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +162 -0
- package/contracts/pool/BasicPoolAuthorization.sol +81 -0
- package/contracts/pool/BundleService.sol +225 -152
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +44 -34
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +99 -76
- package/contracts/pool/Pool.sol +198 -164
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +448 -255
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +160 -86
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +63 -0
- package/contracts/product/ClaimService.sol +389 -195
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +30 -4
- package/contracts/product/IClaimService.sol +52 -9
- package/contracts/product/IPolicyService.sol +62 -38
- package/contracts/product/IPricingService.sol +12 -11
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +450 -276
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +97 -91
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +263 -147
- package/contracts/product/RiskService.sol +190 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -39
- package/contracts/registry/IRegistry.sol +99 -38
- package/contracts/registry/IRegistryService.sol +26 -43
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -232
- package/contracts/registry/RegistryAdmin.sol +188 -0
- package/contracts/registry/RegistryAuthorization.sol +309 -0
- package/contracts/registry/RegistryService.sol +66 -152
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +32 -0
- package/contracts/registry/ReleaseRegistry.sol +525 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +211 -81
- package/contracts/shared/Component.sol +71 -143
- package/contracts/shared/ComponentService.sol +460 -369
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +7 -23
- package/contracts/shared/IComponentService.sol +51 -31
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/IKeyValueStore.sol +3 -2
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +5 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +11 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
- package/contracts/shared/InstanceLinkedComponent.sol +95 -46
- package/contracts/shared/KeyValueStore.sol +32 -70
- package/contracts/shared/Lifecycle.sol +30 -63
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +35 -24
- package/contracts/shared/PolicyHolder.sol +19 -50
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +32 -42
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +229 -42
- package/contracts/staking/IStakingService.sol +98 -76
- package/contracts/staking/Staking.sol +633 -99
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +25 -20
- package/contracts/staking/StakingReader.sol +151 -0
- package/contracts/staking/StakingService.sol +174 -53
- package/contracts/staking/StakingServiceManager.sol +13 -8
- package/contracts/staking/StakingStore.sol +973 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +43 -3
- package/contracts/type/Blocknumber.sol +34 -16
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +9 -9
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +16 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +204 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +39 -7
- package/contracts/type/RoleId.sol +122 -80
- package/contracts/type/Seconds.sol +62 -1
- package/contracts/type/Selector.sol +107 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +65 -0
- package/contracts/type/Timestamp.sol +20 -9
- package/contracts/type/UFixed.sol +62 -125
- package/contracts/type/Version.sol +58 -7
- package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
- package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
- package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
- package/package.json +12 -8
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/instance/base/ObjectManager.sol +0 -82
- package/contracts/instance/module/IAccess.sol +0 -54
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -122
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -213
- package/contracts/registry/ReleaseManager.sol +0 -375
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/ComponentVerifyingService.sol +0 -111
- package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -1,212 +1,746 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
5
|
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
6
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
import {IRelease} from "../registry/IRelease.sol";
|
8
|
+
import {IStaking} from "./IStaking.sol";
|
9
|
+
import {IStakingService} from "./IStakingService.sol";
|
10
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
10
11
|
|
11
|
-
import {Amount} from "../type/Amount.sol";
|
12
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
13
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
14
|
+
import {ChainId, ChainIdLib} from "../type/ChainId.sol";
|
12
15
|
import {Component} from "../shared/Component.sol";
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import {
|
16
|
-
import {
|
16
|
+
import {IComponent} from "../shared/IComponent.sol";
|
17
|
+
import {NftId} from "../type/NftId.sol";
|
18
|
+
import {ObjectType, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
19
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
20
|
+
import {Registerable} from "../shared/Registerable.sol";
|
21
|
+
import {StakingLib} from "./StakingLib.sol";
|
22
|
+
import {StakingReader} from "./StakingReader.sol";
|
23
|
+
import {StakingStore} from "./StakingStore.sol";
|
24
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
25
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
26
|
+
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
17
27
|
import {UFixed} from "../type/UFixed.sol";
|
18
|
-
import {
|
28
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
29
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
19
30
|
|
20
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
21
31
|
|
22
32
|
contract Staking is
|
23
|
-
KeyValueStore,
|
24
33
|
Component,
|
25
34
|
Versionable,
|
26
35
|
IStaking
|
27
36
|
{
|
28
37
|
string public constant CONTRACT_NAME = "Staking";
|
29
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
30
38
|
|
31
39
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
32
40
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
33
41
|
|
34
42
|
struct StakingStorage {
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
43
|
+
TokenRegistry _tokenRegistry;
|
44
|
+
TokenHandler _tokenHandler;
|
45
|
+
IStakingService _stakingService;
|
46
|
+
StakingStore _store;
|
47
|
+
StakingReader _reader;
|
48
|
+
NftId _protocolNftId;
|
40
49
|
}
|
41
50
|
|
42
|
-
|
43
|
-
|
44
|
-
|
51
|
+
|
52
|
+
modifier onlyStakeOwner(NftId stakeNftId) {
|
53
|
+
_checkTypeAndOwner(stakeNftId, STAKE(), true);
|
54
|
+
_;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
modifier onlyTarget(NftId targetNftId) {
|
59
|
+
_checkTypeAndOwner(targetNftId, TARGET(), false);
|
60
|
+
_;
|
61
|
+
}
|
62
|
+
|
63
|
+
//--- contract intitialization -------------------------------------------
|
64
|
+
|
65
|
+
function initializeTokenHandler()
|
66
|
+
external
|
67
|
+
virtual
|
68
|
+
{
|
69
|
+
if (msg.sender != address(getRegistry())) {
|
70
|
+
revert ErrorStakingNotRegistry(msg.sender);
|
45
71
|
}
|
72
|
+
|
73
|
+
StakingStorage storage $ = _getStakingStorage();
|
74
|
+
address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
|
75
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
76
|
+
address(getRegistry()),
|
77
|
+
address(this),
|
78
|
+
dipToken,
|
79
|
+
getRegistry().getAuthority());
|
46
80
|
}
|
47
81
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
82
|
+
//--- staking owner functions -------------------------------------------//
|
83
|
+
|
84
|
+
|
85
|
+
/// @inheritdoc IStaking
|
86
|
+
function setProtocolLockingPeriod(Seconds newLockingPeriod)
|
87
|
+
external
|
88
|
+
virtual
|
89
|
+
restricted()
|
90
|
+
onlyOwner()
|
91
|
+
{
|
92
|
+
StakingStorage storage $ = _getStakingStorage();
|
93
|
+
(
|
94
|
+
Seconds oldLockingPeriod,
|
95
|
+
Blocknumber lastUpdatedIn
|
96
|
+
) = $._store.setLockingPeriod($._protocolNftId, newLockingPeriod);
|
97
|
+
|
98
|
+
emit LogStakingProtocolLockingPeriodSet($._protocolNftId, newLockingPeriod, oldLockingPeriod, lastUpdatedIn);
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
/// @inheritdoc IStaking
|
103
|
+
function setProtocolRewardRate(UFixed newRewardRate)
|
104
|
+
external
|
105
|
+
virtual
|
106
|
+
restricted()
|
107
|
+
onlyOwner()
|
54
108
|
{
|
55
|
-
|
109
|
+
StakingStorage storage $ = _getStakingStorage();
|
110
|
+
(
|
111
|
+
UFixed oldRewardRate,
|
112
|
+
Blocknumber lastUpdatedIn
|
113
|
+
) = $._store.setRewardRate($._protocolNftId, newRewardRate);
|
114
|
+
|
115
|
+
emit LogStakingProtocolRewardRateSet($._protocolNftId, newRewardRate, oldRewardRate, lastUpdatedIn);
|
56
116
|
}
|
57
117
|
|
58
|
-
|
59
|
-
|
60
|
-
|
118
|
+
|
119
|
+
/// @inheritdoc IStaking
|
120
|
+
function setStakingRate(
|
121
|
+
ChainId chainId,
|
122
|
+
address token,
|
123
|
+
UFixed stakingRate
|
61
124
|
)
|
62
|
-
|
63
|
-
virtual
|
64
|
-
|
125
|
+
external
|
126
|
+
virtual
|
127
|
+
restricted()
|
128
|
+
onlyOwner()
|
65
129
|
{
|
66
130
|
(
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
address initialOwner
|
71
|
-
) = abi.decode(data, (address, address, address, address));
|
72
|
-
|
73
|
-
initializeComponent(
|
74
|
-
initialAuthority,
|
75
|
-
registryAddress,
|
76
|
-
IRegistry(registryAddress).getNftId(),
|
77
|
-
CONTRACT_NAME,
|
78
|
-
dipTokenAddress,
|
79
|
-
STAKING(),
|
80
|
-
false, // is interceptor
|
81
|
-
initialOwner,
|
82
|
-
"", // registry data
|
83
|
-
""); // component data
|
131
|
+
UFixed oldStakingRate,
|
132
|
+
Blocknumber lastUpdateIn
|
133
|
+
) = _getStakingStorage()._store.setStakingRate(chainId, token, stakingRate);
|
84
134
|
|
85
|
-
|
86
|
-
|
135
|
+
emit LogStakingStakingRateSet(chainId, token, stakingRate, oldStakingRate, lastUpdateIn);
|
136
|
+
}
|
87
137
|
|
88
|
-
|
138
|
+
|
139
|
+
/// @inheritdoc IStaking
|
140
|
+
function setStakingService(VersionPart release)
|
141
|
+
external
|
142
|
+
virtual
|
143
|
+
restricted()
|
144
|
+
onlyOwner()
|
145
|
+
{
|
146
|
+
// effects
|
147
|
+
StakingStorage storage $ = _getStakingStorage();
|
148
|
+
address oldStakingService = address($._stakingService);
|
149
|
+
$._stakingService = StakingLib.checkAndGetStakingService(getRegistry(), release);
|
150
|
+
|
151
|
+
emit LogStakingStakingServiceSet(address($._stakingService), release, oldStakingService);
|
89
152
|
}
|
90
153
|
|
91
|
-
|
92
|
-
|
154
|
+
|
155
|
+
/// @inheritdoc IStaking
|
156
|
+
function setStakingReader(StakingReader stakingReader)
|
93
157
|
external
|
94
158
|
virtual
|
95
|
-
|
159
|
+
restricted()
|
160
|
+
onlyOwner()
|
96
161
|
{
|
162
|
+
if(stakingReader.getStaking() != IStaking(this)) {
|
163
|
+
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
164
|
+
}
|
97
165
|
|
166
|
+
address oldReader = address(_getStakingStorage()._reader);
|
167
|
+
_getStakingStorage()._reader = stakingReader;
|
168
|
+
|
169
|
+
emit LogStakingStakingReaderSet(address(stakingReader), oldReader);
|
98
170
|
}
|
99
171
|
|
100
|
-
|
101
|
-
|
172
|
+
|
173
|
+
/// @inheritdoc IStaking
|
174
|
+
function addToken(
|
175
|
+
ChainId chainId,
|
176
|
+
address token
|
177
|
+
)
|
102
178
|
external
|
103
179
|
virtual
|
104
|
-
|
180
|
+
restricted()
|
181
|
+
onlyOwner()
|
105
182
|
{
|
106
|
-
|
183
|
+
_addToken(
|
184
|
+
_getStakingStorage(), chainId, token);
|
107
185
|
}
|
108
186
|
|
187
|
+
|
188
|
+
/// @inheritdoc IStaking
|
189
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
190
|
+
public
|
191
|
+
virtual
|
192
|
+
restricted()
|
193
|
+
onlyOwner()
|
194
|
+
{
|
195
|
+
StakingStorage storage $ = _getStakingStorage();
|
196
|
+
Amount oldAllowanceAmount = AmountLib.toAmount(
|
197
|
+
token.allowance(
|
198
|
+
address(this),
|
199
|
+
address($._tokenHandler)));
|
200
|
+
|
201
|
+
// staking token handler approval via its own implementation in staking service
|
202
|
+
$._stakingService.approveTokenHandler(
|
203
|
+
token,
|
204
|
+
amount);
|
205
|
+
|
206
|
+
emit LogStakingTokenHandlerApproved(address(token), amount, oldAllowanceAmount);
|
207
|
+
}
|
208
|
+
|
209
|
+
//--- target management -------------------------------------------------//
|
210
|
+
|
211
|
+
|
212
|
+
/// @inheritdoc IStaking
|
109
213
|
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
110
214
|
external
|
111
215
|
virtual
|
216
|
+
restricted()
|
217
|
+
onlyTarget(targetNftId)
|
218
|
+
returns (Amount newBalance)
|
112
219
|
{
|
113
|
-
|
220
|
+
address transferFrom = msg.sender;
|
221
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
114
222
|
}
|
115
223
|
|
224
|
+
|
225
|
+
/// @inheritdoc IStaking
|
116
226
|
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
117
227
|
external
|
118
228
|
virtual
|
119
|
-
|
229
|
+
restricted()
|
230
|
+
onlyTarget(targetNftId)
|
231
|
+
returns (Amount newBalance)
|
120
232
|
{
|
121
|
-
|
233
|
+
address transferTo;
|
234
|
+
|
235
|
+
// case 1: protocol target: staking owner is recipient
|
236
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
237
|
+
// verify that the caller is the staking owner
|
238
|
+
transferTo = getOwner();
|
239
|
+
if (msg.sender != transferTo) {
|
240
|
+
revert ErrorStakingNotStakingOwner();
|
241
|
+
}
|
242
|
+
|
243
|
+
// case 2: same chain target: target owner is recipient
|
244
|
+
} else if (ChainIdLib.isCurrentChain(targetNftId)) {
|
245
|
+
// verify that the caller is the target owner
|
246
|
+
transferTo = getRegistry().ownerOf(targetNftId);
|
247
|
+
if (msg.sender != transferTo) {
|
248
|
+
revert ErrorStakingNotNftOwner(targetNftId);
|
249
|
+
}
|
250
|
+
|
251
|
+
// case 3: cross-chain target: TODO decide how to handle and implement
|
252
|
+
} else {
|
253
|
+
revert("Cross-chain target not supported");
|
254
|
+
}
|
255
|
+
|
256
|
+
newBalance = _withdrawRewardReserves(targetNftId, dipAmount, transferTo);
|
257
|
+
}
|
258
|
+
|
259
|
+
|
260
|
+
/// @inheritdoc IStaking
|
261
|
+
function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom)
|
262
|
+
external
|
263
|
+
virtual
|
264
|
+
restricted()
|
265
|
+
onlyTarget(targetNftId)
|
266
|
+
returns (Amount newBalance)
|
267
|
+
{
|
268
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
269
|
+
}
|
270
|
+
|
271
|
+
|
272
|
+
/// @inheritdoc IStaking
|
273
|
+
function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo)
|
274
|
+
external
|
275
|
+
virtual
|
276
|
+
restricted()
|
277
|
+
onlyTarget(targetNftId)
|
278
|
+
returns (Amount newBalance)
|
279
|
+
{
|
280
|
+
// check that service does not withdraw from protocol target
|
281
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
282
|
+
revert ErrorStakingTargetTypeNotSupported(targetNftId, PROTOCOL());
|
283
|
+
}
|
284
|
+
|
285
|
+
// default: on-chain target owner is recipient
|
286
|
+
address targetOwner = getRegistry().ownerOf(targetNftId);
|
287
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
|
288
|
+
}
|
289
|
+
|
290
|
+
|
291
|
+
/// @inheritdoc IStaking
|
292
|
+
function registerTarget(
|
293
|
+
NftId targetNftId,
|
294
|
+
ObjectType expectedObjectType,
|
295
|
+
Seconds initialLockingPeriod,
|
296
|
+
UFixed initialRewardRate
|
297
|
+
)
|
298
|
+
external
|
299
|
+
virtual
|
300
|
+
restricted() // staking service
|
301
|
+
{
|
302
|
+
// checks done by staking store
|
303
|
+
_getStakingStorage()._store.createTarget(
|
304
|
+
targetNftId,
|
305
|
+
expectedObjectType,
|
306
|
+
initialLockingPeriod,
|
307
|
+
initialRewardRate);
|
308
|
+
|
309
|
+
emit LogStakingTargetCreated(targetNftId, expectedObjectType, initialLockingPeriod, initialRewardRate, AmountLib.max());
|
310
|
+
}
|
311
|
+
|
312
|
+
|
313
|
+
/// @inheritdoc IStaking
|
314
|
+
function setLockingPeriod(
|
315
|
+
NftId targetNftId,
|
316
|
+
Seconds lockingPeriod
|
317
|
+
)
|
318
|
+
external
|
319
|
+
virtual
|
320
|
+
restricted()
|
321
|
+
onlyTarget(targetNftId)
|
322
|
+
{
|
323
|
+
(Seconds oldLockingPeriod, ) = _getStakingStorage()._store.setLockingPeriod(targetNftId, lockingPeriod);
|
324
|
+
|
325
|
+
emit LogStakingTargetLockingPeriodSet(targetNftId, lockingPeriod, oldLockingPeriod);
|
326
|
+
}
|
327
|
+
|
328
|
+
|
329
|
+
/// @inheritdoc IStaking
|
330
|
+
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
331
|
+
external
|
332
|
+
virtual
|
333
|
+
restricted()
|
334
|
+
onlyTarget(targetNftId)
|
335
|
+
{
|
336
|
+
(UFixed oldRewardRate,) = _getStakingStorage()._store.setRewardRate(targetNftId, rewardRate);
|
337
|
+
|
338
|
+
emit LogStakingTargetRewardRateSet(targetNftId, rewardRate, oldRewardRate);
|
339
|
+
}
|
340
|
+
|
341
|
+
|
342
|
+
/// @inheritdoc IStaking
|
343
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
|
344
|
+
external
|
345
|
+
virtual
|
346
|
+
restricted()
|
347
|
+
onlyTarget(targetNftId)
|
348
|
+
{
|
349
|
+
_getStakingStorage()._store.setMaxStakedAmount(targetNftId, maxStakedAmount);
|
350
|
+
|
351
|
+
emit LogStakingTargetMaxStakedAmountSet(targetNftId, maxStakedAmount);
|
122
352
|
}
|
123
353
|
|
124
|
-
|
125
|
-
|
354
|
+
|
355
|
+
/// @inheritdoc IStaking
|
356
|
+
function addTargetToken(NftId targetNftId, address token)
|
126
357
|
external
|
127
358
|
virtual
|
128
|
-
|
359
|
+
restricted()
|
360
|
+
onlyTarget(targetNftId)
|
129
361
|
{
|
362
|
+
StakingStorage storage $ = _getStakingStorage();
|
363
|
+
ChainId chainId = ChainIdLib.fromNftId(targetNftId);
|
364
|
+
_addToken($, chainId, token);
|
365
|
+
|
366
|
+
$._store.addTargetToken(targetNftId, token);
|
130
367
|
|
368
|
+
emit LogStakingTargetTokenAdded(targetNftId, chainId, token);
|
131
369
|
}
|
132
370
|
|
133
|
-
|
371
|
+
|
372
|
+
/// @inheritdoc IStaking
|
373
|
+
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
134
374
|
external
|
135
375
|
virtual
|
136
|
-
|
376
|
+
restricted() // only pool service
|
377
|
+
returns (Amount newBalance)
|
137
378
|
{
|
379
|
+
StakingStorage storage $ = _getStakingStorage();
|
380
|
+
newBalance = $._store.increaseTotalValueLocked(targetNftId, token, amount);
|
138
381
|
|
382
|
+
emit LogStakingTotalValueLockedIncreased(targetNftId, token, amount, newBalance);
|
139
383
|
}
|
140
384
|
|
141
|
-
|
385
|
+
|
386
|
+
/// @inheritdoc IStaking
|
387
|
+
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
142
388
|
external
|
143
389
|
virtual
|
144
|
-
|
390
|
+
restricted() // only pool service
|
391
|
+
returns (Amount newBalance)
|
145
392
|
{
|
393
|
+
StakingStorage storage $ = _getStakingStorage();
|
394
|
+
newBalance = $._store.decreaseTotalValueLocked(targetNftId, token, amount);
|
146
395
|
|
396
|
+
emit LogStakingTotalValueLockedDecreased(targetNftId, token, amount, newBalance);
|
147
397
|
}
|
148
398
|
|
149
399
|
|
400
|
+
// TODO add to interface and implement
|
401
|
+
/// inheritdoc IStaking
|
150
402
|
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
151
403
|
external
|
152
404
|
virtual
|
405
|
+
restricted()
|
153
406
|
onlyOwner // or CCIP
|
154
407
|
{
|
155
408
|
|
156
409
|
}
|
157
410
|
|
411
|
+
// TODO add to interface and implement
|
412
|
+
/// @inheritdoc IStaking
|
158
413
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
159
414
|
external
|
160
415
|
virtual
|
416
|
+
restricted()
|
161
417
|
onlyOwner // or CCIP
|
162
418
|
{
|
163
419
|
|
164
420
|
}
|
165
421
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
function
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
422
|
+
//--- staking functions -------------------------------------------------//
|
423
|
+
|
424
|
+
/// @inheritdoc IStaking
|
425
|
+
function createStake(
|
426
|
+
NftId targetNftId,
|
427
|
+
Amount stakeAmount,
|
428
|
+
address stakeOwner
|
429
|
+
)
|
430
|
+
external
|
431
|
+
virtual
|
432
|
+
restricted()
|
433
|
+
onlyTarget(targetNftId)
|
434
|
+
returns (NftId stakeNftId)
|
435
|
+
{
|
436
|
+
// effects (includes further checks in service)
|
437
|
+
StakingStorage storage $ = _getStakingStorage();
|
438
|
+
stakeNftId = $._stakingService.createStakeObject(targetNftId, stakeOwner);
|
439
|
+
$._store.createStake(stakeNftId, targetNftId, stakeOwner, stakeAmount);
|
440
|
+
|
441
|
+
// interactions
|
442
|
+
if (stakeAmount.gtz()) {
|
443
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
444
|
+
}
|
445
|
+
}
|
446
|
+
|
447
|
+
|
448
|
+
/// @inheritdoc IStaking
|
449
|
+
function stake(
|
450
|
+
NftId stakeNftId,
|
451
|
+
Amount stakeAmount
|
452
|
+
)
|
453
|
+
external
|
454
|
+
virtual
|
455
|
+
restricted()
|
456
|
+
onlyStakeOwner(stakeNftId)
|
457
|
+
returns (Amount newStakeBalance)
|
458
|
+
{
|
459
|
+
StakingStorage storage $ = _getStakingStorage();
|
460
|
+
$._store.stake(
|
461
|
+
stakeNftId,
|
462
|
+
true, // update rewards
|
463
|
+
true, // restake rewards
|
464
|
+
SecondsLib.max(), // max additional locking duration
|
465
|
+
stakeAmount);
|
466
|
+
|
467
|
+
// collect staked DIP token via staking service
|
468
|
+
if (stakeAmount.gtz()) {
|
469
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
470
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
471
|
+
}
|
472
|
+
}
|
473
|
+
|
474
|
+
|
475
|
+
/// @inheritdoc IStaking
|
476
|
+
function unstake(NftId stakeNftId)
|
477
|
+
external
|
478
|
+
virtual
|
479
|
+
restricted()
|
480
|
+
onlyStakeOwner(stakeNftId)
|
481
|
+
returns (Amount unstakedAmount)
|
482
|
+
{
|
483
|
+
StakingStorage storage $ = _getStakingStorage();
|
484
|
+
unstakedAmount = $._store.unstake(
|
485
|
+
stakeNftId,
|
486
|
+
true, // update rewards
|
487
|
+
true, // restake rewards
|
488
|
+
AmountLib.max()); // unstake up to this amount
|
489
|
+
|
490
|
+
// transfer unstaked DIP token via staking service
|
491
|
+
if (unstakedAmount.gtz()) {
|
492
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
493
|
+
$._stakingService.pushDipToken(unstakedAmount, stakeOwner);
|
494
|
+
}
|
495
|
+
}
|
496
|
+
|
174
497
|
|
175
|
-
|
176
|
-
function
|
177
|
-
|
498
|
+
/// @inheritdoc IStaking
|
499
|
+
function restake(
|
500
|
+
NftId stakeNftId,
|
501
|
+
NftId newTargetNftId
|
502
|
+
)
|
503
|
+
external
|
504
|
+
virtual
|
505
|
+
restricted() // only staking service
|
506
|
+
onlyStakeOwner(stakeNftId)
|
507
|
+
onlyTarget(newTargetNftId)
|
508
|
+
returns (
|
509
|
+
NftId newStakeNftId,
|
510
|
+
Amount newStakedAmount
|
511
|
+
)
|
512
|
+
{
|
513
|
+
StakingStorage storage $ = _getStakingStorage();
|
514
|
+
|
515
|
+
// step 1: unstake as much as possible
|
516
|
+
newStakedAmount = $._store.unstake(
|
517
|
+
stakeNftId,
|
518
|
+
true, // update rewards
|
519
|
+
true, // restake rewards
|
520
|
+
AmountLib.max()); // unstake up to this amount
|
521
|
+
|
522
|
+
// step 2: create new stake with full unstaked amount
|
523
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
524
|
+
newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
|
525
|
+
$._store.createStake(newStakeNftId, newTargetNftId, stakeOwner, newStakedAmount);
|
526
|
+
|
527
|
+
// logging
|
528
|
+
emit LogStakingStakeRestaked(newStakeNftId, newTargetNftId, newStakedAmount, stakeOwner, stakeNftId);
|
178
529
|
}
|
179
530
|
|
180
|
-
|
181
|
-
|
531
|
+
|
532
|
+
function updateRewards(NftId stakeNftId)
|
533
|
+
external
|
534
|
+
virtual
|
535
|
+
restricted()
|
536
|
+
onlyStakeOwner(stakeNftId)
|
537
|
+
returns (Amount newRewardAmount)
|
538
|
+
{
|
539
|
+
StakingStorage storage $ = _getStakingStorage();
|
540
|
+
$._store.updateRewards(stakeNftId);
|
182
541
|
}
|
183
542
|
|
184
|
-
|
185
|
-
|
543
|
+
|
544
|
+
function claimRewards(NftId stakeNftId)
|
545
|
+
external
|
546
|
+
virtual
|
547
|
+
restricted()
|
548
|
+
onlyStakeOwner(stakeNftId)
|
549
|
+
returns (
|
550
|
+
Amount claimedAmount
|
551
|
+
)
|
552
|
+
{
|
553
|
+
StakingStorage storage $ = _getStakingStorage();
|
554
|
+
claimedAmount = $._store.claimRewards(
|
555
|
+
stakeNftId,
|
556
|
+
true,
|
557
|
+
AmountLib.max());
|
558
|
+
|
559
|
+
// collect staked DIP token by staking service
|
560
|
+
if (claimedAmount.gtz()) {
|
561
|
+
// interactions
|
562
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
563
|
+
$._stakingService.pushDipToken(claimedAmount, stakeOwner);
|
564
|
+
}
|
186
565
|
}
|
187
566
|
|
188
567
|
|
189
|
-
|
190
|
-
function getTargetInfo() external view returns (NftId stakeNftId) {}
|
568
|
+
//--- view functions ----------------------------------------------------//
|
191
569
|
|
192
|
-
function
|
193
|
-
return _getStakingStorage().
|
570
|
+
function getStakingReader() public virtual view returns (StakingReader reader) {
|
571
|
+
return _getStakingStorage()._reader;
|
194
572
|
}
|
195
573
|
|
196
|
-
function
|
197
|
-
return _getStakingStorage().
|
574
|
+
function getStakingStore() external virtual view returns (StakingStore stakingStore) {
|
575
|
+
return _getStakingStorage()._store;
|
198
576
|
}
|
199
577
|
|
200
|
-
function
|
201
|
-
|
202
|
-
|
203
|
-
|
578
|
+
function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
|
579
|
+
return address(_getStakingStorage()._tokenRegistry);
|
580
|
+
}
|
581
|
+
|
582
|
+
function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
|
583
|
+
return _getStakingStorage()._tokenHandler;
|
584
|
+
}
|
585
|
+
|
586
|
+
// from IRegisterable
|
587
|
+
function getRelease()
|
204
588
|
public
|
589
|
+
pure
|
590
|
+
virtual override (IRelease, Registerable)
|
591
|
+
returns(VersionPart)
|
592
|
+
{
|
593
|
+
return VersionPartLib.toVersionPart(3);
|
594
|
+
}
|
595
|
+
|
596
|
+
// from IVersionable
|
597
|
+
function getVersion()
|
598
|
+
public
|
599
|
+
pure
|
600
|
+
virtual override (Component, IVersionable, Versionable)
|
601
|
+
returns(Version)
|
602
|
+
{
|
603
|
+
return VersionLib.toVersion(3,0,0);
|
604
|
+
}
|
605
|
+
|
606
|
+
//--- internal functions ------------------------------------------------//
|
607
|
+
|
608
|
+
|
609
|
+
function _refillRewardReserves(NftId targetNftId, Amount dipAmount, address transferFrom)
|
610
|
+
internal
|
205
611
|
virtual
|
206
|
-
|
207
|
-
returns (Amount rewardIncrementAmount)
|
612
|
+
returns (Amount newBalance)
|
208
613
|
{
|
614
|
+
// checks + effects
|
615
|
+
StakingStorage storage $ = _getStakingStorage();
|
616
|
+
newBalance = $._store.refillRewardReserves(targetNftId, dipAmount);
|
617
|
+
|
618
|
+
// interactions
|
619
|
+
// collect DIP token from target owner
|
620
|
+
if (dipAmount.gtz()) {
|
621
|
+
$._stakingService.pullDipToken(dipAmount, transferFrom);
|
622
|
+
}
|
623
|
+
}
|
624
|
+
|
209
625
|
|
626
|
+
function _withdrawRewardReserves(NftId targetNftId, Amount dipAmount, address transferTo)
|
627
|
+
internal
|
628
|
+
virtual
|
629
|
+
returns (Amount newBalance)
|
630
|
+
{
|
631
|
+
// checks + effects
|
632
|
+
StakingStorage storage $ = _getStakingStorage();
|
633
|
+
newBalance = $._store.withdrawRewardReserves(targetNftId, dipAmount);
|
634
|
+
|
635
|
+
// interactions
|
636
|
+
// transfer DIP token to designated address
|
637
|
+
if (dipAmount.gtz()) {
|
638
|
+
$._stakingService.pushDipToken(dipAmount, transferTo);
|
639
|
+
}
|
640
|
+
}
|
641
|
+
|
642
|
+
|
643
|
+
function _addToken(
|
644
|
+
StakingStorage storage $,
|
645
|
+
ChainId chainId,
|
646
|
+
address token
|
647
|
+
)
|
648
|
+
internal
|
649
|
+
virtual
|
650
|
+
{
|
651
|
+
if ($._store.getTokenInfo(chainId, token).lastUpdateIn.eqz()) {
|
652
|
+
$._store.addToken(chainId, token);
|
653
|
+
}
|
210
654
|
}
|
211
655
|
|
656
|
+
|
657
|
+
/// @dev top level initializer (upgradable contract)
|
658
|
+
function _initialize(
|
659
|
+
address owner,
|
660
|
+
bytes memory data
|
661
|
+
)
|
662
|
+
internal
|
663
|
+
virtual override
|
664
|
+
onlyInitializing()
|
665
|
+
{
|
666
|
+
(
|
667
|
+
address registryAddress,
|
668
|
+
address tokenRegistryAddress,
|
669
|
+
address stakingStoreAddress
|
670
|
+
) = abi.decode(data, (address, address, address));
|
671
|
+
|
672
|
+
// wiring to external contracts
|
673
|
+
IRegistry registry = IRegistry(registryAddress);
|
674
|
+
StakingStorage storage $ = _getStakingStorage();
|
675
|
+
$._protocolNftId = registry.getProtocolNftId();
|
676
|
+
$._store = StakingStore(stakingStoreAddress);
|
677
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
678
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
679
|
+
// staking service has to be set via setStakingService after deploying the first GIF release
|
680
|
+
|
681
|
+
__Component_init(
|
682
|
+
registry.getAuthority(),
|
683
|
+
address(registry),
|
684
|
+
registry.getNftId(), // parent nft id
|
685
|
+
CONTRACT_NAME,
|
686
|
+
STAKING(),
|
687
|
+
false, // is interceptor
|
688
|
+
owner,
|
689
|
+
"", // registry data
|
690
|
+
""); // component data
|
691
|
+
|
692
|
+
// Protocol target is created in the StakingStore constructor.
|
693
|
+
// This allows setting up the protocol target before the full
|
694
|
+
// staking authorization setup is in place.
|
695
|
+
_checkAndLogProtocolTargetCreation($);
|
696
|
+
|
697
|
+
_registerInterface(type(IStaking).interfaceId);
|
698
|
+
}
|
699
|
+
|
700
|
+
|
701
|
+
function _checkAndLogProtocolTargetCreation(StakingStorage storage $)
|
702
|
+
internal
|
703
|
+
virtual
|
704
|
+
{
|
705
|
+
TargetInfo memory protocolInfo = $._store.getTargetInfo($._protocolNftId);
|
706
|
+
|
707
|
+
if (protocolInfo.lastUpdateIn.eqz()) {
|
708
|
+
revert ErrorStakingTargetNotFound($._protocolNftId);
|
709
|
+
}
|
710
|
+
|
711
|
+
emit LogStakingTargetCreated($._protocolNftId, protocolInfo.objectType, protocolInfo.lockingPeriod, protocolInfo.rewardRate, protocolInfo.maxStakedAmount);
|
712
|
+
}
|
713
|
+
|
714
|
+
|
715
|
+
function _checkTypeAndOwner(NftId nftId, ObjectType expectedObjectType, bool checkOwner)
|
716
|
+
internal
|
717
|
+
view
|
718
|
+
{
|
719
|
+
StakingStorage storage $ = _getStakingStorage();
|
720
|
+
if (expectedObjectType == STAKE()) {
|
721
|
+
if (!$._store.exists(nftId)) {
|
722
|
+
revert ErrorStakingNotStake(nftId);
|
723
|
+
}
|
724
|
+
} else {
|
725
|
+
if (expectedObjectType == TARGET()) {
|
726
|
+
if (!$._store.getTargetSet().exists(nftId)) {
|
727
|
+
revert ErrorStakingNotTarget(nftId);
|
728
|
+
}
|
729
|
+
}
|
730
|
+
}
|
731
|
+
|
732
|
+
if (checkOwner) {
|
733
|
+
address nftOwner = getRegistry().ownerOf(nftId);
|
734
|
+
if (msg.sender != nftOwner) {
|
735
|
+
revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
|
736
|
+
}
|
737
|
+
}
|
738
|
+
}
|
739
|
+
|
740
|
+
|
741
|
+
function _getStakingStorage() private pure returns (StakingStorage storage $) {
|
742
|
+
assembly {
|
743
|
+
$.slot := STAKING_LOCATION_V1
|
744
|
+
}
|
745
|
+
}
|
212
746
|
}
|