@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503
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 +23 -1
- 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 +100 -102
- 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 +51 -53
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- 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 +102 -56
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
- 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 +140 -91
- 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 +95 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
- 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 +306 -161
- 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 +75 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -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 +549 -218
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
- 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 +68 -70
- 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 +38 -40
- 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 +52 -54
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
- 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 +241 -302
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
- 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 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
- 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 +105 -55
- 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 +144 -131
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
- 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 +51 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +157 -144
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
- 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 +26 -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 +64 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
- 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 +316 -50
- 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 +51 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -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 +435 -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 +38 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
- 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 +51 -53
- 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 +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
- 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 +31 -19
- 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 +137 -51
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
- 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 +62 -5
- 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 +2 -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 +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +32 -30
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +8 -1
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +7 -6
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -82
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +62 -72
- 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 +3 -2
- 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 -74
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPoolAuthorization.sol +21 -13
- package/contracts/pool/BundleService.sol +35 -125
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +13 -38
- package/contracts/pool/IPoolService.sol +49 -56
- package/contracts/pool/Pool.sol +9 -9
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +323 -186
- 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 +2 -0
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -139
- 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 +23 -10
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +269 -257
- 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 +53 -7
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +7 -2
- package/contracts/registry/RegistryAdmin.sol +129 -237
- 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 +127 -101
- package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +40 -42
- package/contracts/shared/ComponentService.sol +199 -286
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +208 -9
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +9 -27
- 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 +3 -11
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +45 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +40 -96
- package/contracts/staking/IStaking.sol +1 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +45 -20
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +53 -57
- 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 +23 -6
- 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 +1 -1
- 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/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
| @@ -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,8 +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 | 
            -
                     | 
| 117 | 
            -
                        $._staking.getTokenHandler(),
         | 
| 138 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 118 139 | 
             
                        instanceOwner,
         | 
| 119 140 | 
             
                        dipAmount);
         | 
| 120 141 | 
             
                }
         | 
| @@ -162,44 +183,9 @@ contract StakingService is | |
| 162 183 | 
             
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 163 184 |  | 
| 164 185 | 
             
                    // collect staked dip by staking
         | 
| 165 | 
            -
                     | 
| 166 | 
            -
                        $._staking.getTokenHandler(),
         | 
| 186 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 167 187 | 
             
                        stakeOwner, 
         | 
| 168 188 | 
             
                        dipAmount);
         | 
| 169 | 
            -
             | 
| 170 | 
            -
                    // TODO cleanup
         | 
| 171 | 
            -
                    // TokenHandler tokenHandler = $._staking.getTokenHandler();
         | 
| 172 | 
            -
                    // tokenHandler.collectTokens(
         | 
| 173 | 
            -
                    //     stakeOwner, 
         | 
| 174 | 
            -
                    //     tokenHandler.getWallet(), 
         | 
| 175 | 
            -
                    //     dipAmount);
         | 
| 176 | 
            -
                }
         | 
| 177 | 
            -
             | 
| 178 | 
            -
                function _collectToken(
         | 
| 179 | 
            -
                    TokenHandler tokenHandler,
         | 
| 180 | 
            -
                    address from,
         | 
| 181 | 
            -
                    Amount amount
         | 
| 182 | 
            -
                )
         | 
| 183 | 
            -
                    internal
         | 
| 184 | 
            -
                    virtual
         | 
| 185 | 
            -
                {
         | 
| 186 | 
            -
                    tokenHandler.collectTokens(
         | 
| 187 | 
            -
                        from, 
         | 
| 188 | 
            -
                        amount);
         | 
| 189 | 
            -
                }
         | 
| 190 | 
            -
             | 
| 191 | 
            -
                function _distributeToken(
         | 
| 192 | 
            -
                    TokenHandler tokenHandler,
         | 
| 193 | 
            -
                    address to,
         | 
| 194 | 
            -
                    Amount amount
         | 
| 195 | 
            -
                )
         | 
| 196 | 
            -
                    internal
         | 
| 197 | 
            -
                    virtual
         | 
| 198 | 
            -
                {
         | 
| 199 | 
            -
                    tokenHandler.distributeTokens(
         | 
| 200 | 
            -
                        tokenHandler.getWallet(), 
         | 
| 201 | 
            -
                        to, 
         | 
| 202 | 
            -
                        amount);
         | 
| 203 189 | 
             
                }
         | 
