@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1b01e0-214
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 +89 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +496 -255
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -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 +277 -20
- 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 +395 -203
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +143 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +180 -476
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +265 -31
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +119 -380
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +473 -287
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +151 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +123 -194
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +318 -90
- 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 +1445 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -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 +1388 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +242 -45
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +147 -96
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +263 -130
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +738 -328
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +209 -94
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1080 -357
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +175 -281
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +96 -96
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +863 -726
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +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 +133 -350
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +247 -33
- 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 +117 -136
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +109 -318
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +175 -421
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +265 -31
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +337 -210
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -212
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -392
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +673 -552
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +194 -178
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +100 -90
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +276 -435
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +265 -31
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -229
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +232 -333
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +109 -131
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +268 -427
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -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 +370 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- 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 +597 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +645 -373
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -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 +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +608 -539
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +142 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -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 +80 -100
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +568 -252
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +106 -136
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- 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 +16 -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 +148 -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 +55 -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 +98 -318
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- 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 +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -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 +122 -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 +57 -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 +196 -143
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +274 -391
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -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 +126 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +35 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +205 -168
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +198 -138
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +82 -36
- 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 +2 -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 +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 +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- 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 +120 -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/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +338 -225
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +350 -203
- package/contracts/authorization/IAccess.sol +13 -4
- package/contracts/authorization/IAccessAdmin.sol +69 -35
- package/contracts/authorization/IAuthorization.sol +33 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +20 -28
- package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
- package/contracts/distribution/Distribution.sol +41 -80
- package/contracts/distribution/DistributionService.sol +206 -123
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +9 -14
- package/contracts/distribution/IDistributionService.sol +40 -22
- 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 +373 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +68 -48
- package/contracts/instance/IInstanceService.sol +30 -34
- package/contracts/instance/Instance.sol +121 -71
- package/contracts/instance/InstanceAdmin.sol +289 -105
- package/contracts/instance/InstanceAuthorizationV3.sol +99 -66
- package/contracts/instance/InstanceReader.sol +288 -43
- package/contracts/instance/InstanceService.sol +209 -193
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- 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 +21 -24
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +37 -28
- package/contracts/pool/BasicPoolAuthorization.sol +36 -9
- package/contracts/pool/BundleService.sol +204 -105
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +145 -113
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +544 -241
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +98 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +12 -45
- package/contracts/product/BasicProductAuthorization.sol +25 -9
- package/contracts/product/ClaimService.sol +365 -175
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +9 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
- package/contracts/product/PolicyService.sol +458 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +69 -60
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +168 -93
- package/contracts/product/RiskService.sol +154 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +78 -29
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +368 -216
- package/contracts/registry/RegistryAdmin.sol +166 -273
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +517 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +183 -52
- package/contracts/registry/TokenRegistry.sol +8 -10
- package/contracts/shared/Component.sol +65 -136
- package/contracts/shared/ComponentService.sol +463 -336
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +281 -0
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +51 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +81 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +20 -13
- package/contracts/staking/IStakingService.sol +28 -9
- package/contracts/staking/Staking.sol +118 -85
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +26 -33
- package/contracts/staking/StakingService.sol +90 -37
- package/contracts/staking/StakingServiceManager.sol +8 -7
- package/contracts/staking/StakingStore.sol +14 -23
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- 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 +60 -41
- 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 +23 -15
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +56 -126
- package/contracts/type/Version.sol +57 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- 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/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
- 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/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/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- 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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- 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/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/BundleManager.sol +0 -126
- package/contracts/instance/base/ObjectManager.sol +0 -79
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -1,11 +1,12 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 7 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 6 | 
            -
            import {IVersionable} from "../ | 
| 8 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 7 9 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 8 | 
            -
            import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
         | 
| 9 10 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 11 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 12 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| @@ -23,6 +24,7 @@ interface IStaking is | |
| 23 24 | 
             
                // target parameters
         | 
| 24 25 | 
             
                event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
         | 
| 25 26 | 
             
                event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
         | 
