@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661
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 +27 -6
- 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 +148 -62
- 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/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- 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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +108 -188
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +139 -131
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +44 -58
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- 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 +302 -353
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- 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 +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- 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/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- 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 +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -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 +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- 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 +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- 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 +3 -3
- 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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +69 -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/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/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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- 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 +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.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 +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -38
- package/contracts/distribution/DistributionService.sol +54 -51
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -10
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +242 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +73 -82
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +4 -4
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +5 -8
- package/contracts/product/PolicyService.sol +244 -253
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +66 -52
- package/contracts/product/RiskService.sol +79 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +5 -8
- package/contracts/staking/IStakingService.sol +8 -0
- package/contracts/staking/StakeManagerLib.sol +1 -1
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +35 -12
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
| @@ -5,8 +5,16 @@ import {TokenHandler} from "./TokenHandler.sol"; | |
| 5 5 |  | 
| 6 6 | 
             
            library TokenHandlerDeployerLib {
         | 
| 7 7 |  | 
| 8 | 
            -
                function deployTokenHandler( | 
| 9 | 
            -
                     | 
| 8 | 
            +
                function deployTokenHandler(
         | 
| 9 | 
            +
                    address registry,
         | 
| 10 | 
            +
                    address component,
         | 
| 11 | 
            +
                    address token, 
         | 
| 12 | 
            +
                    address authority
         | 
| 13 | 
            +
                )
         | 
| 14 | 
            +
                    public 
         | 
| 15 | 
            +
                    returns (TokenHandler)
         | 
| 16 | 
            +
                {
         | 
| 17 | 
            +
                    return new TokenHandler(registry, component, token, authority);
         | 
| 10 18 | 
             
                }
         | 
| 11 19 |  | 
| 12 20 | 
             
            }
         | 
| @@ -30,6 +30,9 @@ interface IStaking is | |
| 30 30 | 
             
                error ErrorStakingNotStakingOwner();
         | 
| 31 31 | 
             
                error ErrorStakingNotNftOwner(NftId nftId);
         | 
| 32 32 |  | 
| 33 | 
            +
                // initializeTokenHandler
         | 
| 34 | 
            +
                error ErrorStakingNotRegistry(address registry);
         | 
| 35 | 
            +
             | 
| 33 36 | 
             
                // staking rate
         | 
| 34 37 | 
             
                error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
         | 
| 35 38 |  | 
| @@ -64,6 +67,8 @@ interface IStaking is | |
| 64 67 | 
             
                    UFixed rewardRate;
         | 
| 65 68 | 
             
                }
         | 
| 66 69 |  | 
| 70 | 
            +
                function initializeTokenHandler() external;
         | 
| 71 | 
            +
             | 
| 67 72 | 
             
                // staking rate management 
         | 
| 68 73 |  | 
| 69 74 | 
             
                /// @dev sets the rate that converts 1 token of total value locked into the
         | 
| @@ -153,14 +158,6 @@ interface IStaking is | |
| 153 158 | 
             
                        Amount rewardsClaimedAmount
         | 
| 154 159 | 
             
                    );
         | 
| 155 160 |  | 
| 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 161 | 
             
                //--- view and pure functions -------------------------------------------//
         | 
| 165 162 |  | 
| 166 163 | 
             
                function getStakingStore() external view returns (StakingStore stakingStore);
         | 
| @@ -31,6 +31,7 @@ interface IStakingService is IService | |
| 31 31 | 
             
                event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
         | 
| 32 32 |  | 
| 33 33 | 
             
                // modifiers
         | 
| 34 | 
            +
                error ErrorStakingServiceNotStakingOwner(address account);
         | 
| 34 35 | 
             
                error ErrorStakingServiceNotStaking(address stakingAddress);
         | 
| 35 36 | 
             
                error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
         | 
| 36 37 |  | 
| @@ -48,6 +49,13 @@ interface IStakingService is IService | |
| 48 49 | 
             
                // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
         | 
| 49 50 | 
             
                // TODO also make sure that protocol rewards can be refilled and withdrawn
         | 
| 50 51 |  | 
| 52 | 
            +
                /// @dev Approves the staking token handler.
         | 
| 53 | 
            +
                /// Reverts if the staking token handler wallet is not the token handler itself.
         | 
| 54 | 
            +
                function approveTokenHandler(
         | 
| 55 | 
            +
                    IERC20Metadata token,
         | 
| 56 | 
            +
                    Amount amount
         | 
| 57 | 
            +
                ) external;
         | 
