@etherisc/gif-next 0.0.2-804cdbf-724 → 0.0.2-8112a1f-745
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 +1086 -164
- 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/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1230 -415
- 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 +201 -104
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +175 -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 +999 -599
- 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 +309 -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 +163 -66
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/Staking.sol +478 -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 +698 -340
- 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 -48
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +12 -2
- 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/staking/StakeManagerLib.sol +0 -231
@@ -1,27 +1,33 @@
|
|
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
|
-
|
13
|
-
import {
|
9
|
+
import {IStakingService} from "./IStakingService.sol";
|
10
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
11
|
+
|
12
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
13
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
14
|
+
import {ChainId, ChainIdLib} from "../type/ChainId.sol";
|
15
|
+
import {Component} from "../shared/Component.sol";
|
16
|
+
import {IComponent} from "../shared/IComponent.sol";
|
17
|
+
import {NftId} from "../type/NftId.sol";
|
18
|
+
import {ObjectType, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
|
14
19
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
|
-
import {
|
20
|
+
import {Registerable} from "../shared/Registerable.sol";
|
21
|
+
import {StakingLib} from "./StakingLib.sol";
|
16
22
|
import {StakingReader} from "./StakingReader.sol";
|
17
23
|
import {StakingStore} from "./StakingStore.sol";
|
18
|
-
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
19
|
-
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
20
24
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
25
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
21
26
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
22
|
-
import {UFixed
|
23
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
24
|
-
import {Versionable} from "../
|
27
|
+
import {UFixed} from "../type/UFixed.sol";
|
28
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
29
|
+
import {Versionable} from "../upgradeability/Versionable.sol";
|
30
|
+
|
25
31
|
|
26
32
|
contract Staking is
|
27
33
|
Component,
|
@@ -29,98 +35,282 @@ contract Staking is
|
|
29
35
|
IStaking
|
30
36
|
{
|
31
37
|
string public constant CONTRACT_NAME = "Staking";
|
32
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
33
38
|
|
34
39
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
35
40
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
36
41
|
|
37
42
|
struct StakingStorage {
|
38
|
-
IRegistryService _registryService;
|
39
43
|
TokenRegistry _tokenRegistry;
|
44
|
+
TokenHandler _tokenHandler;
|
45
|
+
IStakingService _stakingService;
|
40
46
|
StakingStore _store;
|
41
47
|
StakingReader _reader;
|
42
48
|
NftId _protocolNftId;
|
43
49
|
}
|
44
50
|
|
45
51
|
|
46
|
-
modifier
|
47
|
-
|
48
|
-
revert ErrorStakingNotStake(stakeNftId);
|
49
|
-
}
|
52
|
+
modifier onlyStakeOwner(NftId stakeNftId) {
|
53
|
+
_checkTypeAndOwner(stakeNftId, STAKE(), true);
|
50
54
|
_;
|
51
55
|
}
|
52
56
|
|
53
57
|
|
54
58
|
modifier onlyTarget(NftId targetNftId) {
|
55
|
-
|
56
|
-
revert ErrorStakingNotTarget(targetNftId);
|
57
|
-
}
|
59
|
+
_checkTypeAndOwner(targetNftId, TARGET(), false);
|
58
60
|
_;
|
59
61
|
}
|
60
62
|
|
61
|
-
|
63
|
+
//--- contract intitialization -------------------------------------------
|
64
|
+
|
65
|
+
function initializeTokenHandler()
|
66
|
+
external
|
67
|
+
virtual
|
68
|
+
{
|
69
|
+
if (msg.sender != address(getRegistry())) {
|
70
|
+
revert ErrorStakingNotRegistry(msg.sender);
|
71
|
+
}
|
72
|
+
|
73
|
+
StakingStorage storage $ = _getStakingStorage();
|
74
|
+
address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
|
75
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
76
|
+
address(getRegistry()),
|
77
|
+
address(this),
|
78
|
+
dipToken,
|
79
|
+
getRegistry().getAuthority());
|
80
|
+
}
|
81
|
+
|
82
|
+
//--- staking owner functions -------------------------------------------//
|
83
|
+
|
84
|
+
|
85
|
+
/// @inheritdoc IStaking
|
86
|
+
function setProtocolLockingPeriod(Seconds newLockingPeriod)
|
87
|
+
external
|
88
|
+
virtual
|
89
|
+
restricted()
|
90
|
+
onlyOwner()
|
91
|
+
{
|
92
|
+
StakingStorage storage $ = _getStakingStorage();
|
93
|
+
(
|
94
|
+
Seconds oldLockingPeriod,
|
95
|
+
Blocknumber lastUpdatedIn
|
96
|
+
) = $._store.setLockingPeriod($._protocolNftId, newLockingPeriod);
|
97
|
+
|
98
|
+
emit LogStakingProtocolLockingPeriodSet($._protocolNftId, newLockingPeriod, oldLockingPeriod, lastUpdatedIn);
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
/// @inheritdoc IStaking
|
103
|
+
function setProtocolRewardRate(UFixed newRewardRate)
|
104
|
+
external
|
105
|
+
virtual
|
106
|
+
restricted()
|
107
|
+
onlyOwner()
|
108
|
+
{
|
109
|
+
StakingStorage storage $ = _getStakingStorage();
|
110
|
+
(
|
111
|
+
UFixed oldRewardRate,
|
112
|
+
Blocknumber lastUpdatedIn
|
113
|
+
) = $._store.setRewardRate($._protocolNftId, newRewardRate);
|
114
|
+
|
115
|
+
emit LogStakingProtocolRewardRateSet($._protocolNftId, newRewardRate, oldRewardRate, lastUpdatedIn);
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/// @inheritdoc IStaking
|
120
|
+
function setStakingRate(
|
121
|
+
ChainId chainId,
|
122
|
+
address token,
|
123
|
+
UFixed stakingRate
|
124
|
+
)
|
125
|
+
external
|
126
|
+
virtual
|
127
|
+
restricted()
|
128
|
+
onlyOwner()
|
129
|
+
{
|
130
|
+
(
|
131
|
+
UFixed oldStakingRate,
|
132
|
+
Blocknumber lastUpdateIn
|
133
|
+
) = _getStakingStorage()._store.setStakingRate(chainId, token, stakingRate);
|
134
|
+
|
135
|
+
emit LogStakingStakingRateSet(chainId, token, stakingRate, oldStakingRate, lastUpdateIn);
|
136
|
+
}
|
137
|
+
|
138
|
+
|
139
|
+
/// @inheritdoc IStaking
|
140
|
+
function setStakingService(VersionPart release)
|
141
|
+
external
|
142
|
+
virtual
|
143
|
+
restricted()
|
144
|
+
onlyOwner()
|
145
|
+
{
|
146
|
+
// effects
|
147
|
+
StakingStorage storage $ = _getStakingStorage();
|
148
|
+
address oldStakingService = address($._stakingService);
|
149
|
+
$._stakingService = StakingLib.checkAndGetStakingService(getRegistry(), release);
|
150
|
+
|
151
|
+
emit LogStakingStakingServiceSet(address($._stakingService), release, oldStakingService);
|
152
|
+
}
|
153
|
+
|
154
|
+
|
155
|
+
/// @inheritdoc IStaking
|
62
156
|
function setStakingReader(StakingReader stakingReader)
|
63
157
|
external
|
64
158
|
virtual
|
159
|
+
restricted()
|
65
160
|
onlyOwner()
|
66
161
|
{
|
67
162
|
if(stakingReader.getStaking() != IStaking(this)) {
|
68
163
|
revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
|
69
164
|
}
|
70
165
|
|
166
|
+
address oldReader = address(_getStakingStorage()._reader);
|
71
167
|
_getStakingStorage()._reader = stakingReader;
|
168
|
+
|
169
|
+
emit LogStakingStakingReaderSet(address(stakingReader), oldReader);
|
72
170
|
}
|
73
171
|
|
74
172
|
|
75
|
-
|
76
|
-
function
|
173
|
+
/// @inheritdoc IStaking
|
174
|
+
function addToken(
|
175
|
+
ChainId chainId,
|
176
|
+
address token
|
177
|
+
)
|
77
178
|
external
|
78
179
|
virtual
|
180
|
+
restricted()
|
181
|
+
onlyOwner()
|
182
|
+
{
|
183
|
+
_addToken(
|
184
|
+
_getStakingStorage(), chainId, token);
|
185
|
+
}
|
186
|
+
|
187
|
+
|
188
|
+
/// @inheritdoc IStaking
|
189
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
190
|
+
public
|
191
|
+
virtual
|
192
|
+
restricted()
|
79
193
|
onlyOwner()
|
80
194
|
{
|
81
195
|
StakingStorage storage $ = _getStakingStorage();
|
82
|
-
|
83
|
-
|
84
|
-
|
196
|
+
Amount oldAllowanceAmount = AmountLib.toAmount(
|
197
|
+
token.allowance(
|
198
|
+
address(this),
|
199
|
+
address($._tokenHandler)));
|
200
|
+
|
201
|
+
// staking token handler approval via its own implementation in staking service
|
202
|
+
$._stakingService.approveTokenHandler(
|
203
|
+
token,
|
204
|
+
amount);
|
205
|
+
|
206
|
+
emit LogStakingTokenHandlerApproved(address(token), amount, oldAllowanceAmount);
|
207
|
+
}
|
208
|
+
|
209
|
+
//--- target management -------------------------------------------------//
|
210
|
+
|
211
|
+
|
212
|
+
/// @inheritdoc IStaking
|
213
|
+
function refillRewardReserves(NftId targetNftId, Amount dipAmount)
|
214
|
+
external
|
215
|
+
virtual
|
216
|
+
restricted()
|
217
|
+
onlyTarget(targetNftId)
|
218
|
+
returns (Amount newBalance)
|
219
|
+
{
|
220
|
+
address transferFrom = msg.sender;
|
221
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
222
|
+
}
|
223
|
+
|
224
|
+
|
225
|
+
/// @inheritdoc IStaking
|
226
|
+
function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
|
227
|
+
external
|
228
|
+
virtual
|
229
|
+
restricted()
|
230
|
+
onlyTarget(targetNftId)
|
231
|
+
returns (Amount newBalance)
|
232
|
+
{
|
233
|
+
address transferTo;
|
234
|
+
|
235
|
+
// case 1: protocol target: staking owner is recipient
|
236
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
237
|
+
// verify that the caller is the staking owner
|
238
|
+
transferTo = getOwner();
|
239
|
+
if (msg.sender != transferTo) {
|
240
|
+
revert ErrorStakingNotStakingOwner();
|
241
|
+
}
|
242
|
+
|
243
|
+
// case 2: same chain target: target owner is recipient
|
244
|
+
} else if (ChainIdLib.isCurrentChain(targetNftId)) {
|
245
|
+
// verify that the caller is the target owner
|
246
|
+
transferTo = getRegistry().ownerOf(targetNftId);
|
247
|
+
if (msg.sender != transferTo) {
|
248
|
+
revert ErrorStakingNotNftOwner(targetNftId);
|
249
|
+
}
|
250
|
+
|
251
|
+
// case 3: cross-chain target: TODO decide how to handle and implement
|
252
|
+
} else {
|
253
|
+
revert("Cross-chain target not supported");
|
85
254
|
}
|
86
255
|
|
87
|
-
|
88
|
-
|
256
|
+
newBalance = _withdrawRewardReserves(targetNftId, dipAmount, transferTo);
|
257
|
+
}
|
258
|
+
|
89
259
|
|
90
|
-
|
260
|
+
/// @inheritdoc IStaking
|
261
|
+
function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom)
|
262
|
+
external
|
263
|
+
virtual
|
264
|
+
restricted()
|
265
|
+
onlyTarget(targetNftId)
|
266
|
+
returns (Amount newBalance)
|
267
|
+
{
|
268
|
+
_refillRewardReserves(targetNftId, dipAmount, transferFrom);
|
269
|
+
}
|
270
|
+
|
271
|
+
|
272
|
+
/// @inheritdoc IStaking
|
273
|
+
function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo)
|
274
|
+
external
|
275
|
+
virtual
|
276
|
+
restricted()
|
277
|
+
onlyTarget(targetNftId)
|
278
|
+
returns (Amount newBalance)
|
279
|
+
{
|
280
|
+
// check that service does not withdraw from protocol target
|
281
|
+
if (targetNftId == getRegistry().getProtocolNftId()) {
|
282
|
+
revert ErrorStakingTargetTypeNotSupported(targetNftId, PROTOCOL());
|
283
|
+
}
|
284
|
+
|
285
|
+
// default: on-chain target owner is recipient
|
286
|
+
address targetOwner = getRegistry().ownerOf(targetNftId);
|
287
|
+
return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
|
91
288
|
}
|
92
289
|
|
93
|
-
// target management
|
94
290
|
|
291
|
+
/// @inheritdoc IStaking
|
95
292
|
function registerTarget(
|
96
293
|
NftId targetNftId,
|
97
294
|
ObjectType expectedObjectType,
|
98
|
-
uint256 chainId,
|
99
295
|
Seconds initialLockingPeriod,
|
100
296
|
UFixed initialRewardRate
|
101
297
|
)
|
102
298
|
external
|
103
299
|
virtual
|
104
|
-
restricted()
|
300
|
+
restricted() // staking service
|
105
301
|
{
|
106
|
-
|
107
|
-
getRegistry(),
|
108
|
-
_getStakingStorage()._reader,
|
109
|
-
targetNftId,
|
110
|
-
expectedObjectType,
|
111
|
-
initialLockingPeriod,
|
112
|
-
initialRewardRate);
|
113
|
-
|
302
|
+
// checks done by staking store
|
114
303
|
_getStakingStorage()._store.createTarget(
|
115
304
|
targetNftId,
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
305
|
+
expectedObjectType,
|
306
|
+
initialLockingPeriod,
|
307
|
+
initialRewardRate);
|
308
|
+
|
309
|
+
emit LogStakingTargetCreated(targetNftId, expectedObjectType, initialLockingPeriod, initialRewardRate, AmountLib.max());
|
121
310
|
}
|
122
311
|
|
123
312
|
|
313
|
+
/// @inheritdoc IStaking
|
124
314
|
function setLockingPeriod(
|
125
315
|
NftId targetNftId,
|
126
316
|
Seconds lockingPeriod
|
@@ -130,66 +320,56 @@ contract Staking is
|
|
130
320
|
restricted()
|
131
321
|
onlyTarget(targetNftId)
|
132
322
|
{
|
133
|
-
(
|
134
|
-
Seconds oldLockingPeriod,
|
135
|
-
TargetInfo memory targetInfo
|
136
|
-
) = TargetManagerLib.updateLockingPeriod(
|
137
|
-
this,
|
138
|
-
targetNftId,
|
139
|
-
lockingPeriod);
|
140
|
-
|
141
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
323
|
+
(Seconds oldLockingPeriod, ) = _getStakingStorage()._store.setLockingPeriod(targetNftId, lockingPeriod);
|
142
324
|
|
143
|
-
emit
|
325
|
+
emit LogStakingTargetLockingPeriodSet(targetNftId, lockingPeriod, oldLockingPeriod);
|
144
326
|
}
|
145
327
|
|
146
|
-
// TODO add function to set protocol reward rate: onlyOwner
|
147
|
-
// get protocol nft id (from where)
|
148
328
|
|
329
|
+
/// @inheritdoc IStaking
|
149
330
|
function setRewardRate(NftId targetNftId, UFixed rewardRate)
|
150
331
|
external
|
151
332
|
virtual
|
152
333
|
restricted()
|
153
334
|
onlyTarget(targetNftId)
|
154
335
|
{
|
155
|
-
(
|
156
|
-
UFixed oldRewardRate,
|
157
|
-
TargetInfo memory targetInfo
|
158
|
-
) = TargetManagerLib.updateRewardRate(
|
159
|
-
this,
|
160
|
-
targetNftId,
|
161
|
-
rewardRate);
|
162
|
-
|
163
|
-
_getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
|
336
|
+
(UFixed oldRewardRate,) = _getStakingStorage()._store.setRewardRate(targetNftId, rewardRate);
|
164
337
|
|
165
|
-
emit
|
338
|
+
emit LogStakingTargetRewardRateSet(targetNftId, rewardRate, oldRewardRate);
|
166
339
|
}
|
167
340
|
|
168
341
|
|
169
|
-
|
342
|
+
/// @inheritdoc IStaking
|
343
|
+
function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
|
170
344
|
external
|
171
345
|
virtual
|
172
346
|
restricted()
|
173
|
-
|
347
|
+
onlyTarget(targetNftId)
|
174
348
|
{
|
175
|
-
|
176
|
-
|
177
|
-
|
349
|
+
_getStakingStorage()._store.setMaxStakedAmount(targetNftId, maxStakedAmount);
|
350
|
+
|
351
|
+
emit LogStakingTargetMaxStakedAmountSet(targetNftId, maxStakedAmount);
|
178
352
|
}
|
179
353
|
|
180
354
|
|
181
|
-
|
355
|
+
/// @inheritdoc IStaking
|
356
|
+
function addTargetToken(NftId targetNftId, address token)
|
182
357
|
external
|
183
358
|
virtual
|
184
359
|
restricted()
|
185
|
-
|
360
|
+
onlyTarget(targetNftId)
|
186
361
|
{
|
187
|
-
// update book keeping of reward reserves
|
188
362
|
StakingStorage storage $ = _getStakingStorage();
|
189
|
-
|
363
|
+
ChainId chainId = ChainIdLib.fromNftId(targetNftId);
|
364
|
+
_addToken($, chainId, token);
|
365
|
+
|
366
|
+
$._store.addTargetToken(targetNftId, token);
|
367
|
+
|
368
|
+
emit LogStakingTargetTokenAdded(targetNftId, chainId, token);
|
190
369
|
}
|
191
370
|
|
192
371
|
|
372
|
+
/// @inheritdoc IStaking
|
193
373
|
function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
194
374
|
external
|
195
375
|
virtual
|
@@ -197,12 +377,13 @@ contract Staking is
|
|
197
377
|
returns (Amount newBalance)
|
198
378
|
{
|
199
379
|
StakingStorage storage $ = _getStakingStorage();
|
200
|
-
|
201
|
-
|
202
|
-
|
380
|
+
newBalance = $._store.increaseTotalValueLocked(targetNftId, token, amount);
|
381
|
+
|
382
|
+
emit LogStakingTotalValueLockedIncreased(targetNftId, token, amount, newBalance);
|
203
383
|
}
|
204
384
|
|
205
385
|
|
386
|
+
/// @inheritdoc IStaking
|
206
387
|
function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
|
207
388
|
external
|
208
389
|
virtual
|
@@ -210,12 +391,14 @@ contract Staking is
|
|
210
391
|
returns (Amount newBalance)
|
211
392
|
{
|
212
393
|
StakingStorage storage $ = _getStakingStorage();
|
213
|
-
|
214
|
-
|
215
|
-
|
394
|
+
newBalance = $._store.decreaseTotalValueLocked(targetNftId, token, amount);
|
395
|
+
|
396
|
+
emit LogStakingTotalValueLockedDecreased(targetNftId, token, amount, newBalance);
|
216
397
|
}
|
217
398
|
|
218
399
|
|
400
|
+
// TODO add to interface and implement
|
401
|
+
/// inheritdoc IStaking
|
219
402
|
function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
|
220
403
|
external
|
221
404
|
virtual
|
@@ -225,6 +408,8 @@ contract Staking is
|
|
225
408
|
|
226
409
|
}
|
227
410
|
|
411
|
+
// TODO add to interface and implement
|
412
|
+
/// @inheritdoc IStaking
|
228
413
|
function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
|
229
414
|
external
|
230
415
|
virtual
|
@@ -236,270 +421,320 @@ contract Staking is
|
|
236
421
|
|
237
422
|
//--- staking functions -------------------------------------------------//
|
238
423
|
|
424
|
+
/// @inheritdoc IStaking
|
239
425
|
function createStake(
|
240
|
-
NftId stakeNftId,
|
241
426
|
NftId targetNftId,
|
242
|
-
Amount stakeAmount
|
427
|
+
Amount stakeAmount,
|
428
|
+
address stakeOwner
|
243
429
|
)
|
244
430
|
external
|
245
431
|
virtual
|
246
|
-
restricted()
|
432
|
+
restricted()
|
433
|
+
onlyTarget(targetNftId)
|
434
|
+
returns (NftId stakeNftId)
|
247
435
|
{
|
436
|
+
// effects (includes further checks in service)
|
248
437
|
StakingStorage storage $ = _getStakingStorage();
|
249
|
-
|
250
|
-
|
251
|
-
targetNftId,
|
252
|
-
stakeAmount);
|
438
|
+
stakeNftId = $._stakingService.createStakeObject(targetNftId, stakeOwner);
|
439
|
+
$._store.createStake(stakeNftId, targetNftId, stakeOwner, stakeAmount);
|
253
440
|
|
254
|
-
//
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
lockedUntil: lockedUntil}));
|
259
|
-
|
260
|
-
// update target stake balance
|
261
|
-
$._store.increaseStake(
|
262
|
-
stakeNftId,
|
263
|
-
targetNftId,
|
264
|
-
stakeAmount);
|
441
|
+
// interactions
|
442
|
+
if (stakeAmount.gtz()) {
|
443
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
444
|
+
}
|
265
445
|
}
|
266
446
|
|
267
447
|
|
448
|
+
/// @inheritdoc IStaking
|
268
449
|
function stake(
|
269
450
|
NftId stakeNftId,
|
270
451
|
Amount stakeAmount
|
271
452
|
)
|
272
453
|
external
|
273
454
|
virtual
|
274
|
-
restricted()
|
275
|
-
|
276
|
-
returns (Amount
|
455
|
+
restricted()
|
456
|
+
onlyStakeOwner(stakeNftId)
|
457
|
+
returns (Amount newStakeBalance)
|
277
458
|
{
|
278
459
|
StakingStorage storage $ = _getStakingStorage();
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
460
|
+
$._store.stake(
|
461
|
+
stakeNftId,
|
462
|
+
true, // update rewards
|
463
|
+
true, // restake rewards
|
464
|
+
SecondsLib.max(), // max additional locking duration
|
284
465
|
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
466
|
|
301
|
-
//
|
302
|
-
|
467
|
+
// collect staked DIP token via staking service
|
468
|
+
if (stakeAmount.gtz()) {
|
469
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
470
|
+
$._stakingService.pullDipToken(stakeAmount, stakeOwner);
|
471
|
+
}
|
472
|
+
}
|
303
473
|
|
304
474
|
|
305
|
-
|
475
|
+
/// @inheritdoc IStaking
|
476
|
+
function unstake(NftId stakeNftId)
|
306
477
|
external
|
307
478
|
virtual
|
308
|
-
restricted()
|
309
|
-
|
479
|
+
restricted()
|
480
|
+
onlyStakeOwner(stakeNftId)
|
481
|
+
returns (Amount unstakedAmount)
|
310
482
|
{
|
311
483
|
StakingStorage storage $ = _getStakingStorage();
|
312
|
-
|
484
|
+
unstakedAmount = $._store.unstake(
|
485
|
+
stakeNftId,
|
486
|
+
true, // update rewards
|
487
|
+
true, // restake rewards
|
488
|
+
AmountLib.max()); // unstake up to this amount
|
489
|
+
|
490
|
+
// transfer unstaked DIP token via staking service
|
491
|
+
if (unstakedAmount.gtz()) {
|
492
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
493
|
+
$._stakingService.pushDipToken(unstakedAmount, stakeOwner);
|
494
|
+
}
|
313
495
|
}
|
314
496
|
|
315
497
|
|
316
|
-
|
498
|
+
/// @inheritdoc IStaking
|
499
|
+
function restake(
|
500
|
+
NftId stakeNftId,
|
501
|
+
NftId newTargetNftId
|
502
|
+
)
|
317
503
|
external
|
318
504
|
virtual
|
319
505
|
restricted() // only staking service
|
320
|
-
|
506
|
+
onlyStakeOwner(stakeNftId)
|
507
|
+
onlyTarget(newTargetNftId)
|
321
508
|
returns (
|
322
|
-
|
509
|
+
NftId newStakeNftId,
|
510
|
+
Amount newStakedAmount
|
323
511
|
)
|
324
512
|
{
|
325
513
|
StakingStorage storage $ = _getStakingStorage();
|
326
514
|
|
327
|
-
//
|
328
|
-
|
515
|
+
// step 1: unstake as much as possible
|
516
|
+
newStakedAmount = $._store.unstake(
|
517
|
+
stakeNftId,
|
518
|
+
true, // update rewards
|
519
|
+
true, // restake rewards
|
520
|
+
AmountLib.max()); // unstake up to this amount
|
329
521
|
|
330
|
-
//
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
AmountLib.max());
|
522
|
+
// step 2: create new stake with full unstaked amount
|
523
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
524
|
+
newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
|
525
|
+
$._store.createStake(newStakeNftId, newTargetNftId, stakeOwner, newStakedAmount);
|
335
526
|
|
336
|
-
//
|
337
|
-
|
527
|
+
// logging
|
528
|
+
emit LogStakingStakeRestaked(newStakeNftId, newTargetNftId, newStakedAmount, stakeOwner, stakeNftId);
|
338
529
|
}
|
339
530
|
|
340
531
|
|
341
|
-
function
|
532
|
+
function updateRewards(NftId stakeNftId)
|
342
533
|
external
|
343
534
|
virtual
|
344
|
-
restricted()
|
345
|
-
|
346
|
-
returns (
|
347
|
-
Amount unstakedAmount,
|
348
|
-
Amount rewardsClaimedAmount
|
349
|
-
)
|
535
|
+
restricted()
|
536
|
+
onlyStakeOwner(stakeNftId)
|
537
|
+
returns (Amount newRewardAmount)
|
350
538
|
{
|
351
|
-
// TODO add check that stake locking is in the past
|
352
539
|
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);
|
369
|
-
}
|
370
|
-
|
371
|
-
|
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);
|
540
|
+
$._store.updateRewards(stakeNftId);
|
389
541
|
}
|
390
542
|
|
391
543
|
|
392
|
-
function
|
544
|
+
function claimRewards(NftId stakeNftId)
|
393
545
|
external
|
394
|
-
|
546
|
+
virtual
|
547
|
+
restricted()
|
548
|
+
onlyStakeOwner(stakeNftId)
|
549
|
+
returns (
|
550
|
+
Amount claimedAmount
|
551
|
+
)
|
395
552
|
{
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
stakingWallet,
|
402
|
-
address(tokenHandler),
|
403
|
-
dipAmount);
|
553
|
+
StakingStorage storage $ = _getStakingStorage();
|
554
|
+
claimedAmount = $._store.claimRewards(
|
555
|
+
stakeNftId,
|
556
|
+
true,
|
557
|
+
AmountLib.max());
|
404
558
|
|
405
|
-
|
559
|
+
// collect staked DIP token by staking service
|
560
|
+
if (claimedAmount.gtz()) {
|
561
|
+
// interactions
|
562
|
+
address stakeOwner = getRegistry().ownerOf(stakeNftId);
|
563
|
+
$._stakingService.pushDipToken(claimedAmount, stakeOwner);
|
564
|
+
}
|
406
565
|
}
|
407
566
|
|
408
567
|
|
409
568
|
//--- view functions ----------------------------------------------------//
|
410
569
|
|
411
|
-
function getStakingReader() public view returns (StakingReader reader) {
|
570
|
+
function getStakingReader() public virtual view returns (StakingReader reader) {
|
412
571
|
return _getStakingStorage()._reader;
|
413
572
|
}
|
414
573
|
|
415
|
-
function getStakingStore() external view returns (StakingStore stakingStore) {
|
574
|
+
function getStakingStore() external virtual view returns (StakingStore stakingStore) {
|
416
575
|
return _getStakingStorage()._store;
|
417
576
|
}
|
418
577
|
|
419
|
-
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
578
|
+
function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
|
420
579
|
return address(_getStakingStorage()._tokenRegistry);
|
421
580
|
}
|
422
581
|
|
582
|
+
function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
|
583
|
+
return _getStakingStorage()._tokenHandler;
|
584
|
+
}
|
585
|
+
|
586
|
+
// from IRegisterable
|
587
|
+
function getRelease()
|
588
|
+
public
|
589
|
+
pure
|
590
|
+
virtual override (IRelease, Registerable)
|
591
|
+
returns(VersionPart)
|
592
|
+
{
|
593
|
+
return VersionPartLib.toVersionPart(3);
|
594
|
+
}
|
423
595
|
|
424
|
-
// from
|
596
|
+
// from IVersionable
|
425
597
|
function getVersion()
|
426
598
|
public
|
427
599
|
pure
|
428
|
-
virtual override (IVersionable, Versionable)
|
600
|
+
virtual override (Component, IVersionable, Versionable)
|
429
601
|
returns(Version)
|
430
602
|
{
|
431
|
-
return VersionLib.toVersion(
|
603
|
+
return VersionLib.toVersion(3,0,0);
|
432
604
|
}
|
433
605
|
|
434
606
|
//--- internal functions ------------------------------------------------//
|
435
607
|
|
436
|
-
|
437
|
-
|
438
|
-
StakingStore store,
|
439
|
-
NftId stakeNftId
|
440
|
-
)
|
608
|
+
|
609
|
+
function _refillRewardReserves(NftId targetNftId, Amount dipAmount, address transferFrom)
|
441
610
|
internal
|
442
611
|
virtual
|
443
|
-
returns (
|
612
|
+
returns (Amount newBalance)
|
444
613
|
{
|
445
|
-
|
614
|
+
// checks + effects
|
615
|
+
StakingStorage storage $ = _getStakingStorage();
|
616
|
+
newBalance = $._store.refillRewardReserves(targetNftId, dipAmount);
|
446
617
|
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
618
|
+
// interactions
|
619
|
+
// collect DIP token from target owner
|
620
|
+
if (dipAmount.gtz()) {
|
621
|
+
$._stakingService.pullDipToken(dipAmount, transferFrom);
|
622
|
+
}
|
623
|
+
}
|
452
624
|
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
625
|
+
|
626
|
+
function _withdrawRewardReserves(NftId targetNftId, Amount dipAmount, address transferTo)
|
627
|
+
internal
|
628
|
+
virtual
|
629
|
+
returns (Amount newBalance)
|
630
|
+
{
|
631
|
+
// checks + effects
|
632
|
+
StakingStorage storage $ = _getStakingStorage();
|
633
|
+
newBalance = $._store.withdrawRewardReserves(targetNftId, dipAmount);
|
634
|
+
|
635
|
+
// interactions
|
636
|
+
// transfer DIP token to designated address
|
637
|
+
if (dipAmount.gtz()) {
|
638
|
+
$._stakingService.pushDipToken(dipAmount, transferTo);
|
639
|
+
}
|
640
|
+
}
|
641
|
+
|
642
|
+
|
643
|
+
function _addToken(
|
644
|
+
StakingStorage storage $,
|
645
|
+
ChainId chainId,
|
646
|
+
address token
|
647
|
+
)
|
648
|
+
internal
|
649
|
+
virtual
|
650
|
+
{
|
651
|
+
if ($._store.getTokenInfo(chainId, token).lastUpdateIn.eqz()) {
|
652
|
+
$._store.addToken(chainId, token);
|
653
|
+
}
|
457
654
|
}
|
458
655
|
|
459
656
|
|
657
|
+
/// @dev top level initializer (upgradable contract)
|
460
658
|
function _initialize(
|
461
659
|
address owner,
|
462
660
|
bytes memory data
|
463
661
|
)
|
464
662
|
internal
|
465
663
|
virtual override
|
466
|
-
|
664
|
+
onlyInitializing()
|
467
665
|
{
|
468
666
|
(
|
469
667
|
address registryAddress,
|
470
668
|
address tokenRegistryAddress,
|
471
|
-
address stakingStoreAddress
|
472
|
-
|
473
|
-
) = abi.decode(data, (address, address, address, address));
|
669
|
+
address stakingStoreAddress
|
670
|
+
) = abi.decode(data, (address, address, address));
|
474
671
|
|
475
|
-
//
|
672
|
+
// wiring to external contracts
|
476
673
|
IRegistry registry = IRegistry(registryAddress);
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
674
|
+
StakingStorage storage $ = _getStakingStorage();
|
675
|
+
$._protocolNftId = registry.getProtocolNftId();
|
676
|
+
$._store = StakingStore(stakingStoreAddress);
|
677
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
678
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
679
|
+
// staking service has to be set via setStakingService after deploying the first GIF release
|
680
|
+
|
681
|
+
__Component_init(
|
682
|
+
registry.getAuthority(),
|
683
|
+
address(registry),
|
684
|
+
registry.getNftId(), // parent nft id
|
485
685
|
CONTRACT_NAME,
|
486
|
-
dipTokenAddress,
|
487
686
|
STAKING(),
|
488
687
|
false, // is interceptor
|
489
|
-
|
688
|
+
owner,
|
490
689
|
"", // registry data
|
491
690
|
""); // component data
|
492
691
|
|
493
|
-
|
692
|
+
// Protocol target is created in the StakingStore constructor.
|
693
|
+
// This allows setting up the protocol target before the full
|
694
|
+
// staking authorization setup is in place.
|
695
|
+
_checkAndLogProtocolTargetCreation($);
|
494
696
|
|
495
|
-
|
697
|
+
_registerInterface(type(IStaking).interfaceId);
|
698
|
+
}
|
699
|
+
|
700
|
+
|
701
|
+
function _checkAndLogProtocolTargetCreation(StakingStorage storage $)
|
702
|
+
internal
|
703
|
+
virtual
|
704
|
+
{
|
705
|
+
TargetInfo memory protocolInfo = $._store.getTargetInfo($._protocolNftId);
|
706
|
+
|
707
|
+
if (protocolInfo.lastUpdateIn.eqz()) {
|
708
|
+
revert ErrorStakingTargetNotFound($._protocolNftId);
|
709
|
+
}
|
710
|
+
|
711
|
+
emit LogStakingTargetCreated($._protocolNftId, protocolInfo.objectType, protocolInfo.lockingPeriod, protocolInfo.rewardRate, protocolInfo.maxStakedAmount);
|
712
|
+
}
|
713
|
+
|
714
|
+
|
715
|
+
function _checkTypeAndOwner(NftId nftId, ObjectType expectedObjectType, bool checkOwner)
|
716
|
+
internal
|
717
|
+
view
|
718
|
+
{
|
496
719
|
StakingStorage storage $ = _getStakingStorage();
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
720
|
+
if (expectedObjectType == STAKE()) {
|
721
|
+
if (!$._store.exists(nftId)) {
|
722
|
+
revert ErrorStakingNotStake(nftId);
|
723
|
+
}
|
724
|
+
} else {
|
725
|
+
if (expectedObjectType == TARGET()) {
|
726
|
+
if (!$._store.getTargetSet().exists(nftId)) {
|
727
|
+
revert ErrorStakingNotTarget(nftId);
|
728
|
+
}
|
729
|
+
}
|
730
|
+
}
|
501
731
|
|
502
|
-
|
732
|
+
if (checkOwner) {
|
733
|
+
address nftOwner = getRegistry().ownerOf(nftId);
|
734
|
+
if (msg.sender != nftOwner) {
|
735
|
+
revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
|
736
|
+
}
|
737
|
+
}
|
503
738
|
}
|
504
739
|
|
505
740
|
|