@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9e03baf-990
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 +75 -9
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +219 -596
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +340 -444
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +144 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +226 -309
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- 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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +112 -91
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +170 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +127 -238
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1183 -276
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +874 -395
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +255 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1210 -389
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +21 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +507 -345
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -111
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +275 -46
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -400
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +490 -282
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +224 -621
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +634 -640
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -117
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +132 -282
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +333 -299
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -81
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +365 -221
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +422 -406
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -137
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +248 -348
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +143 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +364 -475
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +400 -50
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -64
- 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 +840 -107
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1743 -149
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +180 -200
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -86
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -136
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +120 -317
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1406 -213
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +114 -130
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +49 -1
- 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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +799 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +48 -70
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +67 -103
- 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 +54 -119
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +735 -27
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -182
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +125 -90
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +156 -156
- package/contracts/distribution/DistributionService.sol +177 -173
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +28 -39
- package/contracts/instance/IInstanceService.sol +30 -32
- package/contracts/instance/Instance.sol +124 -122
- package/contracts/instance/InstanceAdmin.sol +208 -285
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +246 -130
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +142 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -0
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +22 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +33 -26
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +292 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +314 -213
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +46 -24
- package/contracts/pool/IPoolComponent.sol +23 -75
- package/contracts/pool/IPoolService.sol +105 -47
- package/contracts/pool/Pool.sol +211 -168
- package/contracts/pool/PoolService.sol +448 -232
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +156 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -162
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +41 -39
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +521 -204
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +107 -83
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +199 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +75 -38
- package/contracts/registry/IRegistry.sol +85 -24
- package/contracts/registry/IRegistryService.sol +9 -6
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -179
- package/contracts/registry/RegistryAdmin.sol +396 -77
- package/contracts/registry/RegistryService.sol +73 -64
- package/contracts/registry/RegistryServiceManager.sol +6 -13
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
- package/contracts/registry/TokenRegistry.sol +261 -64
- package/contracts/shared/Component.sol +128 -170
- package/contracts/shared/ComponentService.sol +732 -94
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +128 -0
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +24 -47
- package/contracts/shared/IComponentService.sol +130 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +205 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +32 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -13
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +375 -13
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +173 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +505 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +331 -47
- package/contracts/staking/StakingServiceManager.sol +11 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +17 -3
- package/contracts/type/RoleId.sol +98 -75
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +73 -41
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -188
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -883
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -711
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1594
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -630
- 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/contracts/instance/InstanceAuthorizationsLib.sol +0 -320
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -212
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -465
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -469
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -125
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,190 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
|
+
|
6
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
8
|
+
import {IStaking} from "../staking/IStaking.sol";
|
9
|
+
|
10
|
+
import {Amount} from "../type/Amount.sol";
|
11
|
+
import {Blocknumber} from "../type/Blocknumber.sol";
|
12
|
+
import {NftId} from "../type/NftId.sol";
|
13
|
+
import {STAKE, TARGET} from "../type/ObjectType.sol";
|
14
|
+
import {StakingStore} from "./StakingStore.sol";
|
15
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
16
|
+
import {UFixed} from "../type/UFixed.sol";
|
17
|
+
|
18
|
+
contract StakingReader is
|
19
|
+
IRegistryLinked,
|
20
|
+
Initializable
|
21
|
+
{
|
22
|
+
|
23
|
+
error ErrorStakingReaderUnauthorizedCaler();
|
24
|
+
|
25
|
+
address private _initializeOwner;
|
26
|
+
IRegistry private _registry;
|
27
|
+
IStaking private _staking;
|
28
|
+
StakingStore private _store;
|
29
|
+
|
30
|
+
constructor(IRegistry registry) {
|
31
|
+
_initializeOwner = msg.sender;
|
32
|
+
_registry = registry;
|
33
|
+
}
|
34
|
+
|
35
|
+
function initialize(
|
36
|
+
address stakingAddress,
|
37
|
+
address stakingStoreAddress
|
38
|
+
)
|
39
|
+
external
|
40
|
+
initializer()
|
41
|
+
{
|
42
|
+
if (msg.sender != _initializeOwner) {
|
43
|
+
revert ErrorStakingReaderUnauthorizedCaler();
|
44
|
+
}
|
45
|
+
|
46
|
+
_staking = IStaking(stakingAddress);
|
47
|
+
_store = StakingStore(stakingStoreAddress);
|
48
|
+
}
|
49
|
+
|
50
|
+
// view and pure functions
|
51
|
+
|
52
|
+
function getRegistry() external view returns (IRegistry registry) {
|
53
|
+
return _registry;
|
54
|
+
}
|
55
|
+
|
56
|
+
function getStaking() external view returns (IStaking staking) {
|
57
|
+
return _staking;
|
58
|
+
}
|
59
|
+
|
60
|
+
function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
|
61
|
+
return _store.getStakingRate(chainId, token);
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
function isTarget(NftId targetNftId) external view returns (bool) {
|
66
|
+
return _store.getTargetNftIdSet().exists(targetNftId);
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
function targets() external view returns (uint256) {
|
71
|
+
return _store.getTargetNftIdSet().nftIds();
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
function getTargetNftId(uint256 idx) external view returns (NftId) {
|
76
|
+
return _store.getTargetNftIdSet().getNftId(idx);
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
function isActive(NftId targetNftId) external view returns (bool) {
|
81
|
+
return _store.getTargetNftIdSet().isActive(targetNftId);
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
function activeTargets() external view returns (uint256) {
|
86
|
+
return _store.getTargetNftIdSet().activeNftIds();
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
|
91
|
+
return _store.getTargetNftIdSet().getActiveNftId(idx);
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
|
96
|
+
return _registry.getObjectInfo(stakeNftId).parentNftId;
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
|
101
|
+
bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
|
102
|
+
if (data.length > 0) {
|
103
|
+
return abi.decode(data, (IStaking.TargetInfo));
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
|
109
|
+
bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
|
110
|
+
if (data.length > 0) {
|
111
|
+
return abi.decode(data, (IStaking.StakeInfo));
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
/// @dev get the reward rate that applies to the specified stake nft id.
|
117
|
+
function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
|
118
|
+
targetNftId = getTargetNftId(stakeNftId);
|
119
|
+
rewardRate = getTargetInfo(targetNftId).rewardRate;
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
/// @dev get the reward rate for the specified target nft id.
|
124
|
+
function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
|
125
|
+
return getTargetInfo(targetNftId).rewardRate;
|
126
|
+
}
|
127
|
+
|
128
|
+
/// @dev returns the current reward reserve balance for the specified target.
|
129
|
+
function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
|
130
|
+
return _store.getReserveBalance(targetNftId);
|
131
|
+
}
|
132
|
+
|
133
|
+
function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
|
134
|
+
return _store.getStakeBalance(nftId);
|
135
|
+
}
|
136
|
+
|
137
|
+
function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
|
138
|
+
return _store.getRewardBalance(nftId);
|
139
|
+
}
|
140
|
+
|
141
|
+
function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
|
142
|
+
return _store.getBalanceUpdatedAt(nftId);
|
143
|
+
}
|
144
|
+
|
145
|
+
function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
|
146
|
+
return _store.getBalanceUpdatedIn(nftId);
|
147
|
+
}
|
148
|
+
|
149
|
+
function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
|
150
|
+
return _store.getTotalValueLocked(nftId, token);
|
151
|
+
}
|
152
|
+
|
153
|
+
function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
|
154
|
+
return _store.getRequiredStakeBalance(nftId);
|
155
|
+
}
|
156
|
+
|
157
|
+
function getTargetBalances(NftId stakeNftId)
|
158
|
+
public
|
159
|
+
view
|
160
|
+
returns (
|
161
|
+
Amount balanceAmount,
|
162
|
+
Amount stakeAmount,
|
163
|
+
Amount rewardAmount,
|
164
|
+
Blocknumber lastUpdatedIn
|
165
|
+
)
|
166
|
+
{
|
167
|
+
(
|
168
|
+
balanceAmount,
|
169
|
+
stakeAmount,
|
170
|
+
rewardAmount,
|
171
|
+
lastUpdatedIn
|
172
|
+
) = _store.getTargetBalances(stakeNftId);
|
173
|
+
}
|
174
|
+
|
175
|
+
function getStakeBalances(NftId stakeNftId)
|
176
|
+
external
|
177
|
+
view
|
178
|
+
returns (
|
179
|
+
Amount stakeAmount,
|
180
|
+
Amount rewardAmount,
|
181
|
+
Timestamp lastUpdatedAt
|
182
|
+
)
|
183
|
+
{
|
184
|
+
(
|
185
|
+
stakeAmount,
|
186
|
+
rewardAmount,
|
187
|
+
lastUpdatedAt
|
188
|
+
) = _store.getStakeBalances(stakeNftId);
|
189
|
+
}
|
190
|
+
}
|
@@ -1,14 +1,20 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
3
5
|
|
4
6
|
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {
|
7
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
6
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
10
|
+
import {IStaking} from "./IStaking.sol";
|
7
11
|
import {IStakingService} from "./IStakingService.sol";
|
8
|
-
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {ObjectType,
|
12
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
13
|
+
import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Seconds} from "../type/Seconds.sol";
|
10
15
|
import {Service} from "../shared/Service.sol";
|
11
|
-
import {
|
16
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
|
+
import {UFixed} from "../type/UFixed.sol";
|
12
18
|
|
13
19
|
|
14
20
|
contract StakingService is
|
@@ -20,120 +26,341 @@ contract StakingService is
|
|
20
26
|
bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
|
21
27
|
|
22
28
|
struct StakingServiceStorage {
|
23
|
-
|
29
|
+
RegistryService _registryService;
|
30
|
+
IStaking _staking;
|
31
|
+
IERC20Metadata _dip;
|
32
|
+
TokenHandler _tokenHandler;
|
33
|
+
}
|
34
|
+
|
35
|
+
function createInstanceTarget(
|
36
|
+
NftId targetNftId,
|
37
|
+
Seconds initialLockingPeriod,
|
38
|
+
UFixed initialRewardRate
|
39
|
+
)
|
40
|
+
external
|
41
|
+
virtual
|
42
|
+
restricted()
|
43
|
+
{
|
44
|
+
uint256 chainId = block.chainid;
|
45
|
+
_getStakingServiceStorage()._staking.registerTarget(
|
46
|
+
targetNftId,
|
47
|
+
INSTANCE(),
|
48
|
+
chainId,
|
49
|
+
initialLockingPeriod,
|
50
|
+
initialRewardRate);
|
51
|
+
|
52
|
+
emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod)
|
57
|
+
external
|
58
|
+
virtual
|
59
|
+
restricted()
|
60
|
+
{
|
61
|
+
_checkNftType(instanceNftId, INSTANCE());
|
62
|
+
_getStakingServiceStorage()._staking.setLockingPeriod(
|
63
|
+
instanceNftId,
|
64
|
+
lockingPeriod);
|
24
65
|
}
|
25
66
|
|
26
|
-
|
27
|
-
|
67
|
+
|
68
|
+
function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate)
|
69
|
+
external
|
70
|
+
virtual
|
71
|
+
restricted()
|
72
|
+
{
|
73
|
+
_checkNftType(instanceNftId, INSTANCE());
|
74
|
+
_getStakingServiceStorage()._staking.setRewardRate(
|
75
|
+
instanceNftId,
|
76
|
+
rewardRate);
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
|
81
|
+
external
|
82
|
+
virtual
|
83
|
+
restricted()
|
84
|
+
returns (Amount newBalance)
|
85
|
+
{
|
86
|
+
_checkNftType(instanceNftId, INSTANCE());
|
87
|
+
return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
|
28
88
|
}
|
29
89
|
|
30
90
|
|
91
|
+
function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount)
|
92
|
+
external
|
93
|
+
virtual
|
94
|
+
restricted()
|
95
|
+
returns (Amount newBalance)
|
96
|
+
{
|
97
|
+
address rewardProvider = msg.sender;
|
98
|
+
return _refillRewardReserves(targetNftId, rewardProvider, dipAmount);
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount)
|
103
|
+
external
|
104
|
+
virtual
|
105
|
+
restricted()
|
106
|
+
returns (Amount newBalance)
|
107
|
+
{
|
108
|
+
_checkNftType(instanceNftId, INSTANCE());
|
109
|
+
// update reward reserve book keeping
|
110
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
111
|
+
newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
|
112
|
+
|
113
|
+
// transfer withdrawal amount to target owner
|
114
|
+
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
115
|
+
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
116
|
+
_distributeToken(
|
117
|
+
$._staking.getTokenHandler(),
|
118
|
+
instanceOwner,
|
119
|
+
dipAmount);
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
/// @dev creates a new stake to the specified target nft id with the provided dip amount
|
124
|
+
/// the target nft id must have been registered as an active staking target prior to this call
|
125
|
+
/// the sender of this transaction becomes the stake owner via the minted nft.
|
126
|
+
/// to create the new stake balance and allowance of the staker need to cover the dip amount
|
127
|
+
/// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
|
128
|
+
/// this is a permissionless function.
|
31
129
|
function create(
|
32
130
|
NftId targetNftId,
|
33
|
-
Amount
|
131
|
+
Amount dipAmount
|
34
132
|
)
|
35
133
|
external
|
36
134
|
virtual
|
135
|
+
restricted()
|
37
136
|
returns (
|
38
137
|
NftId stakeNftId
|
39
138
|
)
|
40
139
|
{
|
140
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
141
|
+
address stakeOwner = msg.sender;
|
142
|
+
|
143
|
+
// target nft id checks are performed in $._staking.createStake() below
|
144
|
+
// register new stake object with registry
|
145
|
+
stakeNftId = $._registryService.registerStake(
|
146
|
+
IRegistry.ObjectInfo({
|
147
|
+
nftId: NftIdLib.zero(),
|
148
|
+
parentNftId: targetNftId,
|
149
|
+
objectType: STAKE(),
|
150
|
+
isInterceptor: false,
|
151
|
+
objectAddress: address(0),
|
152
|
+
initialOwner: stakeOwner,
|
153
|
+
data: ""
|
154
|
+
}));
|
155
|
+
|
156
|
+
// create stake info with staking
|
157
|
+
$._staking.createStake(
|
158
|
+
stakeNftId,
|
159
|
+
targetNftId,
|
160
|
+
dipAmount);
|
161
|
+
|
162
|
+
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
163
|
+
|
164
|
+
// collect staked dip by staking
|
165
|
+
_collectToken(
|
166
|
+
$._staking.getTokenHandler(),
|
167
|
+
stakeOwner,
|
168
|
+
dipAmount);
|
169
|
+
|
170
|
+
// TODO cleanup
|
171
|
+
// TokenHandler tokenHandler = $._staking.getTokenHandler();
|
172
|
+
// tokenHandler.collectTokens(
|
173
|
+
// stakeOwner,
|
174
|
+
// tokenHandler.getWallet(),
|
175
|
+
// dipAmount);
|
176
|
+
}
|
41
177
|
|
178
|
+
function _collectToken(
|
179
|
+
TokenHandler tokenHandler,
|
180
|
+
address from,
|
181
|
+
Amount amount
|
182
|
+
)
|
183
|
+
internal
|
184
|
+
virtual
|
185
|
+
{
|
186
|
+
tokenHandler.collectTokens(
|
187
|
+
from,
|
188
|
+
amount);
|
189
|
+
}
|
190
|
+
|
191
|
+
function _distributeToken(
|
192
|
+
TokenHandler tokenHandler,
|
193
|
+
address to,
|
194
|
+
Amount amount
|
195
|
+
)
|
196
|
+
internal
|
197
|
+
virtual
|
198
|
+
{
|
199
|
+
tokenHandler.distributeTokens(
|
200
|
+
tokenHandler.getWallet(),
|
201
|
+
to,
|
202
|
+
amount);
|
42
203
|
}
|
43
204
|
|
44
205
|
|
45
206
|
function stake(
|
46
207
|
NftId stakeNftId,
|
47
|
-
Amount
|
208
|
+
Amount dipAmount
|
48
209
|
)
|
49
210
|
external
|
50
211
|
virtual
|
212
|
+
restricted()
|
213
|
+
onlyNftOwner(stakeNftId)
|
51
214
|
{
|
215
|
+
_checkNftType(stakeNftId, STAKE());
|
52
216
|
|
217
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
218
|
+
address stakeOwner = msg.sender;
|
219
|
+
|
220
|
+
// add additional staked dips by staking
|
221
|
+
Amount stakeBalance = $._staking.stake(
|
222
|
+
stakeNftId,
|
223
|
+
dipAmount);
|
224
|
+
|
225
|
+
// collect staked dip by staking
|
226
|
+
if (dipAmount.gtz()) {
|
227
|
+
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
228
|
+
_collectToken(
|
229
|
+
$._staking.getTokenHandler(),
|
230
|
+
stakeOwner,
|
231
|
+
dipAmount);
|
232
|
+
}
|
53
233
|
}
|
54
234
|
|
55
235
|
|
56
|
-
function
|
236
|
+
function restakeToNewTarget(
|
57
237
|
NftId stakeNftId,
|
58
|
-
|
238
|
+
NftId newTargetNftId
|
59
239
|
)
|
60
240
|
external
|
61
241
|
virtual
|
242
|
+
restricted()
|
243
|
+
onlyNftOwner(stakeNftId)
|
244
|
+
returns (
|
245
|
+
NftId newStakeNftId
|
246
|
+
)
|
62
247
|
{
|
248
|
+
_checkNftType(stakeNftId, STAKE());
|
249
|
+
|
250
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
251
|
+
// TODO implement
|
252
|
+
}
|
63
253
|
|
64
|
-
}
|
65
254
|
|
66
|
-
function
|
255
|
+
function updateRewards(
|
67
256
|
NftId stakeNftId
|
68
257
|
)
|
69
258
|
external
|
70
259
|
virtual
|
260
|
+
restricted()
|
71
261
|
{
|
262
|
+
_checkNftType(stakeNftId, STAKE());
|
72
263
|
|
264
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
265
|
+
$._staking.updateRewards(stakeNftId);
|
266
|
+
|
267
|
+
emit LogStakingServiceRewardsUpdated(stakeNftId);
|
73
268
|
}
|
74
269
|
|
75
|
-
|
76
|
-
|
77
|
-
NftId newTargetNftId
|
78
|
-
)
|
270
|
+
|
271
|
+
function claimRewards(NftId stakeNftId)
|
79
272
|
external
|
80
273
|
virtual
|
81
|
-
|
82
|
-
|
83
|
-
Timestamp unlockedAt
|
84
|
-
)
|
274
|
+
restricted()
|
275
|
+
onlyNftOwner(stakeNftId)
|
85
276
|
{
|
277
|
+
_checkNftType(stakeNftId, STAKE());
|
86
278
|
|
279
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
280
|
+
address stakeOwner = msg.sender;
|
281
|
+
|
282
|
+
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
283
|
+
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
284
|
+
_distributeToken(
|
285
|
+
$._staking.getTokenHandler(),
|
286
|
+
stakeOwner,
|
287
|
+
rewardsClaimedAmount);
|
87
288
|
}
|
88
289
|
|
89
290
|
|
90
|
-
function
|
91
|
-
NftId targetNftId,
|
92
|
-
address token,
|
93
|
-
Amount amount
|
94
|
-
)
|
291
|
+
function unstake(NftId stakeNftId)
|
95
292
|
external
|
96
293
|
virtual
|
97
|
-
|
294
|
+
restricted()
|
295
|
+
onlyNftOwner(stakeNftId)
|
98
296
|
{
|
297
|
+
_checkNftType(stakeNftId, STAKE());
|
298
|
+
|
299
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
300
|
+
address stakeOwner = msg.sender;
|
99
301
|
|
302
|
+
(
|
303
|
+
Amount unstakedAmount,
|
304
|
+
Amount rewardsClaimedAmount
|
305
|
+
) = $._staking.unstake(stakeNftId);
|
306
|
+
|
307
|
+
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
308
|
+
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
309
|
+
|
310
|
+
$._staking.getTokenHandler().pushToken(
|
311
|
+
stakeOwner,
|
312
|
+
totalAmount);
|
313
|
+
|
314
|
+
// TODO cleanup
|
315
|
+
// _distributeToken(
|
316
|
+
// $._staking.getTokenHandler(),
|
317
|
+
// stakeOwner,
|
318
|
+
// totalAmount);
|
100
319
|
}
|
101
320
|
|
102
321
|
|
103
|
-
function
|
322
|
+
function setTotalValueLocked(
|
104
323
|
NftId targetNftId,
|
105
324
|
address token,
|
106
325
|
Amount amount
|
107
326
|
)
|
108
327
|
external
|
109
328
|
virtual
|
110
|
-
|
329
|
+
restricted()
|
111
330
|
{
|
331
|
+
// TODO implement
|
112
332
|
|
113
333
|
}
|
114
334
|
|
335
|
+
//--- view functions ----------------------------------------------------//
|
115
336
|
|
116
|
-
function
|
117
|
-
NftId targetNftId,
|
118
|
-
address token
|
119
|
-
)
|
337
|
+
function getDipToken()
|
120
338
|
external
|
121
339
|
virtual
|
340
|
+
returns (IERC20Metadata dip)
|
122
341
|
{
|
123
|
-
|
342
|
+
return _getStakingServiceStorage()._dip;
|
124
343
|
}
|
125
344
|
|
126
345
|
|
127
|
-
function
|
128
|
-
NftId targetNftId,
|
129
|
-
address token
|
130
|
-
)
|
346
|
+
function getTokenHandler()
|
131
347
|
external
|
132
348
|
virtual
|
349
|
+
returns (TokenHandler tokenHandler)
|
133
350
|
{
|
351
|
+
return _getStakingServiceStorage()._tokenHandler;
|
352
|
+
}
|
353
|
+
|
134
354
|
|
355
|
+
function getStaking()
|
356
|
+
external
|
357
|
+
virtual
|
358
|
+
returns (IStaking staking)
|
359
|
+
{
|
360
|
+
return _getStakingServiceStorage()._staking;
|
135
361
|
}
|
136
362
|
|
363
|
+
//--- internal functions ------------------------------------------------//
|
137
364
|
|
138
365
|
function _initialize(
|
139
366
|
address owner,
|
@@ -144,26 +371,83 @@ contract StakingService is
|
|
144
371
|
initializer()
|
145
372
|
{
|
146
373
|
(
|
147
|
-
address
|
148
|
-
|
149
|
-
address
|
374
|
+
address authority,
|
375
|
+
address registryAddress,
|
376
|
+
address stakingAddress
|
150
377
|
) = abi.decode(data, (address, address, address));
|
151
378
|
|
152
|
-
|
379
|
+
_initializeService(registryAddress, authority, owner);
|
153
380
|
|
154
381
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
155
|
-
$.
|
382
|
+
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
383
|
+
$._staking = _registerStaking(stakingAddress);
|
384
|
+
$._dip = $._staking.getToken();
|
385
|
+
$._tokenHandler = $._staking.getTokenHandler();
|
156
386
|
|
157
|
-
|
387
|
+
_registerInterface(type(IStakingService).interfaceId);
|
158
388
|
}
|
159
389
|
|
160
|
-
|
161
|
-
|
390
|
+
|
391
|
+
function _registerStaking(
|
392
|
+
address stakingAddress
|
393
|
+
)
|
394
|
+
internal
|
395
|
+
returns (IStaking staking)
|
396
|
+
{
|
397
|
+
// check if provided staking contract is already registred
|
398
|
+
// staking contract may have been already registered by a previous major relase
|
399
|
+
IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
|
400
|
+
if (stakingInfo.nftId.gtz()) {
|
401
|
+
// registered object but wrong type
|
402
|
+
if (stakingInfo.objectType != STAKING()) {
|
403
|
+
revert ErrorStakingServiceNotStaking(stakingAddress);
|
404
|
+
}
|
405
|
+
|
406
|
+
// return correctly registered staking contract
|
407
|
+
return IStaking(stakingAddress);
|
408
|
+
}
|
409
|
+
|
410
|
+
// check that contract implements IStaking
|
411
|
+
if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
|
412
|
+
revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
|
413
|
+
}
|
414
|
+
|
415
|
+
address owner = msg.sender;
|
416
|
+
_getStakingServiceStorage()._registryService.registerStaking(
|
417
|
+
IRegisterable(stakingAddress),
|
418
|
+
owner);
|
419
|
+
|
420
|
+
return IStaking(stakingAddress);
|
162
421
|
}
|
163
422
|
|
423
|
+
|
424
|
+
function _refillRewardReserves(NftId targetNftId, address rewardProvider, Amount dipAmount)
|
425
|
+
internal
|
426
|
+
virtual
|
427
|
+
returns (Amount newBalance)
|
428
|
+
{
|
429
|
+
// update reward reserve book keeping
|
430
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
431
|
+
newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
|
432
|
+
|
433
|
+
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
434
|
+
|
435
|
+
// collect reward dip from provider
|
436
|
+
_collectToken(
|
437
|
+
$._staking.getTokenHandler(),
|
438
|
+
rewardProvider,
|
439
|
+
dipAmount);
|
440
|
+
}
|
441
|
+
|
442
|
+
|
164
443
|
function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
|
165
444
|
assembly {
|
166
445
|
$.slot := STAKING_SERVICE_LOCATION_V1
|
167
446
|
}
|
168
447
|
}
|
448
|
+
|
449
|
+
|
450
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
451
|
+
return STAKING();
|
452
|
+
}
|
169
453
|
}
|