| 204 190 |  | 
| 205 191 |  | 
| @@ -225,8 +211,7 @@ contract StakingService is | |
| 225 211 | 
             
                    // collect staked dip by staking
         | 
| 226 212 | 
             
                    if (dipAmount.gtz()) {
         | 
| 227 213 | 
             
                        emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 228 | 
            -
             | 
| 229 | 
            -
                            $._staking.getTokenHandler(),
         | 
| 214 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 230 215 | 
             
                            stakeOwner,
         | 
| 231 216 | 
             
                            dipAmount);
         | 
| 232 217 | 
             
                    }
         | 
| @@ -242,13 +227,32 @@ contract StakingService is | |
| 242 227 | 
             
                    restricted()
         | 
| 243 228 | 
             
                    onlyNftOwner(stakeNftId)
         | 
| 244 229 | 
             
                    returns (
         | 
| 245 | 
            -
                        NftId newStakeNftId
         | 
| 230 | 
            +
                        NftId newStakeNftId,
         | 
| 231 | 
            +
                        Amount newStakeBalance
         | 
| 246 232 | 
             
                    )
         | 
| 247 233 | 
             
                {
         | 
| 248 234 | 
             
                    _checkNftType(stakeNftId, STAKE());
         | 
| 249 235 |  | 
| 250 236 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 251 | 
            -
                     | 
| 237 | 
            +
                    address stakeOwner = msg.sender;
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                    // register new stake object with registry
         | 
| 240 | 
            +
                    newStakeNftId = $._registryService.registerStake(
         | 
| 241 | 
            +
                        IRegistry.ObjectInfo({
         | 
| 242 | 
            +
                            nftId: NftIdLib.zero(),
         | 
| 243 | 
            +
                            parentNftId: newTargetNftId,
         | 
| 244 | 
            +
                            objectType: STAKE(),
         | 
| 245 | 
            +
                            isInterceptor: false,
         | 
| 246 | 
            +
                            objectAddress: address(0),
         | 
| 247 | 
            +
                            initialOwner: stakeOwner,
         | 
| 248 | 
            +
                            data: ""
         | 
| 249 | 
            +
                        }));
         | 
| 250 | 
            +
             | 
| 251 | 
            +
                    newStakeBalance = $._staking.restake(
         | 
| 252 | 
            +
                        stakeNftId, 
         | 
| 253 | 
            +
                        newStakeNftId);
         | 
| 254 | 
            +
             | 
| 255 | 
            +
                    emit LogStakingServiceStakeRestaked(stakeOwner, stakeNftId, newStakeNftId, newTargetNftId, newStakeBalance);
         | 
| 252 256 | 
             
                } 
         | 
| 253 257 |  | 
| 254 258 |  | 
| @@ -281,8 +285,7 @@ contract StakingService is | |
| 281 285 |  | 
| 282 286 | 
             
                    Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
         | 
| 283 287 | 
             
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 284 | 
            -
                     | 
| 285 | 
            -
                        $._staking.getTokenHandler(),
         | 
| 288 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 286 289 | 
             
                        stakeOwner,
         | 
| 287 290 | 
             
                        rewardsClaimedAmount);
         | 
| 288 291 | 
             
                }
         | 
| @@ -307,15 +310,9 @@ contract StakingService is | |
| 307 310 | 
             
                    Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
         | 
| 308 311 | 
             
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 309 312 |  | 
| 310 | 
            -
                    $. | 
| 313 | 
            +
                    $._tokenHandler.pushToken(
         | 
| 311 314 | 
             
                        stakeOwner, 
         | 
| 312 315 | 
             
                        totalAmount);
         | 
| 313 | 
            -
             | 
| 314 | 
            -
                    // TODO cleanup
         | 
| 315 | 
            -
                    // _distributeToken(
         | 
| 316 | 
            -
                    //     $._staking.getTokenHandler(),
         | 
| 317 | 
            -
                    //     stakeOwner,
         | 
| 318 | 
            -
                    //     totalAmount);
         | 
| 319 316 | 
             
                }
         | 