| 58 | 
            +
             | 
| 51 59 | 
             
                /// @dev creates/registers an on-chain instance staking target.
         | 
| 52 60 | 
             
                /// function granted to instance service
         | 
| 53 61 | 
             
                function createInstanceTarget(
         | 
| @@ -51,7 +51,7 @@ library StakeManagerLib { | |
| 51 51 |  | 
| 52 52 | 
             
                    // TODO check that additional dip, rewards and rewards increment 
         | 
| 53 53 | 
             
                    // are still ok with max target staking amount
         | 
| 54 | 
            -
                    NftId targetNftId = registry. | 
| 54 | 
            +
                    NftId targetNftId = registry.getParentNftId(stakeNftId);
         | 
| 55 55 |  | 
| 56 56 | 
             
                    stakingStore.restakeRewards(
         | 
| 57 57 | 
             
                        stakeNftId, 
         | 
| @@ -1,17 +1,22 @@ | |
| 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 {IRegistry} from "../registry/IRegistry.sol";
         | 
| 5 7 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 8 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 6 9 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 7 10 | 
             
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 8 11 |  | 
| 9 12 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 10 13 | 
             
            import {Component} from "../shared/Component.sol";
         | 
| 11 14 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 15 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 12 16 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            -
            import {ObjectType, STAKING} from "../type/ObjectType.sol";
         | 
| 17 | 
            +
            import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
         | 
| 14 18 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 19 | 
            +
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 15 20 | 
             
            import {StakeManagerLib} from "./StakeManagerLib.sol";
         | 
| 16 21 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 17 22 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| @@ -21,7 +26,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol"; | |
| 21 26 | 
             
            import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
         | 
| 22 27 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 23 28 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 24 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 29 | 
            +
            import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 25 30 | 
             
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 26 31 |  | 
| 27 32 | 
             
            contract Staking is 
         | 
| @@ -35,7 +40,6 @@ contract Staking is | |
| 35 40 | 
             
                bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
         | 
| 36 41 |  | 
| 37 42 | 
             
                struct StakingStorage {
         | 
| 38 | 
            -
                    IRegistryService _registryService;
         | 
| 39 43 | 
             
                    TokenRegistry _tokenRegistry;
         | 
| 40 44 | 
             
                    TokenHandler _tokenHandler;
         | 
| 41 45 | 
             
                    StakingStore _store;
         | 
| @@ -59,6 +63,31 @@ contract Staking is | |
| 59 63 | 
             
                    _;
         | 
| 60 64 | 
             
                }
         | 
| 61 65 |  | 
| 66 | 
            +
                function initializeTokenHandler()
         | 
| 67 | 
            +
                    external
         | 
| 68 | 
            +
                {
         | 
| 69 | 
            +
                    if (msg.sender != address(getRegistry())) {
         | 
| 70 | 
            +
                        revert ErrorStakingNotRegistry(msg.sender);
         | 
| 71 | 
            +
                    }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 74 | 
            +
                    $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
         | 
| 75 | 
            +
                        address(getRegistry()),
         | 
| 76 | 
            +
                        address(this),
         | 
| 77 | 
            +
                        address(getToken()), 
         | 
| 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 | 
            +
             | 
| 62 91 | 
             
                // set/update staking reader
         | 
| 63 92 | 
             
                function setStakingReader(StakingReader stakingReader)
         | 
| 64 93 | 
             
                    external
         | 
| @@ -371,25 +400,6 @@ contract Staking is | |
| 371 400 | 
             
                }
         | 
| 372 401 |  | 
| 373 402 |  | 
| 374 | 
            -
             | 
| 375 | 
            -
                //--- other functions ---------------------------------------------------//
         | 
| 376 | 
            -
             | 
| 377 | 
            -
                function collectDipAmount(address from, Amount dipAmount)
         | 
| 378 | 
            -
                    external
         | 
| 379 | 
            -
                    restricted() // only staking service
         | 
| 380 | 
            -
                {
         | 
| 381 | 
            -
                    getTokenHandler().collectTokens(from, getWallet(), dipAmount);
         | 
| 382 | 
            -
                }
         | 
| 383 | 
            -
             | 
| 384 | 
            -
             | 
| 385 | 
            -
                function transferDipAmount(address to, Amount dipAmount)
         | 
| 386 | 
            -
                    external
         | 
| 387 | 
            -
                    restricted() // only staking service
         | 
| 388 | 
            -
                {
         | 
| 389 | 
            -
                    getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
         | 
| 390 | 
            -
                }
         | 
| 391 | 
            -
             | 
| 392 | 
            -
             | 
| 393 403 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| 394 404 |  | 
| 395 405 | 
             
                function getStakingReader() public view returns (StakingReader reader) {
         | 
| @@ -408,14 +418,24 @@ contract Staking is | |
| 408 418 | 
             
                    return _getStakingStorage()._tokenHandler;
         | 
| 409 419 | 
             
                }
         | 
| 410 420 |  | 
| 411 | 
            -
                // from  | 
| 421 | 
            +
                // from IRegisterable
         | 
| 422 | 
            +
                function getRelease()
         | 
| 423 | 
            +
                    public 
         | 
| 424 | 
            +
                    pure 
         | 
| 425 | 
            +
                    virtual override (IRelease, Registerable)
         | 
| 426 | 
            +
                    returns(VersionPart)
         | 
| 427 | 
            +
                {
         | 
| 428 | 
            +
                    return VersionPartLib.toVersionPart(3);
         | 
| 429 | 
            +
                }
         | 
| 430 | 
            +
             | 
| 431 | 
            +
                // from IVersionable
         | 
| 412 432 | 
             
                function getVersion()
         | 
| 413 433 | 
             
                    public 
         | 
| 414 434 | 
             
                    pure 
         | 
| 415 | 
            -
                    virtual override (IVersionable, Versionable)
         | 
| 435 | 
            +
                    virtual override (Component, IVersionable, Versionable)
         | 
| 416 436 | 
             
                    returns(Version)
         | 
| 417 437 | 
             
                {
         | 
| 418 | 
            -
                    return VersionLib.toVersion( | 
| 438 | 
            +
                    return VersionLib.toVersion(3,0,0);
         | 
| 419 439 | 
             
                }
         | 
| 420 440 |  | 
| 421 441 | 
             
                //--- internal functions ------------------------------------------------//
         | 
| @@ -444,6 +464,16 @@ contract Staking is | |
| 444 464 | 
             
                }
         | 
| 445 465 |  | 
| 446 466 |  | 
| 467 | 
            +
                function _approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 468 | 
            +
                    internal
         | 
| 469 | 
            +
                    virtual override
         | 
| 470 | 
            +
                {
         | 
| 471 | 
            +
                    IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
         | 
| 472 | 
            +
                        token, 
         | 
| 473 | 
            +
                        amount);
         | 
| 474 | 
            +
                }
         | 
| 475 | 
            +
             | 
| 476 | 
            +
             | 
| 447 477 | 
             
                function _initialize(
         | 
| 448 478 | 
             
                    address owner, 
         | 
| 449 479 | 
             
                    bytes memory data
         | 
| @@ -465,6 +495,13 @@ contract Staking is | |
| 465 495 | 
             
                    TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 466 496 | 
             
                    address dipTokenAddress = tokenRegistry.getDipTokenAddress();
         | 
| 467 497 |  | 
| 498 | 
            +
                    // wiring to external contracts
         | 
| 499 | 
            +
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 500 | 
            +
                    $._protocolNftId = registry.getProtocolNftId();
         | 
| 501 | 
            +
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 502 | 
            +
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 503 | 
            +
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 504 | 
            +
             | 
| 468 505 | 
             
                    _initializeComponent(
         | 
| 469 506 | 
             
                        authority,
         | 
| 470 507 | 
             
                        registryAddress, 
         | 
| @@ -477,14 +514,6 @@ contract Staking is | |
| 477 514 | 
             
                        "", // registry data
         | 
| 478 515 | 
             
                        ""); // component data
         | 
| 479 516 |  | 
| 480 | 
            -
                    // wiring to external contracts
         | 
| 481 | 
            -
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 482 | 
            -
                    $._protocolNftId = getRegistry().getProtocolNftId();
         | 
| 483 | 
            -
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 484 | 
            -
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 485 | 
            -
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 486 | 
            -
                    $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority, address(this));
         | 
| 487 | 
            -
             | 
| 488 517 | 
             
                    _registerInterface(type(IStaking).interfaceId);
         | 
| 489 518 | 
             
                }
         | 
| 490 519 |  | 
| @@ -32,6 +32,28 @@ contract StakingService is | |
| 32 32 | 
             
                    TokenHandler _tokenHandler;
         | 
| 33 33 | 
             
                }
         | 