| 27 | 
            +
                event LogStakingMaxStakedAmountSet(NftId targetNftId, Amount maxStakedAmount);
         | 
| 26 28 |  | 
| 27 29 | 
             
                // modifiers
         | 
| 28 30 | 
             
                error ErrorStakingNotStake(NftId stakeNftId);
         | 
| @@ -31,6 +33,9 @@ interface IStaking is | |
| 31 33 | 
             
                error ErrorStakingNotStakingOwner();
         | 
| 32 34 | 
             
                error ErrorStakingNotNftOwner(NftId nftId);
         | 
| 33 35 |  | 
| 36 | 
            +
                // initializeTokenHandler
         | 
| 37 | 
            +
                error ErrorStakingNotRegistry(address registry);
         | 
| 38 | 
            +
             | 
| 34 39 | 
             
                // staking rate
         | 
| 35 40 | 
             
                error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
         | 
| 36 41 |  | 
| @@ -43,13 +48,14 @@ interface IStaking is | |
| 43 48 | 
             
                error ErrorStakingTargetNftIdZero();
         | 
| 44 49 | 
             
                error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
         | 
| 45 50 | 
             
                error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
         | 
| 46 | 
            -
                error  | 
| 51 | 
            +
                error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
         | 
| 47 52 | 
             
                error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
         | 
| 53 | 
            +
                error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
         | 
| 48 54 | 
             
                error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
         | 
| 49 55 | 
             
                error ErrorStakingTargetNotFound(NftId targetNftId);
         | 
| 50 56 | 
             
                error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
         | 
| 57 | 
            +
                error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount maxStakedAmount, Amount stakedAmount);
         | 
| 51 58 |  | 
| 52 | 
            -
                error ErrorStakingTargetNotActive(NftId targetNftId);
         | 
| 53 59 | 
             
                error ErrorStakingStakeAmountZero(NftId targetNftId);
         | 
| 54 60 |  | 
| 55 61 | 
             
                // info for individual stake
         | 
| @@ -62,8 +68,13 @@ interface IStaking is | |
| 62 68 | 
             
                    uint256 chainId;
         | 
| 63 69 | 
             
                    Seconds lockingPeriod;
         | 
| 64 70 | 
             
                    UFixed rewardRate;
         | 
| 71 | 
            +
                    Amount maxStakedAmount;
         | 
| 65 72 | 
             
                }
         | 
| 66 73 |  | 
| 74 | 
            +
                function initializeTokenHandler() external;
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                function approveTokenHandler(IERC20Metadata token, Amount amount) external;
         | 
| 77 | 
            +
             | 
| 67 78 | 
             
                // staking rate management 
         | 
| 68 79 |  | 
| 69 80 | 
             
                /// @dev sets the rate that converts 1 token of total value locked into the
         | 
| @@ -90,6 +101,10 @@ interface IStaking is | |
| 90 101 | 
             
                /// permissioned: only the staking service may call this function
         | 
| 91 102 | 
             
                function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
         | 
| 92 103 |  | 
| 104 | 
            +
                /// @dev set the maximum staked amount for the specified target.
         | 
| 105 | 
            +
                /// permissioned: only the staking service may call this function
         | 
| 106 | 
            +
                function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount) external;
         | 
| 107 | 
            +
             | 
| 93 108 | 
             
                /// @dev (re)fills the staking reward reserves for the specified target
         | 
| 94 109 | 
             
                /// unpermissioned: anybody may fill up staking reward reserves
         | 
| 95 110 | 
             
                function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| @@ -127,7 +142,7 @@ interface IStaking is | |
| 127 142 | 
             
                /// @dev restakes the dips to a new target.
         | 
| 128 143 | 
             
                /// the sum of the staked dips and the accumulated rewards will be restaked.
         | 
| 129 144 | 
             
                /// permissioned: only staking service may call this function.
         | 