| 320 317 |  | 
| 321 318 |  | 
| @@ -372,15 +369,15 @@ contract StakingService is | |
| 372 369 | 
             
                {
         | 
| 373 370 | 
             
                    (
         | 
| 374 371 | 
             
                        address authority,
         | 
| 375 | 
            -
                        address  | 
| 376 | 
            -
                        address  | 
| 372 | 
            +
                        address registry,
         | 
| 373 | 
            +
                        address staking
         | 
| 377 374 | 
             
                    ) = abi.decode(data, (address, address, address));
         | 
| 378 375 |  | 
| 379 | 
            -
                     | 
| 376 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 380 377 |  | 
| 381 378 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 382 379 | 
             
                    $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
         | 
| 383 | 
            -
                    $._staking = _registerStaking( | 
| 380 | 
            +
                    $._staking = _registerStaking(staking);
         | 
| 384 381 | 
             
                    $._dip = $._staking.getToken();
         | 
| 385 382 | 
             
                    $._tokenHandler = $._staking.getTokenHandler();
         | 
| 386 383 |  | 
| @@ -433,8 +430,7 @@ contract StakingService is | |
| 433 430 | 
             
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 434 431 |  | 
| 435 432 | 
             
                    // collect reward dip from provider
         | 
| 436 | 
            -
                     | 
| 437 | 
            -
                        $._staking.getTokenHandler(),
         | 
| 433 | 
            +
                    $._tokenHandler.pullToken(
         | 
| 438 434 | 
             
                        rewardProvider,
         | 
| 439 435 | 
             
                        dipAmount);
         | 
| 440 436 | 
             
                }
         | 
| @@ -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>
         | 
| @@ -10,9 +10,12 @@ type RiskId is bytes8; | |
| 10 10 | 
             
            using {
         | 
| 11 11 | 
             
                eqRiskId as ==, 
         | 
| 12 12 | 
             
                neRiskId as !=,
         | 
| 13 | 
            -
                RiskIdLib.toKey32,
         | 
| 14 13 | 
             
                RiskIdLib.eq,
         | 
| 15 | 
            -
                RiskIdLib.eqz
         | 
| 14 | 
            +
                RiskIdLib.eqz,
         | 
| 15 | 
            +
                RiskIdLib.gtz,
         | 
| 16 | 
            +
                RiskIdLib.toInt,
         | 
| 17 | 
            +
                RiskIdLib.toKeyId,
         | 
| 18 | 
            +
                RiskIdLib.toKey32
         | 
| 16 19 | 
             
            } for RiskId global;
         | 
| 17 20 |  | 
| 18 21 | 
             
            // general pure free functions
         | 
| @@ -32,14 +35,19 @@ library RiskIdLib { | |
| 32 35 | 
             
                    return RiskId.wrap(bytes8(0));
         | 
| 33 36 | 
             
                }
         | 
| 34 37 |  | 
| 35 | 
            -
                // @dev Converts a  | 
| 38 | 
            +
                // @dev Converts a risk id into a uint256.
         | 
| 39 | 
            +
                function toInt(RiskId riskId) public pure returns (uint256) {
         | 
| 40 | 
            +
                    return uint64(RiskId.unwrap(riskId));
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                // @dev Converts a risk id string into a risk id.
         | 
| 36 44 | 
             
                function toRiskId(string memory risk) public pure returns (RiskId) {
         | 
| 37 45 | 
             
                    return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
         | 
| 38 46 | 
             
                }
         | 
| 39 47 |  | 
| 40 | 
            -
                /// @dev Returns the key32 value for the specified  | 
| 41 | 
            -
                function toKey32(RiskId  | 
| 42 | 
            -
                    return Key32Lib.toKey32(RISK(), toKeyId( | 
| 48 | 
            +
                /// @dev Returns the key32 value for the specified risk id.
         | 
| 49 | 
            +
                function toKey32(RiskId riskId) public pure returns (Key32 key) {
         | 
| 50 | 
            +
                    return Key32Lib.toKey32(RISK(), toKeyId(riskId));
         | 
| 43 51 | 
             
                }
         | 
| 44 52 |  | 
| 45 53 | 
             
                /// @dev Returns the key id value for the specified nft id
         | 
| @@ -47,6 +55,11 @@ library RiskIdLib { | |
| 47 55 | 
             
                    return KeyId.wrap(bytes31(RiskId.unwrap(id)));
         | 
| 48 56 | 
             
                }
         | 
| 49 57 |  | 
| 58 | 
            +
                function toRiskId(KeyId keyId) public pure returns (RiskId riskId) {
         | 
| 59 | 
            +
                    riskId = RiskId.wrap(bytes8(KeyId.unwrap(keyId)));
         | 
| 60 | 
            +
                    assert(toInt(riskId) < 2**64);
         | 
| 61 | 
            +
                }
         | 
| 62 | 
            +
             | 
| 50 63 | 
             
                function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
         | 
| 51 64 | 
             
                    return eqRiskId(a, b);
         | 
| 52 65 | 
             
                }
         | 
| @@ -54,4 +67,8 @@ library RiskIdLib { | |
| 54 67 | 
             
                function eqz(RiskId a) public pure returns (bool isZero) {
         | 
| 55 68 | 
             
                    return eqRiskId(a, zero());
         | 
| 56 69 | 
             
                }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                function gtz(RiskId a) public pure returns (bool isZero) {
         | 
| 72 | 
            +
                    return uint64(RiskId.unwrap(a)) > 0;
         | 
| 73 | 
            +
                }
         | 
| 57 74 | 
             
            }
         | 
| @@ -11,9 +11,11 @@ type RoleId is uint64; | |
| 11 11 | 
             
            using {
         | 
| 12 12 | 
             
                eqRoleId as ==, 
         | 
| 13 13 | 
             
                neRoleId as !=,
         | 
| 14 | 
            +
                RoleIdLib.toInt,
         | 
| 14 15 | 
             
                RoleIdLib.eqz,
         | 
| 15 16 | 
             
                RoleIdLib.gtz,
         | 
| 16 | 
            -
                RoleIdLib. | 
| 17 | 
            +
                RoleIdLib.isComponentRole,
         | 
| 18 | 
            +
                RoleIdLib.isCustomRole
         | 
| 17 19 | 
             
                // RoleIdLib.toKey32
         | 
| 18 20 | 
             
            } for RoleId global;
         | 
| 19 21 |  | 
| @@ -54,6 +56,9 @@ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2) | |
| 54 56 | 
             
            /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
         | 
| 55 57 | 
             
            function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); } 
         | 
| 56 58 |  | 
| 59 | 
            +
            /// @dev role assigned to release registry, release specfic to lock/unlock a release
         | 
| 60 | 
            +
            function RELEASE_REGISTRY_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
         | 
| 61 | 
            +
             | 
| 57 62 | 
             
            //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
         | 
| 58 63 | 
             
            // created and assigned during initial deployment for registry and staking
         | 
| 59 64 | 
             
            // granting for instances and components in instance service
         | 
| @@ -72,6 +77,8 @@ function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRo | |
| 72 77 | 
             
            // - application service role (version 3): 2003
         | 
| 73 78 |  | 
| 74 79 | 
             
            //--- GIF component contract roles (range 12'001 - 19'099) ------------------//
         | 
| 80 | 
            +
            // the min value of 12'001 is based on the following calculation:
         | 
| 81 | 
            +
            // object type * 1000 + 1 where the lowest object type is 12 (product) 
         | 
| 75 82 | 
             
            // assigned at component registration time
         | 
| 76 83 | 
             
            // object type * 1000 + instane specific component counter
         | 
| 77 84 | 
             
            // on any instance a maximum number of 999 components may be deployed
         | 
| @@ -92,8 +99,10 @@ library RoleIdLib { | |
| 92 99 |  | 
| 93 100 | 
             
                uint64 public constant ALL_VERSIONS = 99;
         | 
| 94 101 | 
             
                uint64 public constant SERVICE_DOMAIN_ROLE_FACTOR = 100;
         | 
| 95 | 
            -
                uint64 public constant COMPONENT_ROLE_FACTOR =  | 
| 96 | 
            -
                uint64 public constant  | 
| 102 | 
            +
                uint64 public constant COMPONENT_ROLE_FACTOR = 1000;
         | 
| 103 | 
            +
                uint64 public constant COMPONENT_ROLE_MIN_INT = 12000;
         | 
| 104 | 
            +
                uint64 public constant COMPONENT_ROLE_MAX_INT = 19000;
         | 
| 105 | 
            +
                uint64 public constant CUSTOM_ROLE_MIN_INT = 1000000;
         | 
| 97 106 |  | 
| 98 107 | 
             
                /// @dev Converts the RoleId to a uint.
         | 
| 99 108 | 
             
                function zero() public pure returns (RoleId) {
         | 
| @@ -112,7 +121,7 @@ library RoleIdLib { | |
| 112 121 |  | 
| 113 122 | 
             
                /// @dev Converts an uint into a custom role id.
         | 
| 114 123 | 
             
                function toCustomRoleId(uint64 index) public pure returns (RoleId) {
         | 
| 115 | 
            -
                    return toRoleId( | 
| 124 | 
            +
                    return toRoleId(CUSTOM_ROLE_MIN_INT + index);
         | 
| 116 125 | 
             
                }
         | 
| 117 126 |  | 
| 118 127 | 
             
                /// @dev Converts the role id to a uint.
         | 
| @@ -150,6 +159,17 @@ library RoleIdLib { | |
| 150 159 | 
             
                    return RoleId.unwrap(a) == 0;
         | 
| 151 160 | 
             
                }
         | 
| 152 161 |  | 
| 162 | 
            +
                /// @dev Returns true iff the role id is a component role.
         | 
| 163 | 
            +
                function isComponentRole(RoleId roleId) public pure returns (bool) {
         | 
| 164 | 
            +
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 165 | 
            +
                    return roleIdInt >= COMPONENT_ROLE_MIN_INT && roleIdInt <= COMPONENT_ROLE_MAX_INT;
         | 
| 166 | 
            +
                }
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                /// @dev Returns true iff the role id is a custom role.
         | 
| 169 | 
            +
                function isCustomRole(RoleId roleId) public pure returns (bool) {
         | 
| 170 | 
            +
                    return RoleId.unwrap(roleId) >= CUSTOM_ROLE_MIN_INT;
         | 
| 171 | 
            +
                }
         | 
| 172 | 
            +
             | 
| 153 173 | 
             
                /// @dev Returns the key32 value for the specified id and object type.
         | 
| 154 174 | 
             
                function toKey32(RoleId a) public pure returns (Key32 key) {
         | 
| 155 175 | 
             
                    return Key32Lib.toKey32(ROLE(), toKeyId(a));
         | 
| @@ -8,6 +8,7 @@ using { | |
| 8 8 | 
             
                eqSelector as ==, 
         | 
| 9 9 | 
             
                neSelector as !=, 
         | 
| 10 10 | 
             
                SelectorLib.toBytes4,
         | 
| 11 | 
            +
                SelectorLib.toString,
         | 
| 11 12 | 
             
                SelectorLib.eqz
         | 
| 12 13 | 
             
            } for Selector global;
         | 
| 13 14 |  | 
| @@ -46,6 +47,10 @@ library SelectorLib { | |
| 46 47 | 
             
                function toBytes4(Selector s) public pure returns (bytes4) {
         | 
| 47 48 | 
             
                    return Selector.unwrap(s);
         | 
| 48 49 | 
             
                }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                function toString(Selector s) public pure returns (string memory) {
         | 
| 52 | 
            +
                    return string(abi.encode(Selector.unwrap(s)));
         | 
| 53 | 
            +
                }
         | 
| 49 54 | 
             
            }
         | 
| 50 55 |  | 
| 51 56 | 
             
            // selector specific set library
         | 
| @@ -54,11 +54,6 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) { | |
| 54 54 | 
             
                return Timestamp.unwrap(a) != Timestamp.unwrap(b);
         | 
| 55 55 | 
             
            }
         | 
| 56 56 |  | 
| 57 | 
            -
            /// @dev Converts the uint256 to a Timestamp.
         | 
| 58 | 
            -
            function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
         | 
| 59 | 
            -
                return TimestampLib.toTimestamp(timestamp);
         | 
| 60 | 
            -
            }
         | 
| 61 | 
            -
             | 
| 62 57 | 
             
            // TODO move to TimestampLib and rename to zero()
         | 
| 63 58 | 
             
            /// @dev Return the Timestamp zero (0)
         | 
| 64 59 | 
             
            function zeroTimestamp() pure returns (Timestamp) {
         |