| 34 34 |  | 
| 35 | 
            +
             | 
| 36 | 
            +
                modifier onlyStaking() {
         | 
| 37 | 
            +
                    if (msg.sender != address(_getStakingServiceStorage()._staking)) {
         | 
| 38 | 
            +
                        revert ErrorStakingServiceNotStaking(msg.sender);
         | 
| 39 | 
            +
                    }
         | 
| 40 | 
            +
                    _;
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
                function approveTokenHandler(
         | 
| 45 | 
            +
                    IERC20Metadata token,
         | 
| 46 | 
            +
                    Amount amount
         | 
| 47 | 
            +
                )
         | 
| 48 | 
            +
                    external
         | 
| 49 | 
            +
                    virtual
         | 
| 50 | 
            +
                    onlyStaking()
         | 
| 51 | 
            +
                {
         | 
| 52 | 
            +
                    _getStakingServiceStorage()._tokenHandler.approve(
         | 
| 53 | 
            +
                        token, amount);
         | 
| 54 | 
            +
                }
         | 
| 55 | 
            +
             | 
| 56 | 
            +
             | 
| 35 57 | 
             
                function createInstanceTarget(
         | 
| 36 58 | 
             
                    NftId targetNftId,
         | 
| 37 59 | 
             
                    Seconds initialLockingPeriod,
         | 
| @@ -113,7 +135,7 @@ contract StakingService is | |
| 113 135 | 
             
                    // transfer withdrawal amount to target owner
         | 
| 114 136 | 
             
                    address instanceOwner = getRegistry().ownerOf(instanceNftId);
         | 
| 115 137 | 
             
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| 116 | 
            -
                    $. | 
| 138 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 117 139 | 
             
                        instanceOwner,
         | 
| 118 140 | 
             
                        dipAmount);
         | 
| 119 141 | 
             
                }
         | 