| 130 | 
            -
                function restake(NftId stakeNftId, NftId  | 
| 145 | 
            +
                function restake(NftId stakeNftId, NftId newStakeNftId) external returns (Amount newStakeBalance);
         | 
| 131 146 |  | 
| 132 147 | 
             
                /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
         | 
| 133 148 | 
             
                /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to 
         | 
| @@ -153,14 +168,6 @@ interface IStaking is | |
| 153 168 | 
             
                        Amount rewardsClaimedAmount
         | 
| 154 169 | 
             
                    );
         | 
| 155 170 |  | 
| 156 | 
            -
                //--- helper functions --------------------------------------------------//
         | 
| 157 | 
            -
             | 
| 158 | 
            -
                /// @dev transfers the specified amount of dips from the from address to the staking wallet.
         | 
| 159 | 
            -
                function collectDipAmount(address from, Amount dipAmount) external;
         | 
| 160 | 
            -
             | 
| 161 | 
            -
                /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
         | 
| 162 | 
            -
                function transferDipAmount(address to, Amount dipAmount) external;
         | 
| 163 | 
            -
             | 
| 164 171 | 
             
                //--- view and pure functions -------------------------------------------//
         | 
| 165 172 |  | 
| 166 173 | 
             
                function getStakingStore() external view returns (StakingStore stakingStore);
         | 
| @@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol"; | |
| 7 7 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 8 8 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 9 9 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 10 | 
            -
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 11 10 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 12 | 
            -
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 13 11 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 14 12 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 13 |  | 
| @@ -28,22 +26,38 @@ interface IStakingService is IService | |
| 28 26 | 
             
                event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
         | 
| 29 27 | 
             
                event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
         | 
| 30 28 | 
             
                event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
         | 
| 29 | 
            +
                event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
         | 
| 31 30 |  | 
| 32 31 | 
             
                event LogStakingServiceRewardsUpdated(NftId stakeNftId);
         | 
| 33 32 | 
             
                event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
         | 
| 34 33 |  | 
| 35 34 | 
             
                // modifiers
         | 
| 36 | 
            -
                error  | 
| 35 | 
            +
                error ErrorStakingServiceNotStakingOwner(address account);
         | 
| 37 36 | 
             
                error ErrorStakingServiceNotStaking(address stakingAddress);
         | 
| 38 37 | 
             
                error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
         | 
| 39 38 |  | 
| 40 39 | 
             
                // create
         | 
| 40 | 
            +
                error ErrorStakingServiceTargetUnknown(NftId targetNftId);
         | 
| 41 41 | 
             
                error ErrorStakingServiceZeroTargetNftId();
         | 
| 42 42 | 
             
                error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
         | 
| 43 43 | 
             
                error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
         | 
| 44 44 | 
             
                error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
         | 
| 45 45 | 
             
                error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
         | 
| 46 46 |  | 
| 47 | 
            +
                /// @dev Set the protocol reward rate stake locking period to the specified duration.
         | 
| 48 | 
            +
                /// Permissioned: only staking owner
         | 
| 49 | 
            +
                // TODO implement
         | 
| 50 | 
            +
                // function setProtocolRewardRate(UFixed rewardRate) external;
         | 
| 51 | 
            +
                // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
         | 
| 52 | 
            +
                // TODO also make sure that protocol rewards can be refilled and withdrawn
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                /// @dev Approves the staking token handler.
         | 
| 55 | 
            +
                /// Reverts if the staking token handler wallet is not the token handler itself.
         | 
| 56 | 
            +
                function approveTokenHandler(
         | 
| 57 | 
            +
                    IERC20Metadata token,
         | 
| 58 | 
            +
                    Amount amount
         | 
| 59 | 
            +
                ) external;
         | 
| 60 | 
            +
             | 
| 47 61 | 
             
                /// @dev creates/registers an on-chain instance staking target.
         | 
| 48 62 | 
             
                /// function granted to instance service
         | 
| 49 63 | 
             
                function createInstanceTarget(
         | 
| @@ -53,13 +67,17 @@ interface IStakingService is IService | |
| 53 67 | 
             
                ) external;
         | 
