@etherisc/gif-next 0.0.2-ff1bf36-818 → 0.0.2-ff596ab-857
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 +85 -8
- 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/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +408 -104
- 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 +196 -441
- 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 +115 -325
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +682 -375
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +218 -130
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -160
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +478 -108
- 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 +1688 -735
- 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 +973 -650
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +148 -317
- 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 +116 -109
- 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 +124 -269
- 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 +173 -326
- 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 +352 -380
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +174 -126
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +247 -121
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +154 -158
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +500 -269
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -308
- 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 +723 -515
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +218 -110
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +357 -173
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +165 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +305 -389
- 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 +458 -253
- 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 +296 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +335 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +300 -64
- 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 +270 -202
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +286 -21
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +428 -287
- 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 +193 -121
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- 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 +278 -362
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +364 -186
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +166 -94
- 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 +791 -377
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -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 +100 -227
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +496 -625
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +188 -130
- 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 +93 -68
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -109
- 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 +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +123 -268
- 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 +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1512 -167
- 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/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1646 -402
- 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/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +193 -107
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- 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 +1645 -790
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +180 -77
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/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 +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +69 -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 +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +118 -79
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +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 -207
- 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 +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +44 -92
- package/contracts/distribution/DistributionService.sol +243 -117
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +46 -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 +100 -18
- package/contracts/instance/IInstanceService.sol +59 -34
- package/contracts/instance/Instance.sol +189 -71
- package/contracts/instance/InstanceAdmin.sol +276 -178
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
- package/contracts/instance/InstanceReader.sol +477 -253
- package/contracts/instance/InstanceService.sol +279 -246
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -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 +12 -8
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -13
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +49 -28
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +2 -5
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +9 -21
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +34 -38
- package/contracts/pool/BasicPoolAuthorization.sol +34 -11
- package/contracts/pool/BundleService.sol +117 -167
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +28 -46
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +80 -73
- package/contracts/pool/Pool.sol +142 -137
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +361 -288
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +111 -34
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +11 -14
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +383 -169
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +47 -11
- package/contracts/product/IPolicyService.sol +47 -29
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +375 -314
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +85 -83
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +177 -94
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +4 -4
- 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 +114 -297
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +279 -239
- package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +69 -123
- package/contracts/shared/ComponentService.sol +424 -378
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- 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 +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +73 -51
- package/contracts/shared/KeyValueStore.sol +4 -4
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -9
- package/contracts/shared/PolicyHolder.sol +18 -54
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +271 -71
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +523 -222
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +70 -81
- package/contracts/staking/StakingManager.sol +12 -9
- package/contracts/staking/StakingReader.sol +70 -82
- package/contracts/staking/StakingService.sol +63 -149
- package/contracts/staking/StakingServiceManager.sol +7 -5
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +19 -0
- package/contracts/type/Blocknumber.sol +15 -15
- 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/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +27 -0
- 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 +4 -7
- package/contracts/type/UFixed.sol +38 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.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/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -5,8 +5,16 @@ import {TokenHandler} from "./TokenHandler.sol";
|
|
5
5
|
|
6
6
|
library TokenHandlerDeployerLib {
|
7
7
|
|
8
|
-
function deployTokenHandler(
|
9
|
-
|
8
|
+
function deployTokenHandler(
|
9
|
+
address registry,
|
10
|
+
address component,
|
11
|
+
address token,
|
12
|
+
address authority
|
13
|
+
)
|
14
|
+
public
|
15
|
+
returns (TokenHandler)
|
16
|
+
{
|
17
|
+
return new TokenHandler(registry, component, token, authority);
|
10
18
|
}
|
11
19
|
|
12
20
|
}
|
@@ -1,167 +1,367 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
5
6
|
import {IComponent} from "../shared/IComponent.sol";
|
6
7
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
8
|
+
|
9
|
+
import {Amount} from "../type/Amount.sol";
|
10
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
11
|
+
import {ChainId} from "../type/ChainId.sol";
|
7
12
|
import {NftId} from "../type/NftId.sol";
|
8
13
|
import {ObjectType} from "../type/ObjectType.sol";
|
9
14
|
import {Seconds} from "../type/Seconds.sol";
|
10
15
|
import {StakingReader} from "./StakingReader.sol";
|
11
16
|
import {StakingStore} from "./StakingStore.sol";
|
17
|
+
import {TargetHandler} from "./TargetHandler.sol";
|
12
18
|
import {Timestamp} from "../type/Timestamp.sol";
|
13
19
|
import {UFixed} from "../type/UFixed.sol";
|
20
|
+
import {VersionPart} from "../type/Version.sol";
|
21
|
+
|
14
22
|
|
15
23
|
interface IStaking is
|
16
24
|
IComponent,
|
17
25
|
IVersionable
|
18
26
|
{
|
19
|
-
|
20
|
-
|
27
|
+
|
28
|
+
// owner functions
|
29
|
+
event LogStakingStakingRateSet(ChainId chainId, address token, UFixed newStakingRate, UFixed oldStakingRate, Blocknumber lastUpdateIn);
|
30
|
+
event LogStakingStakingServiceSet(address stakingService, VersionPart release, address oldStakingService);
|
31
|
+
event LogStakingStakingReaderSet(address stakingReader, address oldStakingReader);
|
32
|
+
event LogStakingTargetHandlerSet(address targetManager, address oldTargetHandler);
|
33
|
+
event LogStakingTokenHandlerApproved(address token, Amount approvalAmount, Amount oldApprovalAmount);
|
34
|
+
|
35
|
+
// token
|
36
|
+
event LogStakingTokenAdded(ChainId chainId, address token);
|
37
|
+
event LogStakingTargetTokenAdded(NftId targetNftId, ChainId chainId, address token);
|
38
|
+
|
39
|
+
// total value locked
|
40
|
+
event LogStakingTvlIncreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdateIn);
|
41
|
+
event LogStakingTvlDecreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdateIn);
|
42
|
+
|
43
|
+
// targets
|
44
|
+
event LogStakingSupportInfoSet(
|
45
|
+
ObjectType objectType,
|
46
|
+
bool isSupported,
|
47
|
+
bool allowNewTargets,
|
48
|
+
bool allowCrossChain,
|
49
|
+
Amount minStakingAmount,
|
50
|
+
Amount maxStakingAmount,
|
51
|
+
Seconds minLockingPeriod,
|
52
|
+
Seconds maxLockingPeriod,
|
53
|
+
UFixed minRewardRate,
|
54
|
+
UFixed maxRewardRate,
|
55
|
+
Blocknumber lastUpdateIn);
|
56
|
+
|
57
|
+
event LogStakingTargetCreated(NftId targetNftId, ObjectType objectType, Seconds lockingPeriod, UFixed rewardRate);
|
58
|
+
event LogStakingLimitsSet(NftId targetNftId, Amount marginAmount, Amount hardLimitAmount, Blocknumber lastUpdateIn);
|
59
|
+
event LogStakingTargetLimitsUpdated(NftId targetNftId, Amount marginAmount, Amount hardLimitAmount, Blocknumber lastUpdateIn);
|
60
|
+
event LogStakingTargetLimitUpdated(NftId targetNftId, Amount limitAmount, Amount hardLimitAmount, Amount requiredStakeAmount, Amount actualStakeAmount, Blocknumber lastUpdateIn);
|
21
61
|
|
22
62
|
// target parameters
|
23
|
-
event
|
24
|
-
event
|
63
|
+
event LogStakingTargetLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod, Blocknumber lastUpdateIn);
|
64
|
+
event LogStakingTargetRewardRateSet(NftId targetNftId, UFixed rewardRate, UFixed oldRewardRate, Blocknumber lastUpdateIn);
|
65
|
+
// TODO cleanup LogStakingTargetMaxStakedAmountSet
|
66
|
+
event LogStakingTargetMaxStakedAmountSet(NftId targetNftId, Amount stakeLimitAmount, Blocknumber lastUpdateIn);
|
67
|
+
event LogStakingTargetLimitsSet(NftId targetNftId, Amount stakeLimitAmount, Amount marginAmount, Amount limitAmount);
|
68
|
+
|
69
|
+
// reward reserves
|
70
|
+
event LogStakingRewardReservesRefilled(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
|
71
|
+
event LogStakingRewardReservesWithdrawn(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
|
72
|
+
event LogStakingRewardReservesSpent(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdateIn);
|
73
|
+
|
74
|
+
// stakes
|
75
|
+
event LogStakingStakeCreated(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, Timestamp lockedUntil, address stakeOwner);
|
76
|
+
event LogStakingStakeRewardsUpdated(NftId stakeNftId, Amount rewardIncrementAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil, Blocknumber lastUpdateIn);
|
77
|
+
event LogStakingRewardsRestaked(NftId stakeNftId, Amount restakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil, Blocknumber lastUpdateIn);
|
78
|
+
event LogStakingStaked(NftId stakeNftId, Amount stakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil, Blocknumber lastUpdateIn);
|
79
|
+
event LogStakingUnstaked(NftId stakeNftId, Amount unstakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil, Blocknumber lastUpdateIn);
|
80
|
+
event LogStakingRewardsClaimed(NftId stakeNftId, Amount claimedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil, Blocknumber lastUpdateIn);
|
81
|
+
|
82
|
+
event LogStakingStakeRestaked(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, address owner, NftId oldStakeNftId);
|
25
83
|
|
26
84
|
// modifiers
|
27
85
|
error ErrorStakingNotStake(NftId stakeNftId);
|
28
86
|
error ErrorStakingNotTarget(NftId targetNftId);
|
87
|
+
error ErrorStakingNotOwner(NftId stakeNftId, address expectedOwner, address actualOwner);
|
29
88
|
|
30
89
|
error ErrorStakingNotStakingOwner();
|
31
90
|
error ErrorStakingNotNftOwner(NftId nftId);
|
32
91
|
|
92
|
+
// owner functions
|
93
|
+
error ErrorStakingReleaseNotActive(VersionPart release);
|
94
|
+
error ErrorStakingServiceNotFound(VersionPart release);
|
95
|
+
|
96
|
+
// initializeTokenHandler
|
97
|
+
error ErrorStakingNotRegistry(address registry);
|
98
|
+
|
33
99
|
// staking rate
|
34
|
-
error ErrorStakingTokenNotRegistered(
|
100
|
+
error ErrorStakingTokenNotRegistered(ChainId chainId, address token);
|
35
101
|
|
36
102
|
// check dip balance and allowance
|
37
103
|
error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
|
38
104
|
error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
|
39
105
|
|
40
106
|
error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
|
107
|
+
|
108
|
+
// target management
|
109
|
+
error ErrorStakingSupportTypeInvalid(ObjectType targetType);
|
110
|
+
error ErrorStakingStakingAmountsInvalid(Amount minStakingAmount, Amount maxStakingAmount);
|
111
|
+
error ErrorStakingLockingPeriodsInvalid(Seconds minLockingPeriod, Seconds maxLockingPeriod);
|
112
|
+
error ErrorStakingRewardRatesInvalid(UFixed minRewardRate, UFixed maxRewardRate);
|
113
|
+
|
114
|
+
error ErrorStakingTargetNotFound(NftId targetNftId);
|
115
|
+
error ErrorStakingTargetTokenNotFound(NftId targetNftId, ChainId chainId, address token);
|
116
|
+
error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount stakeLimitAmount, Amount stakedAmount);
|
117
|
+
|
41
118
|
error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
|
42
119
|
error ErrorStakingTargetNftIdZero();
|
43
120
|
error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
|
121
|
+
error ErrorStakingCrossChainTargetsNotSupported(NftId targetNftId, ObjectType objectType);
|
44
122
|
error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
|
45
|
-
error
|
46
|
-
error
|
47
|
-
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
48
|
-
error ErrorStakingTargetNotFound(NftId targetNftId);
|
49
|
-
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
123
|
+
error ErrorStakingLockingPeriodInvalid(NftId targetNftId, Seconds lockingPeriod, Seconds minLockingPeriod, Seconds maxLockingPeriod);
|
124
|
+
error ErrorStakingRewardRateInvalid(NftId targetNftId, UFixed rewardRate, UFixed minRewardRate, UFixed maxRewardRate);
|
50
125
|
|
51
|
-
error
|
126
|
+
error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
|
52
127
|
error ErrorStakingStakeAmountZero(NftId targetNftId);
|
53
128
|
|
54
129
|
// info for individual stake
|
55
130
|
struct StakeInfo {
|
56
|
-
|
131
|
+
// slot 0
|
132
|
+
Amount stakedAmount; // 96
|
133
|
+
Amount rewardAmount; // 96
|
134
|
+
Timestamp lockedUntil; // 40
|
135
|
+
// slot 1
|
136
|
+
NftId targetNftId; // 96, redundant to parent nft in registry object info
|
137
|
+
Timestamp lastUpdateAt; // 40, needed to update rewards
|
138
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
57
139
|
}
|
58
140
|
|
141
|
+
|
142
|
+
struct SupportInfo {
|
143
|
+
bool isSupported; // 1
|
144
|
+
bool allowNewTargets;
|
145
|
+
bool allowCrossChain;
|
146
|
+
|
147
|
+
Amount minStakingAmount; // 96
|
148
|
+
Amount maxStakingAmount; // 96
|
149
|
+
|
150
|
+
Seconds minLockingPeriod; // 40
|
151
|
+
Seconds maxLockingPeriod; // 40
|
152
|
+
|
153
|
+
UFixed minRewardRate; // 160
|
154
|
+
UFixed maxRewardRate; // 160
|
155
|
+
|
156
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
157
|
+
}
|
158
|
+
|
159
|
+
|
59
160
|
struct TargetInfo {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
161
|
+
// Slot 0
|
162
|
+
Amount stakedAmount; // 96
|
163
|
+
Amount rewardAmount; // 96
|
164
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
165
|
+
// Slot 1
|
166
|
+
Amount reserveAmount; // 96
|
167
|
+
Amount limitAmount; // 96
|
168
|
+
Seconds lockingPeriod; // 40
|
169
|
+
ObjectType objectType; // 8
|
170
|
+
// Slot 2
|
171
|
+
UFixed rewardRate; // 160
|
172
|
+
ChainId chainId; // 96 redundant to target nft id
|
64
173
|
}
|
65
174
|
|
66
|
-
|
175
|
+
struct LimitInfo {
|
176
|
+
// Slot 0
|
177
|
+
Amount marginAmount; // 96
|
178
|
+
Amount hardLimitAmount; // 96
|
179
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
180
|
+
}
|
67
181
|
|
68
|
-
|
69
|
-
|
70
|
-
|
182
|
+
struct TvlInfo {
|
183
|
+
// Slot 0
|
184
|
+
Amount tvlAmount; // 96
|
185
|
+
Amount tvlBaselineAmount; // 96
|
186
|
+
uint16 updatesCounter; // 8
|
187
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
188
|
+
}
|
71
189
|
|
190
|
+
struct TokenInfo {
|
191
|
+
// Slot 0
|
192
|
+
UFixed stakingRate; // 160
|
193
|
+
Blocknumber lastUpdateIn; // 40, needed for traceability
|
194
|
+
}
|
72
195
|
|
73
|
-
|
196
|
+
function initializeTokenHandler() external;
|
197
|
+
|
198
|
+
//--- only owner functions ----------------------------------------------//
|
199
|
+
|
200
|
+
/// @dev Enable/disable the staking support for the specified target type.
|
201
|
+
/// Defines the degrees of freedom for creating staking targets per target type.
|
202
|
+
function setSupportInfo(
|
203
|
+
ObjectType targetType,
|
204
|
+
bool isSupported,
|
205
|
+
bool allowNewTargets,
|
206
|
+
bool allowCrossChain,
|
207
|
+
Amount minStakingAmount,
|
208
|
+
Amount maxStakingAmount,
|
209
|
+
Seconds minLockingPeriod,
|
210
|
+
Seconds maxLockingPeriod,
|
211
|
+
UFixed minRewardRate,
|
212
|
+
UFixed maxRewardRate
|
213
|
+
) external;
|
214
|
+
|
215
|
+
/// @dev Set the trigger values to determine when to update limit amount in TargetInfo.
|
216
|
+
/// Changes in the TvlInfo may trigger an update of the limit amount in the TargetInfo based on these settings.
|
217
|
+
/// The value tvlUpdatesTrigger suppresses any updates if the number of TVL updates is below this value.
|
218
|
+
/// The value minTvlRatioTrigger defines the minimal TVL ratio above which the limit amount is updated.
|
219
|
+
/// The ratio is calulated as current TVL / baseline TVL (or baseline TVL / current TVL).
|
220
|
+
function setUpdateTriggers(
|
221
|
+
uint16 tvlUpdatesTrigger,
|
222
|
+
UFixed minTvlRatioTrigger
|
223
|
+
) external;
|
74
224
|
|
225
|
+
/// @dev Set the stake locking period for protocol stakes to the specified duration.
|
226
|
+
function setProtocolLockingPeriod(Seconds lockingPeriod) external;
|
227
|
+
|
228
|
+
/// @dev Set the protocol reward rate.
|
229
|
+
function setProtocolRewardRate(UFixed rewardRate) external;
|
230
|
+
|
231
|
+
/// @dev Set the staking rate for the specified chain and token.
|
232
|
+
/// The staking rate defines the amount of staked dips required to back up 1 token of total value locked.
|
233
|
+
function setStakingRate(ChainId chainId, address token, UFixed stakingRate) external;
|
234
|
+
|
235
|
+
/// @dev Sets/updates the staking service contract to the staking service of the specified release.
|
236
|
+
function setStakingService(VersionPart release) external;
|
237
|
+
|
238
|
+
/// @dev Sets/updates the staking reader contract.
|
239
|
+
function setStakingReader(address stakingReader) external;
|
240
|
+
|
241
|
+
/// @dev Registers a token for recording staking rate and total value locked.
|
242
|
+
function addToken(ChainId chainId, address token) external;
|
243
|
+
|
244
|
+
/// @dev Set the approval to the token handler.
|
245
|
+
/// Defines the max allowance from the staking wallet to the token handler.
|
246
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external;
|
247
|
+
|
248
|
+
//--- only target owner functions ---------------------------------------//
|
249
|
+
|
250
|
+
/// @dev (Re)fills the staking reward reserves for the specified target
|
251
|
+
/// Unpermissioned: anybody may fill up staking reward reserves
|
252
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
253
|
+
|
254
|
+
/// @dev Defunds the staking reward reserves for the specified target
|
255
|
+
/// Permissioned: only the owner may call this function
|
256
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
257
|
+
|
258
|
+
//--- target management -------------------------------------------------//
|
259
|
+
|
260
|
+
/// @dev Register a new target for staking.
|
261
|
+
/// Permissioned: only the staking service may call this function
|
75
262
|
function registerTarget(
|
76
263
|
NftId targetNftId,
|
77
264
|
ObjectType expectedObjectType,
|
78
|
-
uint256 chainId,
|
79
265
|
Seconds initialLockingPeriod,
|
80
266
|
UFixed initialRewardRate
|
81
267
|
) external;
|
82
268
|
|
83
269
|
|
84
|
-
/// @dev
|
85
|
-
///
|
270
|
+
/// @dev Set the stake locking period to the specified duration.
|
271
|
+
/// Permissioned: only the staking service may call this function
|
86
272
|
function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
|
87
273
|
|
88
|
-
/// @dev
|
89
|
-
///
|
274
|
+
/// @dev Update the target specific reward rate.
|
275
|
+
/// Permissioned: only the staking service may call this function
|
90
276
|
function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
|
91
277
|
|
92
|
-
/// @dev
|
93
|
-
///
|
94
|
-
|
278
|
+
/// @dev Set the staking limits for the specified target.
|
279
|
+
/// The margin amount allows staker to stake over the current required stakes by this amount.
|
280
|
+
/// The limit amount restricts stakers to ever stake more than this amount.
|
281
|
+
/// Permissioned: only the target owner may call this function
|
282
|
+
function setTargetLimits(NftId targetNftId, Amount marginAmount, Amount limitAmount) external;
|
95
283
|
|
96
|
-
|
97
|
-
///
|
98
|
-
|
284
|
+
// TODO refactor this into new setStakingLimits
|
285
|
+
/// @dev Set the maximum staked amount for the specified target.
|
286
|
+
/// Permissioned: only the staking service may call this function
|
287
|
+
function setMaxStakedAmount(NftId targetNftId, Amount stakeLimitAmount) external;
|
99
288
|
|
289
|
+
/// @dev Register a token for the specified target.
|
290
|
+
/// Used for instance targets. Each product may introduce its own token.
|
291
|
+
/// Permissioned: only the staking service may call this function
|
292
|
+
function addTargetToken(NftId targetNftId, address token) external;
|
100
293
|
|
101
|
-
/// @dev
|
294
|
+
/// @dev Increases the total value locked amount for the specified target by the provided token amount.
|
102
295
|
/// function is called when a new policy is collateralized.
|
103
296
|
/// function restricted to the pool service.
|
104
|
-
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external
|
297
|
+
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external;
|
105
298
|
|
106
|
-
|
107
|
-
/// @dev decreases the total value locked amount for the specified target by the provided token amount.
|
299
|
+
/// @dev Decreases the total value locked amount for the specified target by the provided token amount.
|
108
300
|
/// function is called when a new policy is closed or payouts are executed.
|
109
301
|
/// function restricted to the pool service.
|
110
|
-
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external
|
302
|
+
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external;
|
111
303
|
|
112
304
|
|
113
305
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
|
114
306
|
|
115
|
-
|
307
|
+
//--- service interaction functions -------------------------------------//
|
116
308
|
|
117
|
-
/// @dev
|
118
|
-
///
|
119
|
-
|
309
|
+
/// @dev Set the staking limits for the specified target.
|
310
|
+
/// Permissioned: only the staking service may call this function
|
311
|
+
// TODO implement
|
312
|
+
// function setStakingLimitsByService(NftId targetNftId, Amount marginAmount, Amount limitAmount) external;
|
120
313
|
|
121
|
-
/// @dev
|
122
|
-
///
|
123
|
-
|
124
|
-
function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
|
314
|
+
/// @dev (Re)fills the staking reward reserves for the specified target
|
315
|
+
/// Unpermissioned: anybody may fill up staking reward reserves
|
316
|
+
function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom) external returns (Amount newBalance);
|
125
317
|
|
126
|
-
/// @dev
|
127
|
-
///
|
318
|
+
/// @dev Defunds the staking reward reserves for the specified target
|
319
|
+
/// Permissioned: only the owner may call this function
|
320
|
+
function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo) external returns (Amount newBalance);
|
321
|
+
|
322
|
+
//--- public functions -----------------------------------------------------//
|
323
|
+
|
324
|
+
/// @dev Updates the current limit amount for the specified target.
|
325
|
+
/// The function takes into account the current TVL amount per token
|
326
|
+
/// and the current staking rate for the token to calculate the required stake amount.
|
327
|
+
/// Based on this required stake amount and the targets margin and hard limit (from LimitInfo)
|
328
|
+
/// the function updates the target limit amount (in the target info)
|
329
|
+
function updateTargetLimit(NftId targetNftId) external;
|
330
|
+
|
331
|
+
/// @dev Creates a new stake to the specified target over the given DIP amount.
|
332
|
+
/// The stake owner is provided as an argument and becomes the stake NFT holder.
|
333
|
+
/// This function is permissionless and may be called by any user.
|
334
|
+
function createStake(NftId targetNftId, Amount dipAmount, address stakeOwner) external returns (NftId stakeNftId);
|
335
|
+
|
336
|
+
//--- stake owner functions -------------------------------------------------//
|
337
|
+
|
338
|
+
/// @dev Increase the staked DIP by dipAmount for the specified stake.
|
339
|
+
/// Staking rewards are updated and added to the staked DIP amount as well.
|
340
|
+
/// The function returns the new total amount of staked dips.
|
341
|
+
function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount newStakeBalance);
|
342
|
+
|
343
|
+
/// @dev Pays the specified DIP amount to the holder of the stake NFT ID.
|
128
344
|
/// permissioned: only staking service may call this function.
|
129
|
-
function
|
345
|
+
function unstake(NftId stakeNftId) external returns (Amount unstakedAmount);
|
130
346
|
|
131
|
-
/// @dev
|
132
|
-
///
|
347
|
+
/// @dev restakes the dips to a new target.
|
348
|
+
/// the sum of the staked dips and the accumulated rewards will be restaked.
|
133
349
|
/// permissioned: only staking service may call this function.
|
134
|
-
function
|
135
|
-
external
|
136
|
-
returns (
|
137
|
-
Amount unstakedAmount,
|
138
|
-
Amount rewardsClaimedAmount
|
139
|
-
);
|
350
|
+
function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId, Amount newStakeBalance);
|
140
351
|
|
141
352
|
/// @dev update stake rewards for current time.
|
142
353
|
/// may be called before an announement of a decrease of a reward rate reduction.
|
143
354
|
/// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
|
144
355
|
/// unpermissioned.
|
145
|
-
function updateRewards(NftId stakeNftId) external;
|
356
|
+
function updateRewards(NftId stakeNftId) external returns (Amount newRewardAmount);
|
146
357
|
|
147
358
|
/// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
|
148
359
|
/// permissioned: only staking service may call this function.
|
149
|
-
function claimRewards(NftId stakeNftId)
|
150
|
-
external
|
151
|
-
returns (
|
152
|
-
Amount rewardsClaimedAmount
|
153
|
-
);
|
154
|
-
|
155
|
-
//--- helper functions --------------------------------------------------//
|
156
|
-
|
157
|
-
/// @dev transfers the specified amount of dips from the from address to the staking wallet.
|
158
|
-
function collectDipAmount(address from, Amount dipAmount) external;
|
159
|
-
|
160
|
-
/// @dev transfers the specified amount of dips from the staking wallet to the to addess.
|
161
|
-
function transferDipAmount(address to, Amount dipAmount) external;
|
360
|
+
function claimRewards(NftId stakeNftId) external returns (Amount rewardsClaimedAmount);
|
162
361
|
|
163
362
|
//--- view and pure functions -------------------------------------------//
|
164
363
|
|
364
|
+
function getTargetHandler() external view returns (TargetHandler targetHandler);
|
165
365
|
function getStakingStore() external view returns (StakingStore stakingStore);
|
166
366
|
function getStakingReader() external view returns (StakingReader reader);
|
167
367
|
}
|
@@ -3,13 +3,12 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {Amount} from "../type/Amount.sol";
|
7
6
|
import {IService} from "../shared/IService.sol";
|
8
7
|
import {IStaking} from "./IStaking.sol";
|
8
|
+
|
9
|
+
import {Amount} from "../type/Amount.sol";
|
9
10
|
import {NftId} from "../type/NftId.sol";
|
10
|
-
import {ObjectType} from "../type/ObjectType.sol";
|
11
11
|
import {Seconds} from "../type/Seconds.sol";
|
12
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
13
12
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
13
|
import {UFixed} from "../type/UFixed.sol";
|
15
14
|
|
@@ -25,34 +24,32 @@ interface IStakingService is IService
|
|
25
24
|
event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
|
26
25
|
event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
|
27
26
|
|
27
|
+
event LogStakingServiceStakeObjectCreated(NftId stakeNftId, NftId targetNftId, address stakeOwner);
|
28
28
|
event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
|
29
29
|
event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
|
30
30
|
event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
|
31
|
+
event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
|
31
32
|
|
32
33
|
event LogStakingServiceRewardsUpdated(NftId stakeNftId);
|
33
34
|
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
34
35
|
|
35
36
|
// modifiers
|
36
|
-
error
|
37
|
+
error ErrorStakingServiceNotStakingOwner(address account);
|
37
38
|
error ErrorStakingServiceNotStaking(address stakingAddress);
|
38
39
|
error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
|
39
40
|
|
40
41
|
// create
|
42
|
+
error ErrorStakingServiceTargetUnknown(NftId targetNftId);
|
41
43
|
error ErrorStakingServiceZeroTargetNftId();
|
42
44
|
error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
|
43
45
|
error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
|
44
46
|
error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
|
45
47
|
error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
|
46
48
|
|
47
|
-
|
48
|
-
/// Permissioned: only staking owner
|
49
|
-
// TODO implement
|
50
|
-
// function setProtocolRewardRate(UFixed rewardRate) external;
|
51
|
-
// function setProtocolLockingPeriod(Seconds lockingPeriod) external;
|
52
|
-
// TODO also make sure that protocol rewards can be refilled and withdrawn
|
49
|
+
//--- functions for instance service -----------------------------------------------//
|
53
50
|
|
54
|
-
/// @dev
|
55
|
-
///
|
51
|
+
/// @dev Creates/registers an on-chain instance staking target.
|
52
|
+
/// Permissioned: Only instance service
|
56
53
|
function createInstanceTarget(
|
57
54
|
NftId targetNftId,
|
58
55
|
Seconds initialLockingPeriod,
|
@@ -60,101 +57,71 @@ interface IStakingService is IService
|
|
60
57
|
) external;
|
61
58
|
|
62
59
|
/// @dev Set the instance stake locking period to the specified duration.
|
63
|
-
/// Permissioned: Only
|
60
|
+
/// Permissioned: Only instance service
|
64
61
|
function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
|
65
62
|
|
66
63
|
/// @dev Set the instance reward rate to the specified value.
|
67
|
-
/// Permissioned: Only
|
64
|
+
/// Permissioned: Only instance service
|
68
65
|
function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
|
69
66
|
|
67
|
+
/// @dev Set the instance max staked amount to the specified value.
|
68
|
+
/// Permissioned: Only instance service
|
69
|
+
function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
|
70
|
+
|
70
71
|
/// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
|
71
|
-
///
|
72
|
+
/// Permissioned: Only instance service
|
72
73
|
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
|
73
74
|
|
74
|
-
/// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
|
75
|
-
/// unpermissioned: anybody may fill up staking reward reserves
|
76
|
-
function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
|
77
|
-
|
78
75
|
/// @dev Defunds the staking reward reserves for the specified target
|
79
|
-
/// Permissioned:
|
76
|
+
/// Permissioned: Only instance service
|
80
77
|
function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
|
81
78
|
|
82
|
-
/// @dev
|
83
|
-
///
|
84
|
-
|
85
|
-
function create(
|
79
|
+
/// @dev Sets total value locked data for a target contract on a different chain.
|
80
|
+
/// this is done via CCIP (cross chain communication)
|
81
|
+
function setTotalValueLocked(
|
86
82
|
NftId targetNftId,
|
83
|
+
address token,
|
87
84
|
Amount amount
|
88
|
-
)
|
89
|
-
external
|
90
|
-
returns (
|
91
|
-
NftId stakeNftId
|
92
|
-
);
|
93
|
-
|
94
|
-
|
95
|
-
/// @dev increase an existing stake by amount DIP
|
96
|
-
/// updates and restakes the staking reward amount
|
97
|
-
/// function restricted to the current stake owner
|
98
|
-
function stake(
|
99
|
-
NftId stakeNftId,
|
100
|
-
Amount amount
|
101
|
-
)
|
102
|
-
external;
|
103
|
-
|
104
|
-
|
105
|
-
/// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
|
106
|
-
/// all related stakes and all accumulated reward DIP are transferred to the current stake holder
|
107
|
-
/// function restricted to the current stake owner
|
108
|
-
function restakeToNewTarget(
|
109
|
-
NftId stakeNftId,
|
110
|
-
NftId newTargetNftId
|
111
|
-
)
|
112
|
-
external
|
113
|
-
returns (
|
114
|
-
NftId newStakeNftId
|
115
|
-
);
|
116
|
-
|
117
|
-
|
118
|
-
/// @dev updates the reward balance of the stake using the current reward rate.
|
119
|
-
function updateRewards(
|
120
|
-
NftId stakeNftId
|
121
|
-
)
|
122
|
-
external;
|
123
|
-
|
85
|
+
) external;
|
124
86
|
|
125
|
-
|
126
|
-
function claimRewards(
|
127
|
-
NftId stakeNftId
|
128
|
-
)
|
129
|
-
external;
|
87
|
+
//--- functions for staking component ---------------------------------------------//
|
130
88
|
|
89
|
+
/// @dev Creates a new stake object for the specified target via the registry service.
|
90
|
+
/// Permissioned: only the staking component may call this function
|
91
|
+
function createStakeObject(
|
92
|
+
NftId targetNftId,
|
93
|
+
address initialOwner
|
94
|
+
) external returns (NftId stakeNftId);
|
131
95
|
|
132
|
-
/// @dev
|
133
|
-
///
|
134
|
-
function
|
135
|
-
NftId stakeNftId
|
136
|
-
)
|
137
|
-
external;
|
96
|
+
/// @dev Collect DIP token from stake owner.
|
97
|
+
/// Permissioned: only the staking component may call this function
|
98
|
+
function pullDipToken(Amount dipAmount, address stakeOwner) external;
|
138
99
|
|
100
|
+
/// @dev Transfer DIP token to stake owner.
|
101
|
+
/// Permissioned: only the staking component may call this function
|
102
|
+
function pushDipToken(Amount dipAmount, address stakeOwner) external;
|
139
103
|
|
140
|
-
/// @dev
|
141
|
-
///
|
142
|
-
function
|
143
|
-
|
144
|
-
address token,
|
104
|
+
/// @dev Approves the staking token handler.
|
105
|
+
/// Permissioned: only the staking component may call this function
|
106
|
+
function approveTokenHandler(
|
107
|
+
IERC20Metadata token,
|
145
108
|
Amount amount
|
146
|
-
)
|
147
|
-
|
109
|
+
) external;
|
110
|
+
|
111
|
+
//--- view functions --------------------------------------------------------------//
|
148
112
|
|
149
113
|
function getDipToken()
|
150
114
|
external
|
115
|
+
view
|
151
116
|
returns (IERC20Metadata dip);
|
152
117
|
|
153
118
|
function getTokenHandler()
|
154
119
|
external
|
120
|
+
view
|
155
121
|
returns (TokenHandler tokenHandler);
|
156
122
|
|
157
123
|
function getStaking()
|
158
124
|
external
|
125
|
+
view
|
159
126
|
returns (IStaking staking);
|
160
127
|
}
|