| @@ -161,8 +183,8 @@ contract StakingService is | |
| 161 183 | 
             
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 162 184 |  | 
| 163 185 | 
             
                    // collect staked dip by staking
         | 
| 164 | 
            -
                    $. | 
| 165 | 
            -
                        stakeOwner,
         | 
| 186 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 187 | 
            +
                        stakeOwner, 
         | 
| 166 188 | 
             
                        dipAmount);
         | 
| 167 189 | 
             
                }
         | 
| 168 190 |  | 
| @@ -189,7 +211,7 @@ contract StakingService is | |
| 189 211 | 
             
                    // collect staked dip by staking
         | 
| 190 212 | 
             
                    if (dipAmount.gtz()) {
         | 
| 191 213 | 
             
                        emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 192 | 
            -
             | 
| 214 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 193 215 | 
             
                            stakeOwner,
         | 
| 194 216 | 
             
                            dipAmount);
         | 
| 195 217 | 
             
                    }
         | 
| @@ -244,7 +266,7 @@ contract StakingService is | |
| 244 266 |  | 
| 245 267 | 
             
                    Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
         | 
| 246 268 | 
             
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 247 | 
            -
                    $. | 
| 269 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 248 270 | 
             
                        stakeOwner,
         | 
| 249 271 | 
             
                        rewardsClaimedAmount);
         | 
| 250 272 | 
             
                }
         | 
| @@ -268,8 +290,9 @@ contract StakingService is | |
| 268 290 |  | 
| 269 291 | 
             
                    Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
         | 
| 270 292 | 
             
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 271 | 
            -
             | 
| 272 | 
            -
             | 
| 293 | 
            +
             | 
| 294 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 295 | 
            +
                        stakeOwner, 
         | 
| 273 296 | 
             
                        totalAmount);
         | 
| 274 297 | 
             
                }
         | 
| 275 298 |  | 
| @@ -327,15 +350,15 @@ contract StakingService is | |
| 327 350 | 
             
                {
         | 
| 328 351 | 
             
                    (
         | 
| 329 352 | 
             
                        address authority,
         | 
| 330 | 
            -
                        address  | 
| 331 | 
            -
                        address  | 
| 353 | 
            +
                        address registry,
         | 
| 354 | 
            +
                        address staking
         | 
| 332 355 | 
             
                    ) = abi.decode(data, (address, address, address));
         | 
| 333 356 |  | 
| 334 | 
            -
                     | 
| 357 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 335 358 |  | 
| 336 359 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 337 360 | 
             
                    $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
         | 
| 338 | 
            -
                    $._staking = _registerStaking( | 
| 361 | 
            +
                    $._staking = _registerStaking(staking);
         | 
| 339 362 | 
             
                    $._dip = $._staking.getToken();
         | 
| 340 363 | 
             
                    $._tokenHandler = $._staking.getTokenHandler();
         | 
| 341 364 |  | 
| @@ -388,7 +411,7 @@ contract StakingService is | |
| 388 411 | 
             
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 389 412 |  | 
| 390 413 | 
             
                    // collect reward dip from provider
         | 
| 391 | 
            -
                    $. | 
| 414 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 392 415 | 
             
                        rewardProvider,
         | 
| 393 416 | 
             
                        dipAmount);
         | 
| 394 417 | 
             
                }
         | 