| 54 68 |  | 
| 55 69 | 
             
                /// @dev Set the instance stake locking period to the specified duration.
         | 
| 56 | 
            -
                ///  | 
| 70 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 57 71 | 
             
                function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
         | 
| 58 72 |  | 
| 59 | 
            -
                /// @dev Set the instance reward rate to the specified value
         | 
| 60 | 
            -
                ///  | 
| 73 | 
            +
                /// @dev Set the instance reward rate to the specified value.
         | 
| 74 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 61 75 | 
             
                function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
         | 
| 62 76 |  | 
| 77 | 
            +
                /// @dev Set the instance max staked amount to the specified value.
         | 
| 78 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 79 | 
            +
                function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
         | 
| 80 | 
            +
             | 
| 63 81 | 
             
                /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
         | 
| 64 82 | 
             
                /// unpermissioned: anybody may fill up staking reward reserves
         | 
| 65 83 | 
             
                function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
         | 
| @@ -68,8 +86,8 @@ interface IStakingService is IService | |
| 68 86 | 
             
                /// unpermissioned: anybody may fill up staking reward reserves
         | 
| 69 87 | 
             
                function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 70 88 |  | 
| 71 | 
            -
                /// @dev  | 
| 72 | 
            -
                ///  | 
| 89 | 
            +
                /// @dev Defunds the staking reward reserves for the specified target
         | 
| 90 | 
            +
                /// Permissioned: only the target owner may call this function
         | 
| 73 91 | 
             
                function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 74 92 |  | 
| 75 93 | 
             
                /// @dev create a new stake with amount DIP to the specified target
         | 
| @@ -104,7 +122,8 @@ interface IStakingService is IService | |
| 104 122 | 
             
                )
         | 
| 105 123 | 
             
                    external
         | 
| 106 124 | 
             
                    returns (
         | 
| 107 | 
            -
                        NftId newStakeNftId
         | 
| 125 | 
            +
                        NftId newStakeNftId,
         | 
| 126 | 
            +
                        Amount newStakeBalance
         | 
| 108 127 | 
             
                    );
         | 
