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