| @@ -15,17 +15,18 @@ contract StakingServiceManager is | |
| 15 15 | 
             
                /// @dev initializes proxy manager with service implementation 
         | 
| 16 16 | 
             
                constructor(
         | 
| 17 17 | 
             
                    address authority,
         | 
| 18 | 
            -
                    address  | 
| 18 | 
            +
                    address registry,
         | 
| 19 19 | 
             
                    bytes32 salt
         | 
| 20 20 | 
             
                )
         | 
| 21 21 | 
             
                {
         | 
| 22 22 | 
             
                    StakingService svc = new StakingService();
         | 
| 23 23 | 
             
                    bytes memory data = abi.encode(
         | 
| 24 24 | 
             
                        authority, 
         | 
| 25 | 
            -
                         | 
| 26 | 
            -
                        IRegistry( | 
| 25 | 
            +
                        registry, 
         | 
| 26 | 
            +
                        IRegistry(registry).getStakingAddress());
         | 
| 27 | 
            +
             | 
| 27 28 | 
             
                    IVersionable versionable = initialize(
         | 
| 28 | 
            -
                         | 
| 29 | 
            +
                        registry,
         | 
| 29 30 | 
             
                        address(svc), 
         | 
| 30 31 | 
             
                        data,
         | 
| 31 32 | 
             
                        salt);
         | 
    
        package/contracts/type/Key32.sol
    CHANGED
    
    | @@ -28,8 +28,8 @@ library Key32Lib { | |
| 28 28 |  | 
| 29 29 | 
             
                uint8 public constant TYPE_SHIFT = 31 * 8;
         | 
| 30 30 | 
             
                uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
         | 
| 31 | 
            -
                bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); //  | 
| 32 | 
            -
                bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); //  | 
| 31 | 
            +
                bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // [32] byte in bytes32
         | 
| 32 | 
            +
                bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // [0..31] bytes in bytes32
         | 
| 33 33 |  | 
| 34 34 | 
             
                function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
         | 
| 35 35 | 
             
                    uint256 uintObjectType = ObjectType.unwrap(objectType);
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {Key32} from "../type/Key32.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
         | 
| 7 | 
            +
            library LibKey32Set {
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                struct Set {
         | 
| 10 | 
            +
                    Key32[] keys;
         | 
| 11 | 
            +
                    mapping(Key32 key => uint256 index) at;
         | 
| 12 | 
            +
                }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                error ErrorKey32SetAlreadyAdded(Key32 key);
         | 
| 15 | 
            +
                error ErrorKey32SetNotInSet(Key32 key);
         | 
| 16 | 
            +
             | 
| 17 | 
            +
             | 
| 18 | 
            +
                function add(Set storage set, Key32 key) external {
         | 
| 19 | 
            +
                    if (set.at[key] > 0) {
         | 
| 20 | 
            +
                        revert ErrorKey32SetAlreadyAdded(key);
         | 
| 21 | 
            +
                    }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    set.keys.push(key);
         | 
| 24 | 
            +
                    set.at[key] = set.keys.length;
         | 
| 25 | 
            +
                }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                function remove(Set storage set, Key32 key) external {
         | 
| 28 | 
            +
                    uint256 nftIdIndex = set.at[key];
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    if (nftIdIndex == 0) {
         | 
| 31 | 
            +
                        revert ErrorKey32SetNotInSet(key);
         | 
| 32 | 
            +
                    }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    uint256 toDeleteIndex = nftIdIndex - 1;
         | 
| 35 | 
            +
                    uint256 lastIndex = set.keys.length - 1;
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    if (lastIndex != toDeleteIndex) {
         | 
| 38 | 
            +
                        Key32 lastId = set.keys[lastIndex];
         | 
| 39 | 
            +
                        set.keys[toDeleteIndex] = lastId;
         | 
| 40 | 
            +
                        set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
         | 
| 41 | 
            +
                    }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    set.keys.pop();
         | 
| 44 | 
            +
                    delete set.at[key];
         | 
| 45 | 
            +
                }
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                function isEmpty(Set storage set) external view returns(bool empty) {
         | 
| 48 | 
            +
                    return set.keys.length == 0;
         | 
| 49 | 
            +
                }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                function contains(Set storage set, Key32 key) external view returns(bool inSet) {
         | 
| 52 | 
            +
                    return set.at[key] > 0;
         | 
| 53 | 
            +
                }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                function size(Set storage set) external view returns(uint256 length) {
         | 
| 56 | 
            +
                    return set.keys.length;
         | 
| 57 | 
            +
                }
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                function getElementAt(Set storage set, uint256 index) external view returns(Key32 key) {
         | 
| 60 | 
            +
                    return set.keys[index];
         | 
| 61 | 
            +
                }
         | 
| 62 | 
            +
            }
         | 
    
        package/contracts/type/NftId.sol
    CHANGED
    
    | @@ -76,4 +76,10 @@ library NftIdLib { | |
| 76 76 | 
             
                function toKeyId(NftId id) public pure returns (KeyId keyId) {
         | 
| 77 77 | 
             
                    return KeyId.wrap(bytes31(uint248(NftId.unwrap(id))));
         | 
| 78 78 | 
             
                }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                function toNftId(KeyId keyId) public pure returns (NftId nftId) {
         | 
| 81 | 
            +
                   uint248 keyIdInt = uint248(bytes31(KeyId.unwrap(keyId)));
         | 
| 82 | 
            +
                   assert(keyIdInt < type(uint96).max);
         | 
| 83 | 
            +
                   return NftId.wrap(uint96(keyIdInt));
         | 
| 84 | 
            +
                }
         | 
| 79 85 | 
             
            }
         | 
| @@ -44,10 +44,16 @@ function INSTANCE() pure returns (ObjectType) { | |
| 44 44 | 
             
                return ObjectType.wrap(10);
         | 
| 45 45 | 
             
            }
         | 
| 46 46 |  | 
| 47 | 
            +
            /// @dev Generic component object type.
         | 
| 48 | 
            +
            /// Component role id range is 11-19.
         | 
| 49 | 
            +
            /// Stick to this range for new component object types.
         | 
| 47 50 | 
             
            function COMPONENT() pure returns (ObjectType) {
         | 
| 48 51 | 
             
                return ObjectType.wrap(11);
         | 
| 49 52 | 
             
            }
         | 
| 50 53 |  | 
| 54 | 
            +
            /// @dev Product object type.
         | 
| 55 | 
            +
            /// IMPORTANT the actual value has an influence on the corresponding role id (RoleIdLib.sol). 
         | 
| 56 | 
            +
            /// Do not change this value without updating the corresponding role id calculation.
         | 
| 51 57 | 
             
            function PRODUCT() pure returns (ObjectType) {
         | 
| 52 58 | 
             
                return ObjectType.wrap(12);
         | 
| 53 59 | 
             
            }
         | 
| @@ -64,6 +70,8 @@ function POOL() pure returns (ObjectType) { | |
| 64 70 | 
             
                return ObjectType.wrap(15);
         | 
| 65 71 | 
             
            }
         | 
| 66 72 |  | 
| 73 | 
            +
            /// @dev Application object type.
         | 
| 74 | 
            +
            /// Range for NFT objects created thorugh components is 20-29.
         | 
| 67 75 | 
             
            function APPLICATION() pure returns (ObjectType) {
         | 
| 68 76 | 
             
                return ObjectType.wrap(20);
         | 
| 69 77 | 
             
            }
         | 
| @@ -72,54 +80,69 @@ function POLICY() pure returns (ObjectType) { | |
| 72 80 | 
             
                return ObjectType.wrap(21);
         | 
| 73 81 | 
             
            }
         | 
| 74 82 |  | 
| 75 | 
            -
            function  | 
| 83 | 
            +
            function BUNDLE() pure returns (ObjectType) {
         | 
| 76 84 | 
             
                return ObjectType.wrap(22);
         | 
| 77 85 | 
             
            }
         | 
| 78 86 |  | 
| 79 | 
            -
            function  | 
| 87 | 
            +
            function DISTRIBUTOR() pure returns (ObjectType) {
         | 
| 80 88 | 
             
                return ObjectType.wrap(23);
         | 
| 81 89 | 
             
            }
         | 
| 82 90 |  | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 91 | 
            +
            /// @dev Stake object type.
         | 
| 92 | 
            +
            /// NFT object type is 30
         | 
| 93 | 
            +
            function STAKE() pure returns (ObjectType) {
         | 
| 94 | 
            +
                return ObjectType.wrap(30);
         | 
| 85 95 | 
             
            }
         | 
| 86 96 |  | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 97 | 
            +
            /// @dev Staking target object type.
         | 
| 98 | 
            +
            function TARGET() pure returns (ObjectType) {
         | 
| 99 | 
            +
                return ObjectType.wrap(31);
         | 
| 100 | 
            +
            }
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            /// @dev Accounting object type.
         | 
| 103 | 
            +
            /// Range for non-NFT types created through components is 40+
         | 
| 104 | 
            +
            function ACCOUNTING() pure returns (ObjectType) {
         | 
| 105 | 
            +
                return ObjectType.wrap(40);
         | 
| 106 | 
            +
            }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            function FEE() pure returns (ObjectType) {
         | 
| 109 | 
            +
                return ObjectType.wrap(41);
         | 
| 89 110 | 
             
            }
         | 
| 90 111 |  | 
| 91 112 | 
             
            function PRICE() pure returns (ObjectType) {
         | 
| 92 | 
            -
                return ObjectType.wrap( | 
| 113 | 
            +
                return ObjectType.wrap(42);
         | 
| 93 114 | 
             
            }
         | 
| 94 115 |  | 
| 95 | 
            -
            function  | 
| 96 | 
            -
                return ObjectType.wrap( | 
| 116 | 
            +
            function PREMIUM() pure returns (ObjectType) {
         | 
| 117 | 
            +
                return ObjectType.wrap(43);
         | 
| 97 118 | 
             
            }
         | 
| 98 119 |  | 
| 99 | 
            -
            function  | 
| 100 | 
            -
                return ObjectType.wrap( | 
| 120 | 
            +
            function RISK() pure returns (ObjectType) {
         | 
| 121 | 
            +
                return ObjectType.wrap(44);
         | 
| 101 122 | 
             
            }
         | 
| 102 123 |  | 
| 103 | 
            -
            function  | 
| 104 | 
            -
                return ObjectType.wrap( | 
| 124 | 
            +
            function CLAIM() pure returns (ObjectType) {
         | 
| 125 | 
            +
                return ObjectType.wrap(45);
         | 
| 105 126 | 
             
            }
         | 
| 106 127 |  | 
| 107 | 
            -
            function  | 
| 108 | 
            -
                return ObjectType.wrap( | 
| 128 | 
            +
            function PAYOUT() pure returns (ObjectType) {
         | 
| 129 | 
            +
                return ObjectType.wrap(46); 
         | 
| 109 130 | 
             
            }
         | 
| 110 131 |  | 
| 111 | 
            -
            function  | 
| 112 | 
            -
                return ObjectType.wrap( | 
| 132 | 
            +
            function REQUEST() pure returns (ObjectType) {
         | 
| 133 | 
            +
                return ObjectType.wrap(47);
         | 
| 113 134 | 
             
            }
         | 
| 114 135 |  | 
| 115 | 
            -
            function  | 
| 116 | 
            -
                return ObjectType.wrap( | 
| 136 | 
            +
            function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
         | 
| 137 | 
            +
                return ObjectType.wrap(48);
         | 
| 117 138 | 
             
            }
         | 
| 118 139 |  | 
| 119 | 
            -
            function  | 
| 120 | 
            -
                return ObjectType.wrap( | 
| 140 | 
            +
            function REFERRAL() pure returns (ObjectType) {
         | 
| 141 | 
            +
                return ObjectType.wrap(49);
         | 
| 121 142 | 
             
            }
         | 
| 122 143 |  | 
| 144 | 
            +
             | 
| 145 | 
            +
             | 
| 123 146 | 
             
            /// @dev Object type that includes any other object type.
         | 
| 124 147 | 
             
            /// Note that eq()/'==' does not take this property into account.
         | 
| 125 148 | 
             
            function ALL() pure returns (ObjectType) {
         | 
| @@ -202,6 +225,10 @@ library ObjectTypeLib { | |
| 202 225 | 
             
                        return "Price";
         | 
| 203 226 | 
             
                    } else if (objectType == BUNDLE()) {
         | 
| 204 227 | 
             
                        return "Bundle";
         | 
| 228 | 
            +
                    } else if (objectType == RISK()) {
         | 
| 229 | 
            +
                        return "Risk";
         | 
| 230 | 
            +
                    } else if (objectType == ACCOUNTING()) {
         | 
| 231 | 
            +
                        return "Accounting";
         | 
| 205 232 | 
             
                    }
         | 
| 206 233 |  | 
| 207 234 | 
             
                    // fallback: ObjectType<obect-type-int>
         | 
| @@ -2,6 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Key32, KeyId, Key32Lib} from "./Key32.sol";
         | 
| 5 | 
            +
            import {NftId} from "./NftId.sol";
         | 
| 5 6 | 
             
            import {RISK} from "./ObjectType.sol";
         | 
| 6 7 |  | 
| 7 8 | 
             
            type RiskId is bytes8;
         | 
| @@ -10,9 +11,12 @@ type RiskId is bytes8; | |
| 10 11 | 
             
            using {
         | 
| 11 12 | 
             
                eqRiskId as ==, 
         | 
| 12 13 | 
             
                neRiskId as !=,
         | 
| 13 | 
            -
                RiskIdLib.toKey32,
         | 
| 14 14 | 
             
                RiskIdLib.eq,
         | 
| 15 | 
            -
                RiskIdLib.eqz
         | 
| 15 | 
            +
                RiskIdLib.eqz,
         | 
| 16 | 
            +
                RiskIdLib.gtz,
         | 
| 17 | 
            +
                RiskIdLib.toInt,
         | 
| 18 | 
            +
                RiskIdLib.toKeyId,
         | 
| 19 | 
            +
                RiskIdLib.toKey32
         | 
| 16 20 | 
             
            } for RiskId global;
         | 
| 17 21 |  | 
| 18 22 | 
             
            // general pure free functions
         | 
| @@ -32,14 +36,19 @@ library RiskIdLib { | |
| 32 36 | 
             
                    return RiskId.wrap(bytes8(0));
         | 
| 33 37 | 
             
                }
         | 
| 34 38 |  | 
| 35 | 
            -
                // @dev Converts a  | 
| 36 | 
            -
                function  | 
| 37 | 
            -
                    return RiskId. | 
| 39 | 
            +
                // @dev Converts a risk id into a uint256.
         | 
| 40 | 
            +
                function toInt(RiskId riskId) public pure returns (uint256) {
         | 
| 41 | 
            +
                    return uint64(RiskId.unwrap(riskId));
         | 
| 38 42 | 
             
                }
         | 
| 39 43 |  | 
| 40 | 
            -
                 | 
| 41 | 
            -
                function  | 
| 42 | 
            -
                    return  | 
| 44 | 
            +
                // @dev Converts a risk id string with a product NftId into a risk id.
         | 
| 45 | 
            +
                function toRiskId(NftId productNftId, bytes32 risk) public pure returns (RiskId) {
         | 
| 46 | 
            +
                    return RiskId.wrap(bytes8(keccak256(abi.encode(productNftId, risk))));
         | 
| 47 | 
            +
                }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                /// @dev Returns the key32 value for the specified risk id.
         | 
| 50 | 
            +
                function toKey32(RiskId riskId) public pure returns (Key32 key) {
         | 
| 51 | 
            +
                    return Key32Lib.toKey32(RISK(), toKeyId(riskId));
         | 
| 43 52 | 
             
                }
         | 
| 44 53 |  | 
| 45 54 | 
             
                /// @dev Returns the key id value for the specified nft id
         | 
| @@ -47,6 +56,11 @@ library RiskIdLib { | |
| 47 56 | 
             
                    return KeyId.wrap(bytes31(RiskId.unwrap(id)));
         | 
| 48 57 | 
             
                }
         | 
| 49 58 |  | 
| 59 | 
            +
                function toRiskId(KeyId keyId) public pure returns (RiskId riskId) {
         | 
| 60 | 
            +
                    riskId = RiskId.wrap(bytes8(KeyId.unwrap(keyId)));
         | 
| 61 | 
            +
                    assert(toInt(riskId) < 2**64);
         | 
| 62 | 
            +
                }
         | 
| 63 | 
            +
             | 
| 50 64 | 
             
                function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
         | 
| 51 65 | 
             
                    return eqRiskId(a, b);
         | 
| 52 66 | 
             
                }
         | 
| @@ -54,4 +68,8 @@ library RiskIdLib { | |
| 54 68 | 
             
                function eqz(RiskId a) public pure returns (bool isZero) {
         | 
| 55 69 | 
             
                    return eqRiskId(a, zero());
         | 
| 56 70 | 
             
                }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                function gtz(RiskId a) public pure returns (bool isZero) {
         | 
| 73 | 
            +
                    return uint64(RiskId.unwrap(a)) > 0;
         | 
| 74 | 
            +
                }
         | 
| 57 75 | 
             
            }
         |