| 109 128 |  | 
| 110 129 |  | 
| @@ -1,29 +1,32 @@ | |
| 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 {IVersionable} from "../ | 
| 11 | 
            -
             | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import { | 
| 16 | 
            -
            import { | 
| 17 | 
            -
            import { | 
| 9 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 12 | 
            +
            import {Component} from "../shared/Component.sol";
         | 
| 13 | 
            +
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 14 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 15 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 16 | 
            +
            import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
         | 
| 17 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 18 | 
            +
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 19 | 
            +
            import {StakingLib} from "./StakingLib.sol";
         | 
| 18 20 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 19 21 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 20 22 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 21 | 
            -
            import {Timestamp | 
| 23 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 24 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 25 | 
            +
            import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
         | 
| 23 26 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 24 | 
            -
            import {UFixed | 
| 25 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 26 | 
            -
            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";
         | 
| 27 30 |  | 
| 28 31 | 
             
            contract Staking is 
         | 
| 29 32 | 
             
                Component,
         | 
| @@ -31,14 +34,13 @@ contract Staking is | |
| 31 34 | 
             
                IStaking
         | 
| 32 35 | 
             
            {
         | 
| 33 36 | 
             
                string public constant CONTRACT_NAME = "Staking";
         | 
| 34 | 
            -
                uint8 private constant GIF_MAJOR_VERSION = 3;
         | 
| 35 37 |  | 
| 36 38 | 
             
                // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
         | 
| 37 39 | 
             
                bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
         | 
| 38 40 |  | 
| 39 41 | 
             
                struct StakingStorage {
         | 
| 40 | 
            -
                    IRegistryService _registryService;
         | 
| 41 42 | 
             
                    TokenRegistry _tokenRegistry;
         | 
| 43 | 
            +
                    TokenHandler _tokenHandler;
         | 
| 42 44 | 
             
                    StakingStore _store;
         | 
| 43 45 | 
             
                    StakingReader _reader;
         | 
| 44 46 | 
             
                    NftId _protocolNftId;
         | 
| @@ -54,12 +56,38 @@ contract Staking is | |
| 54 56 |  | 
| 55 57 |  | 
| 56 58 | 
             
                modifier onlyTarget(NftId targetNftId) {
         | 
| 57 | 
            -
                    if (!_getStakingStorage()._store. | 
| 59 | 
            +
                    if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
         | 
| 58 60 | 
             
                        revert ErrorStakingNotTarget(targetNftId);
         | 
| 59 61 | 
             
                    }
         | 
| 60 62 | 
             
                    _;
         | 
| 61 63 | 
             
                }
         | 
| 62 64 |  | 
| 65 | 
            +
                function initializeTokenHandler()
         | 
| 66 | 
            +
                    external
         | 
| 67 | 
            +
                {
         | 
| 68 | 
            +
                    if (msg.sender != address(getRegistry())) {
         | 
| 69 | 
            +
                        revert ErrorStakingNotRegistry(msg.sender);
         | 
| 70 | 
            +
                    }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 73 | 
            +
                    address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
         | 
| 74 | 
            +
                    $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
         | 
| 75 | 
            +
                        address(getRegistry()),
         | 
| 76 | 
            +
                        address(this),
         | 
| 77 | 
            +
                        dipToken, 
         | 
| 78 | 
            +
                        getRegistry().getAuthority());
         | 
| 79 | 
            +
                }
         | 
| 80 | 
            +
             | 
| 81 | 
            +
             | 
| 82 | 
            +
                function approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 83 | 
            +
                    public
         | 
| 84 | 
            +
                    restricted()
         | 
| 85 | 
            +
                    onlyOwner()
         | 
| 86 | 
            +
                {
         | 
| 87 | 
            +
                    _approveTokenHandler(token, amount);
         | 
| 88 | 
            +
                }
         | 
| 89 | 
            +
             | 
| 90 | 
            +
             | 
| 63 91 | 
             
                // set/update staking reader
         | 
| 64 92 | 
             
                function setStakingReader(StakingReader stakingReader)
         | 
| 65 93 | 
             
                    external
         | 
| @@ -119,7 +147,8 @@ contract Staking is | |
| 119 147 | 
             
                            objectType: expectedObjectType,
         | 
| 120 148 | 
             
                            chainId: chainId,
         | 
| 121 149 | 
             
                            lockingPeriod: initialLockingPeriod,
         | 
| 122 | 
            -
                            rewardRate: initialRewardRate | 
| 150 | 
            +
                            rewardRate: initialRewardRate,
         | 
| 151 | 
            +
                            maxStakedAmount: AmountLib.max()}));
         | 
| 123 152 | 
             
                }
         | 
| 124 153 |  | 
| 125 154 |  | 
| @@ -167,6 +196,21 @@ contract Staking is | |
| 167 196 | 
             
                    emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
         | 
| 168 197 | 
             
                }
         | 
| 169 198 |  | 
| 199 | 
            +
                function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
         | 
| 200 | 
            +
                    external
         | 
| 201 | 
            +
                    virtual
         | 
| 202 | 
            +
                    restricted()
         | 
| 203 | 
            +
                    onlyTarget(targetNftId)
         | 
| 204 | 
            +
                {
         | 
| 205 | 
            +
                    IStaking.TargetInfo memory targetInfo = getStakingReader().getTargetInfo(targetNftId);
         | 
| 206 | 
            +
             | 
| 207 | 
            +
                    targetInfo.maxStakedAmount = maxStakedAmount;
         | 
| 208 | 
            +
                    
         | 
| 209 | 
            +
                    _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                    emit LogStakingMaxStakedAmountSet(targetNftId, maxStakedAmount);
         | 
| 212 | 
            +
                }
         | 
| 213 | 
            +
             | 
| 170 214 |  | 
| 171 215 | 
             
                function refillRewardReserves(NftId targetNftId, Amount dipAmount)
         | 
| 172 216 | 
             
                    external
         | 
| @@ -248,7 +292,7 @@ contract Staking is | |
| 248 292 | 
             
                    restricted() // only staking service
         | 
| 249 293 | 
             
                {
         | 
| 250 294 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 251 | 
            -
                    Timestamp lockedUntil =  | 
| 295 | 
            +
                    Timestamp lockedUntil = StakingLib.checkCreateParameters(
         | 
| 252 296 | 
             
                        $._reader,
         | 
| 253 297 | 
             
                        targetNftId,
         | 
| 254 298 | 
             
                        stakeAmount);
         | 
| @@ -278,7 +322,7 @@ contract Staking is | |
| 278 322 | 
             
                    returns (Amount stakeBalance)
         | 
| 279 323 | 
             
                {
         | 
| 280 324 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 281 | 
            -
                    stakeBalance =  | 
| 325 | 
            +
                    stakeBalance = StakingLib.stake(
         | 
| 282 326 | 
             
                        getRegistry(),
         | 
| 283 327 | 
             
                        $._reader,
         | 
| 284 328 | 
             
                        $._store,
         | 
| @@ -289,20 +333,25 @@ contract Staking is | |
| 289 333 |  | 
| 290 334 | 
             
                function restake(
         | 
| 291 335 | 
             
                    NftId stakeNftId, 
         | 
| 292 | 
            -
                    NftId  | 
| 336 | 
            +
                    NftId newStakeNftId
         | 
| 293 337 | 
             
                )
         | 
| 294 338 | 
             
                    external
         | 
| 295 339 | 
             
                    virtual
         | 
| 296 340 | 
             
                    restricted() // only staking service
         | 
| 297 341 | 
             
                    onlyStake(stakeNftId)
         | 
| 298 | 
            -
                    returns ( | 
| 342 | 
            +
                    returns (Amount newStakeBalance)
         | 
| 299 343 | 
             
                {
         | 
| 344 | 
            +
                    _checkNftType(stakeNftId, STAKE());
         | 
| 345 | 
            +
                    _checkNftType(newStakeNftId, STAKE());
         | 
| 346 | 
            +
             | 
| 300 347 | 
             
                    // TODO add check that allows additional staking amount
         | 
| 301 348 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 302 | 
            -
             | 
| 303 | 
            -
             | 
| 304 | 
            -
             | 
| 305 | 
            -
             | 
| 349 | 
            +
                    newStakeBalance = StakingLib.restake(
         | 
| 350 | 
            +
                        $._reader,
         | 
| 351 | 
            +
                        $._store,
         | 
| 352 | 
            +
                        stakeNftId,
         | 
| 353 | 
            +
                        newStakeNftId);    
         | 
| 354 | 
            +
                }
         | 
| 306 355 |  | 
| 307 356 | 
             
                function updateRewards(NftId stakeNftId)
         | 
| 308 357 | 
             
                    external
         | 
| @@ -350,9 +399,10 @@ contract Staking is | |
| 350 399 | 
             
                        Amount rewardsClaimedAmount
         | 
| 351 400 | 
             
                    )
         | 
| 352 401 | 
             
                {
         | 
| 353 | 
            -
                    // TODO add check that stake locking is in the past
         | 
| 354 402 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 355 | 
            -
             | 
| 403 | 
            +
                    
         | 
| 404 | 
            +
                    StakingLib.checkUnstakeParameters($._reader, stakeNftId);
         | 
| 405 | 
            +
                    
         | 
| 356 406 | 
             
                    // update rewards since last update
         | 
| 357 407 | 
             
                    NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
         | 
| 358 408 |  | 
| @@ -371,43 +421,6 @@ contract Staking is | |
| 371 421 | 
             
                }
         | 
| 372 422 |  | 
| 373 423 |  | 
| 374 | 
            -
             | 
| 375 | 
            -
                //--- other functions ---------------------------------------------------//
         | 
| 376 | 
            -
             | 
| 377 | 
            -
                function collectDipAmount(address from, Amount dipAmount)
         | 
| 378 | 
            -
                    external
         | 
| 379 | 
            -
                    restricted() // only staking service
         | 
| 380 | 
            -
                {
         | 
| 381 | 
            -
                    TokenHandler tokenHandler = getTokenHandler();
         | 
| 382 | 
            -
                    address stakingWallet = getWallet();
         | 
| 383 | 
            -
             | 
| 384 | 
            -
                    StakeManagerLib.checkDipBalanceAndAllowance(
         | 
| 385 | 
            -
                        getToken(), 
         | 
| 386 | 
            -
                        from, 
         | 
| 387 | 
            -
                        address(tokenHandler), 
         | 
| 388 | 
            -
                        dipAmount);
         | 
| 389 | 
            -
             | 
| 390 | 
            -
                    tokenHandler.transfer(from, stakingWallet, dipAmount);
         | 
| 391 | 
            -
                }
         | 
| 392 | 
            -
             | 
| 393 | 
            -
             | 
| 394 | 
            -
                function transferDipAmount(address to, Amount dipAmount)
         | 
| 395 | 
            -
                    external
         | 
| 396 | 
            -
                    restricted() // only staking service
         | 
| 397 | 
            -
                {
         | 
| 398 | 
            -
                    TokenHandler tokenHandler = getTokenHandler();
         | 
| 399 | 
            -
                    address stakingWallet = getWallet();
         | 
| 400 | 
            -
             | 
| 401 | 
            -
                    StakeManagerLib.checkDipBalanceAndAllowance(
         | 
| 402 | 
            -
                        getToken(), 
         | 
| 403 | 
            -
                        stakingWallet, 
         | 
| 404 | 
            -
                        address(tokenHandler), 
         | 
| 405 | 
            -
                        dipAmount);
         | 
| 406 | 
            -
             | 
| 407 | 
            -
                    tokenHandler.transfer(stakingWallet, to, dipAmount);
         | 
| 408 | 
            -
                }
         | 
| 409 | 
            -
             | 
| 410 | 
            -
             | 
| 411 424 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| 412 425 |  | 
| 413 426 | 
             
                function getStakingReader() public view returns (StakingReader reader) {
         | 
| @@ -422,15 +435,28 @@ contract Staking is | |
| 422 435 | 
             
                    return address(_getStakingStorage()._tokenRegistry);
         | 
| 423 436 | 
             
                }
         | 
| 424 437 |  | 
| 438 | 
            +
                function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
         | 
| 439 | 
            +
                    return _getStakingStorage()._tokenHandler;
         | 
| 440 | 
            +
                }
         | 
| 441 | 
            +
             | 
| 442 | 
            +
                // from IRegisterable
         | 
| 443 | 
            +
                function getRelease()
         | 
| 444 | 
            +
                    public 
         | 
| 445 | 
            +
                    pure 
         | 
| 446 | 
            +
                    virtual override (IRelease, Registerable)
         | 
| 447 | 
            +
                    returns(VersionPart)
         | 
| 448 | 
            +
                {
         | 
| 449 | 
            +
                    return VersionPartLib.toVersionPart(3);
         | 
| 450 | 
            +
                }
         | 
| 425 451 |  | 
| 426 | 
            -
                // from  | 
| 452 | 
            +
                // from IVersionable
         | 
| 427 453 | 
             
                function getVersion()
         | 
| 428 454 | 
             
                    public 
         | 
| 429 455 | 
             
                    pure 
         | 
| 430 | 
            -
                    virtual override (IVersionable, Versionable)
         | 
| 456 | 
            +
                    virtual override (Component, IVersionable, Versionable)
         | 
| 431 457 | 
             
                    returns(Version)
         | 
| 432 458 | 
             
                {
         | 
| 433 | 
            -
                    return VersionLib.toVersion( | 
| 459 | 
            +
                    return VersionLib.toVersion(3,0,0);
         | 
| 434 460 | 
             
                }
         | 
| 435 461 |  | 
| 436 462 | 
             
                //--- internal functions ------------------------------------------------//
         | 
| @@ -447,7 +473,7 @@ contract Staking is | |
| 447 473 | 
             
                    UFixed rewardRate;
         | 
| 448 474 |  | 
| 449 475 | 
             
                    (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
         | 
| 450 | 
            -
                    (Amount rewardIncrement, ) =  | 
| 476 | 
            +
                    (Amount rewardIncrement, ) = StakingLib.calculateRewardIncrease(
         | 
| 451 477 | 
             
                        reader, 
         | 
| 452 478 | 
             
                        stakeNftId,
         | 
| 453 479 | 
             
                        rewardRate);
         | 
| @@ -459,13 +485,23 @@ contract Staking is | |
| 459 485 | 
             
                }
         | 
| 460 486 |  | 
| 461 487 |  | 
| 488 | 
            +
                function _approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 489 | 
            +
                    internal
         | 
| 490 | 
            +
                    virtual override
         | 
| 491 | 
            +
                {
         | 
| 492 | 
            +
                    IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
         | 
| 493 | 
            +
                        token, 
         | 
| 494 | 
            +
                        amount);
         | 
| 495 | 
            +
                }
         | 
| 496 | 
            +
             | 
| 497 | 
            +
             | 
| 462 498 | 
             
                function _initialize(
         | 
| 463 499 | 
             
                    address owner, 
         | 
| 464 500 | 
             
                    bytes memory data
         | 
| 465 501 | 
             
                )
         | 
| 466 502 | 
             
                    internal
         | 
| 467 503 | 
             
                    virtual override
         | 
| 468 | 
            -
                    initializer
         | 
| 504 | 
            +
                    initializer()
         | 
| 469 505 | 
             
                {
         | 
| 470 506 | 
             
                    (
         | 
| 471 507 | 
             
                        address registryAddress,
         | 
| @@ -480,28 +516,25 @@ contract Staking is | |
| 480 516 | 
             
                    TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 481 517 | 
             
                    address dipTokenAddress = tokenRegistry.getDipTokenAddress();
         | 
| 482 518 |  | 
| 483 | 
            -
                     | 
| 519 | 
            +
                    // wiring to external contracts
         | 
| 520 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 521 | 
            +
                    $._protocolNftId = registry.getProtocolNftId();
         | 
| 522 | 
            +
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 523 | 
            +
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 524 | 
            +
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 525 | 
            +
             | 
| 526 | 
            +
                    _initializeComponent(
         | 
| 484 527 | 
             
                        authority,
         | 
| 485 528 | 
             
                        registryAddress, 
         | 
| 486 | 
            -
                        registry.getNftId(), 
         | 
| 529 | 
            +
                        registry.getNftId(), // parent nft id
         | 
| 487 530 | 
             
                        CONTRACT_NAME,
         | 
| 488 | 
            -
                        dipTokenAddress,
         | 
| 489 531 | 
             
                        STAKING(), 
         | 
| 490 532 | 
             
                        false, // is interceptor
         | 
| 491 533 | 
             
                        stakingOwner, 
         | 
| 492 534 | 
             
                        "", // registry data
         | 
| 493 535 | 
             
                        ""); // component data
         | 
| 494 536 |  | 
| 495 | 
            -
                     | 
| 496 | 
            -
             | 
| 497 | 
            -
                    // wiring to external contracts
         | 
| 498 | 
            -
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 499 | 
            -
                    $._protocolNftId = getRegistry().getProtocolNftId();
         | 
| 500 | 
            -
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 501 | 
            -
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 502 | 
            -
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 503 | 
            -
             | 
| 504 | 
            -
                    registerInterface(type(IStaking).interfaceId);
         | 
| 537 | 
            +
                    _registerInterface(type(IStaking).interfaceId);
         | 
| 505 538 | 
             
                }
         | 
| 506 539 |  | 
| 507 540 |  |