@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384
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 +76 -341
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +367 -126
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1546 -211
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +261 -59
- 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 +258 -82
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +97 -14
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -27
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +264 -64
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -11
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -10
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
- 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 +81 -52
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +109 -68
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +263 -63
- 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 +74 -33
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -60
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -78
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +263 -63
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +359 -33
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +297 -3
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +756 -392
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +231 -75
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +492 -424
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +323 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1444 -2133
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- 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 +25 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +277 -60
- 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 +19 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -36
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +263 -63
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -10
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -10
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -10
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +263 -63
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -10
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -10
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +537 -300
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +330 -71
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +543 -226
- 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 +167 -103
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
- 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/INftOwnable.sol/INftOwnable.json +19 -0
- 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 +19 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- 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 +19 -10
- 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 +21 -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 +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1384 -128
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1472 -185
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +293 -149
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1617 -817
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +140 -78
- 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 +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +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 +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +6 -6
- 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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- 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/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +2 -0
- package/contracts/authorization/AccessAdmin.sol +292 -317
- package/contracts/authorization/AccessAdminLib.sol +517 -22
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +64 -239
- package/contracts/authorization/IAccess.sol +23 -14
- package/contracts/authorization/IAccessAdmin.sol +25 -53
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +3 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +9 -8
- package/contracts/distribution/DistributionService.sol +98 -35
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +55 -5
- package/contracts/instance/IInstanceService.sol +37 -6
- package/contracts/instance/Instance.sol +103 -56
- package/contracts/instance/InstanceAdmin.sol +151 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +350 -394
- package/contracts/instance/InstanceService.sol +180 -125
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IComponents.sol +0 -2
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/Oracle.sol +4 -6
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -18
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +64 -11
- package/contracts/product/BasicProduct.sol +2 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +22 -25
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +11 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +33 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +52 -106
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +8 -8
- package/contracts/shared/ComponentService.sol +245 -262
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +12 -13
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -9
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +261 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +468 -217
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +16 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +1 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -14,7 +14,7 @@ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol" | |
| 14 14 |  | 
| 15 15 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 16 16 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 17 | 
            -
            import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
         | 
| 17 | 
            +
            import {ObjectType, ObjectTypeLib, COMPONENT, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
         | 
| 18 18 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 19 19 | 
             
            import {Registry} from "./Registry.sol";
         | 
| 20 20 | 
             
            import {ReleaseAdmin} from "./ReleaseAdmin.sol";
         | 
| @@ -150,7 +150,7 @@ contract ReleaseRegistry is | |
| 150 150 | 
             
                    uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
         | 
| 151 151 |  | 
| 152 152 | 
             
                    // create and initialize release admin
         | 
| 153 | 
            -
                    releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
         | 
| 153 | 
            +
                    releaseAdmin = _cloneNewReleaseAdmin(serviceAuthorization, releaseVersion);
         | 
| 154 154 | 
             
                    releaseSalt = salt;
         | 
| 155 155 |  | 
| 156 156 | 
             
                    // ensures unique salt
         | 
| @@ -182,8 +182,8 @@ contract ReleaseRegistry is | |
| 182 182 | 
             
                    checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
         | 
| 183 183 |  | 
| 184 184 | 
             
                    address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
         | 
| 185 | 
            -
                    IServiceAuthorization  | 
| 186 | 
            -
                    ObjectType expectedDomain =  | 
| 185 | 
            +
                    IServiceAuthorization releaseAuthz = _releaseInfo[releaseVersion].auth;
         | 
| 186 | 
            +
                    ObjectType expectedDomain = releaseAuthz.getServiceDomain(_registeredServices);
         | 
| 187 187 |  | 
| 188 188 | 
             
                    // service can work with release registry and release version
         | 
| 189 189 | 
             
                    (
         | 
| @@ -216,7 +216,6 @@ contract ReleaseRegistry is | |
| 216 216 | 
             
                    ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
         | 
| 217 217 | 
             
                    releaseAdmin.setReleaseLocked(false);
         | 
| 218 218 | 
             
                    releaseAdmin.authorizeService(
         | 
| 219 | 
            -
                        releaseAuth, 
         | 
| 220 219 | 
             
                        service,
         | 
| 221 220 | 
             
                        serviceDomain,
         | 
| 222 221 | 
             
                        releaseVersion);
         | 
| @@ -240,7 +239,7 @@ contract ReleaseRegistry is | |
| 240 239 |  | 
| 241 240 | 
             
                    _latest = release;
         | 
| 242 241 | 
             
                    _releaseInfo[release].state = ACTIVE();
         | 
| 243 | 
            -
                    _releaseInfo[release].activatedAt = TimestampLib. | 
| 242 | 
            +
                    _releaseInfo[release].activatedAt = TimestampLib.current();
         | 
| 244 243 | 
             
                    _releaseInfo[release].disabledAt = TimestampLib.max();
         | 
| 245 244 |  | 
| 246 245 | 
             
                    // grant special roles for registry/staking/pool services
         | 
| @@ -259,6 +258,11 @@ contract ReleaseRegistry is | |
| 259 258 | 
             
                        _registryAdmin.grantServiceRoleForAllVersions(IService(service), STAKING());
         | 
| 260 259 | 
             
                    }
         | 
| 261 260 |  | 
| 261 | 
            +
                    service = _registry.getServiceAddress(COMPONENT(), release);
         | 
| 262 | 
            +
                    if(service != address(0)) {
         | 
| 263 | 
            +
                        _registryAdmin.grantServiceRoleForAllVersions(IService(service), COMPONENT());
         | 
| 264 | 
            +
                    }
         | 
| 265 | 
            +
             | 
| 262 266 | 
             
                    service = _registry.getServiceAddress(POOL(), release);
         | 
| 263 267 | 
             
                    if(service != address(0)) {
         | 
| 264 268 | 
             
                        _registryAdmin.grantServiceRoleForAllVersions(IService(service), POOL());
         | 
| @@ -284,7 +288,7 @@ contract ReleaseRegistry is | |
| 284 288 | 
             
                    } else {
         | 
| 285 289 | 
             
                        checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
         | 
| 286 290 | 
             
                        _releaseInfo[release].state = PAUSED();
         | 
| 287 | 
            -
                        _releaseInfo[release].disabledAt = TimestampLib. | 
| 291 | 
            +
                        _releaseInfo[release].disabledAt = TimestampLib.current();
         | 
| 288 292 | 
             
                        emit LogReleaseDisabled(release);
         | 
| 289 293 | 
             
                    }
         | 
| 290 294 |  | 
| @@ -367,7 +371,10 @@ contract ReleaseRegistry is | |
| 367 371 | 
             
                        _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
         | 
| 368 372 | 
             
                }
         | 
| 369 373 |  | 
| 370 | 
            -
                function _cloneNewReleaseAdmin( | 
| 374 | 
            +
                function _cloneNewReleaseAdmin(
         | 
| 375 | 
            +
                    IServiceAuthorization serviceAuthorization,
         | 
| 376 | 
            +
                    VersionPart release
         | 
| 377 | 
            +
                )
         | 
| 371 378 | 
             
                    private
         | 
| 372 379 | 
             
                    returns (ReleaseAdmin clonedAdmin)
         | 
| 373 380 | 
             
                {
         | 
| @@ -377,7 +384,7 @@ contract ReleaseRegistry is | |
| 377 384 |  | 
| 378 385 | 
             
                    string memory releaseAdminName = string(
         | 
| 379 386 | 
             
                        abi.encodePacked(
         | 
| 380 | 
            -
                            " | 
| 387 | 
            +
                            "ReleaseAdminV", 
         | 
| 381 388 | 
             
                            release.toString()));
         | 
| 382 389 |  | 
| 383 390 | 
             
                    clonedAdmin.initialize(
         | 
| @@ -386,8 +393,9 @@ contract ReleaseRegistry is | |
| 386 393 |  | 
| 387 394 | 
             
                    clonedAdmin.completeSetup(
         | 
| 388 395 | 
             
                        address(_registry), 
         | 
| 389 | 
            -
                        address( | 
| 390 | 
            -
                        release | 
| 396 | 
            +
                        address(serviceAuthorization),
         | 
| 397 | 
            +
                        release,
         | 
| 398 | 
            +
                        address(this)); // release registry (this contract)
         | 
| 391 399 |  | 
| 392 400 | 
             
                    // lock release (remains locked until activation)
         | 
| 393 401 | 
             
                    clonedAdmin.setReleaseLocked(true);
         | 
| @@ -412,7 +420,7 @@ contract ReleaseRegistry is | |
| 412 420 | 
             
                    returns (uint256 serviceDomainsCount)
         | 
| 413 421 | 
             
                {
         | 
| 414 422 | 
             
                    // authorization contract supports IServiceAuthorization interface
         | 
| 415 | 
            -
                    if(! | 
| 423 | 
            +
                    if(!ContractLib.supportsInterface(address(serviceAuthorization), type(IServiceAuthorization).interfaceId)) {
         | 
| 416 424 | 
             
                        revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
         | 
| 417 425 | 
             
                    }
         | 
| 418 426 |  | 
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {
         | 
| 5 | 
            -
                 ALL, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
         | 
| 5 | 
            +
                 ALL, RELEASE, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
         | 
| 6 6 | 
             
            } from "../../contracts/type/ObjectType.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| @@ -19,6 +19,7 @@ import {IPoolService} from "../pool/IPoolService.sol"; | |
| 19 19 | 
             
            import {IStakingService} from "../staking/IStakingService.sol";
         | 
| 20 20 | 
             
            import {IRegistryService} from "./IRegistryService.sol";
         | 
| 21 21 | 
             
            import {IRiskService} from "../product/IRiskService.sol";
         | 
| 22 | 
            +
             | 
| 22 23 | 
             
            import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
         | 
| 23 24 |  | 
| 24 25 |  | 
| @@ -27,27 +28,31 @@ contract ServiceAuthorizationV3 | |
| 27 28 | 
             
            {
         | 
| 28 29 |  | 
| 29 30 | 
             
                 constructor(string memory commitHash)
         | 
| 30 | 
            -
                      ServiceAuthorization( | 
| 31 | 
            +
                      ServiceAuthorization(
         | 
| 32 | 
            +
                           "ReleaseAdmin",
         | 
| 33 | 
            +
                           RELEASE(),
         | 
| 34 | 
            +
                           3,
         | 
| 35 | 
            +
                           commitHash)
         | 
| 31 36 | 
             
                 {}
         | 
| 32 37 |  | 
| 33 38 | 
             
                 function _setupDomains()
         | 
| 34 39 | 
             
                      internal
         | 
| 35 40 | 
             
                      override
         | 
| 36 41 | 
             
                 {
         | 
| 37 | 
            -
                       | 
| 38 | 
            -
                       | 
| 39 | 
            -
                       | 
| 40 | 
            -
                       | 
| 41 | 
            -
                       | 
| 42 | 
            -
                       | 
| 43 | 
            -
                       | 
| 44 | 
            -
                       | 
| 45 | 
            -
                       | 
| 46 | 
            -
                       | 
| 47 | 
            -
                       | 
| 48 | 
            -
                       | 
| 49 | 
            -
                       | 
| 50 | 
            -
                       | 
| 42 | 
            +
                      _authorizeServiceDomain(REGISTRY(), address(1));
         | 
| 43 | 
            +
                      _authorizeServiceDomain(STAKING(), address(2));
         | 
| 44 | 
            +
                      _authorizeServiceDomain(INSTANCE(), address(3));
         | 
| 45 | 
            +
                      _authorizeServiceDomain(ACCOUNTING(), address(4));
         | 
| 46 | 
            +
                      _authorizeServiceDomain(COMPONENT(), address(5));
         | 
| 47 | 
            +
                      _authorizeServiceDomain(DISTRIBUTION(), address(6));
         | 
| 48 | 
            +
                      _authorizeServiceDomain(PRICE(), address(7));
         | 
| 49 | 
            +
                      _authorizeServiceDomain(BUNDLE(), address(8));
         | 
| 50 | 
            +
                      _authorizeServiceDomain(POOL(), address(9));
         | 
| 51 | 
            +
                      _authorizeServiceDomain(ORACLE(), address(10));
         | 
| 52 | 
            +
                      _authorizeServiceDomain(RISK(), address(11));
         | 
| 53 | 
            +
                      _authorizeServiceDomain(POLICY(), address(12));
         | 
| 54 | 
            +
                      _authorizeServiceDomain(CLAIM(), address(13));
         | 
| 55 | 
            +
                      _authorizeServiceDomain(APPLICATION(), address(14));
         | 
| 51 56 | 
             
                 }
         | 
| 52 57 |  | 
| 53 58 |  | 
| @@ -55,10 +60,9 @@ contract ServiceAuthorizationV3 | |
| 55 60 | 
             
                      internal
         | 
| 56 61 | 
             
                      override
         | 
| 57 62 | 
             
                 {
         | 
| 58 | 
            -
                       | 
| 63 | 
            +
                      _setupRegistryServiceAuthorization();
         | 
| 59 64 | 
             
                      _setupStakingServiceAuthorization();
         | 
| 60 65 | 
             
                      _setupInstanceServiceAuthorization();
         | 
| 61 | 
            -
                      _setupInstanceServiceAuthorization();
         | 
| 62 66 | 
             
                      _setupAccountingServiceAuthorization();
         | 
| 63 67 | 
             
                      _setupComponentServiceAuthorization();
         | 
| 64 68 | 
             
                      _setupClaimServiceAuthorization();
         | 
| @@ -74,7 +78,7 @@ contract ServiceAuthorizationV3 | |
| 74 78 |  | 
| 75 79 | 
             
                 /// @dev registry service authorization.
         | 
| 76 80 | 
             
                 /// authorized functions MUST be implemented with a restricted modifier
         | 
| 77 | 
            -
                 function  | 
| 81 | 
            +
                 function _setupRegistryServiceAuthorization()
         | 
| 78 82 | 
             
                      internal
         | 
| 79 83 | 
             
                 {
         | 
| 80 84 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| @@ -116,12 +120,9 @@ contract ServiceAuthorizationV3 | |
| 116 120 | 
             
                      _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
         | 
| 117 121 |  | 
| 118 122 | 
             
                      functions = _authorizeForService(STAKING(), ALL());
         | 
| 119 | 
            -
                      _authorize(functions, IStakingService. | 
| 120 | 
            -
                      _authorize(functions, IStakingService. | 
| 121 | 
            -
                      _authorize(functions, IStakingService. | 
| 122 | 
            -
                      _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
         | 
| 123 | 
            -
                      _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
         | 
| 124 | 
            -
                      _authorize(functions, IStakingService.unstake.selector, "unstake");
         | 
| 123 | 
            +
                      _authorize(functions, IStakingService.createStakeObject.selector, "createStakeObject");
         | 
| 124 | 
            +
                      _authorize(functions, IStakingService.pullDipToken.selector, "pullDipToken");
         | 
| 125 | 
            +
                      _authorize(functions, IStakingService.pushDipToken.selector, "pushDipToken");
         | 
| 125 126 | 
             
                 }
         | 
| 126 127 |  | 
| 127 128 |  | 
| @@ -131,8 +132,16 @@ contract ServiceAuthorizationV3 | |
| 131 132 | 
             
                 {
         | 
| 132 133 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 133 134 | 
             
                      functions = _authorizeForService(INSTANCE(), ALL());
         | 
| 134 | 
            -
                      _authorize(functions, IInstanceService. | 
| 135 | 
            +
                      _authorize(functions, IInstanceService.createRole.selector, "createRole");
         | 
| 136 | 
            +
                      _authorize(functions, IInstanceService.setRoleActive.selector, "setRoleActive");
         | 
| 137 | 
            +
                      _authorize(functions, IInstanceService.grantRole.selector, "grantRole");
         | 
| 138 | 
            +
                      _authorize(functions, IInstanceService.revokeRole.selector, "revokeRole");
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                      _authorize(functions, IInstanceService.createTarget.selector, "createTarget");
         | 
| 141 | 
            +
                      _authorize(functions, IInstanceService.authorizeFunctions.selector, "authorizeFunctions");
         | 
| 142 | 
            +
                      _authorize(functions, IInstanceService.unauthorizeFunctions.selector, "unauthorizeFunctions");
         | 
| 135 143 | 
             
                      _authorize(functions, IInstanceService.setTargetLocked.selector, "setTargetLocked");
         | 
| 144 | 
            +
                      _authorize(functions, IInstanceService.setInstanceLocked.selector, "setInstanceLocked");
         | 
| 136 145 |  | 
| 137 146 | 
             
                      _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
         | 
| 138 147 | 
             
                      _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
         | 
| @@ -141,8 +150,8 @@ contract ServiceAuthorizationV3 | |
| 141 150 | 
             
                      _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
         | 
| 142 151 | 
             
                      _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
         | 
| 143 152 | 
             
                      _authorize(functions, IInstanceService.setStakingMaxAmount.selector, "setStakingMaxAmount");
         | 
| 144 | 
            -
                      _authorize(functions, IInstanceService. | 
| 145 | 
            -
                      _authorize(functions, IInstanceService. | 
| 153 | 
            +
                      _authorize(functions, IInstanceService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
         | 
| 154 | 
            +
                      _authorize(functions, IInstanceService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
         | 
| 146 155 | 
             
                 }
         | 
| 147 156 |  | 
| 148 157 | 
             
                 /// @dev Accounting service function authorization.
         | 
| @@ -172,6 +181,7 @@ contract ServiceAuthorizationV3 | |
| 172 181 | 
             
                      _authorize(functions, IAccountingService.decreasePoolBalance.selector, "decreasePoolBalance");
         | 
| 173 182 | 
             
                      _authorize(functions, IAccountingService.increaseBundleBalanceForPool.selector, "increaseBundleBalanceForPool");
         | 
| 174 183 | 
             
                      _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
         | 
| 184 | 
            +
                      _authorize(functions, IAccountingService.increaseProductFeesForPool.selector, "increaseProductFeesForPool");
         | 
| 175 185 |  | 
| 176 186 | 
             
                 }
         | 
| 177 187 |  | 
| @@ -203,7 +213,8 @@ contract ServiceAuthorizationV3 | |
| 203 213 | 
             
                      functions = _authorizeForService(RISK(), ALL());
         | 
| 204 214 | 
             
                      _authorize(functions, IRiskService.createRisk.selector, "createRisk");
         | 
| 205 215 | 
             
                      _authorize(functions, IRiskService.updateRisk.selector, "updateRisk");
         | 
| 206 | 
            -
                      _authorize(functions, IRiskService. | 
| 216 | 
            +
                      _authorize(functions, IRiskService.setRiskLocked.selector, "setRiskLocked");
         | 
| 217 | 
            +
                      _authorize(functions, IRiskService.closeRisk.selector, "closeRisk");
         | 
| 207 218 | 
             
                 }
         | 
| 208 219 |  | 
| 209 220 | 
             
                 /// @dev Distribution service function authorization.
         | 
| @@ -216,7 +227,7 @@ contract ServiceAuthorizationV3 | |
| 216 227 | 
             
                      _authorize(functions, IClaimService.confirm.selector, "confirm");
         | 
| 217 228 | 
             
                      _authorize(functions, IClaimService.decline.selector, "decline");
         | 
| 218 229 | 
             
                      _authorize(functions, IClaimService.revoke.selector, "revoke");
         | 
| 219 | 
            -
                      _authorize(functions, IClaimService. | 
| 230 | 
            +
                      _authorize(functions, IClaimService.cancelConfirmedClaim.selector, "cancelConfirmedClaim");
         | 
| 220 231 | 
             
                      _authorize(functions, IClaimService.createPayoutForBeneficiary.selector, "createPayoutForBeneficiary");
         | 
| 221 232 | 
             
                      _authorize(functions, IClaimService.createPayout.selector, "createPayout");
         | 
| 222 233 | 
             
                      _authorize(functions, IClaimService.processPayout.selector, "processPayout");
         | 
| @@ -283,8 +294,7 @@ contract ServiceAuthorizationV3 | |
| 283 294 | 
             
                      functions = _authorizeForService(BUNDLE(), ALL());
         | 
| 284 295 | 
             
                      _authorize(functions, IBundleService.create.selector, "create");
         | 
| 285 296 | 
             
                      _authorize(functions, IBundleService.extend.selector, "extend");
         | 
| 286 | 
            -
                      _authorize(functions, IBundleService. | 
| 287 | 
            -
                      _authorize(functions, IBundleService.unlock.selector, "unlock");
         | 
| 297 | 
            +
                      _authorize(functions, IBundleService.setLocked.selector, "setLocked");
         | 
| 288 298 | 
             
                      _authorize(functions, IBundleService.setFee.selector, "setFee");
         | 
| 289 299 | 
             
                 }
         | 
| 290 300 |  | 
| @@ -322,6 +332,7 @@ contract ServiceAuthorizationV3 | |
| 322 332 | 
             
                      _authorize(functions, IPolicyService.createPolicy.selector, "createPolicy");
         | 
| 323 333 | 
             
                      _authorize(functions, IPolicyService.collectPremium.selector, "collectPremium");
         | 
| 324 334 | 
             
                      _authorize(functions, IPolicyService.activate.selector, "activate");
         | 
| 335 | 
            +
                      _authorize(functions, IPolicyService.adjustActivation.selector, "adjustActivation");
         | 
| 325 336 | 
             
                      _authorize(functions, IPolicyService.expire.selector, "expire");
         | 
| 326 337 | 
             
                      _authorize(functions, IPolicyService.expirePolicy.selector, "expirePolicy");
         | 
| 327 338 | 
             
                      _authorize(functions, IPolicyService.close.selector, "close");
         | 
| @@ -3,15 +3,14 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 5 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 | 
            -
            import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            import {REGISTRY} from "../type/ObjectType.sol";
         | 
| 9 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 10 6 |  | 
| 11 7 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 12 8 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 13 | 
            -
            import { | 
| 9 | 
            +
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            import {ChainId, ChainIdLib} from "../type/ChainId.sol";
         | 
| 14 12 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 13 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 15 14 |  | 
| 16 15 | 
             
            /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
         | 
| 17 16 | 
             
            /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
         | 
| @@ -19,39 +18,41 @@ contract TokenRegistry is | |
| 19 18 | 
             
                AccessManaged,
         | 
| 20 19 | 
             
                IRegistryLinked
         | 
| 21 20 | 
             
            {
         | 
| 22 | 
            -
                event LogTokenRegistryTokenRegistered( | 
| 23 | 
            -
                event LogTokenRegistryTokenGlobalStateSet( | 
| 24 | 
            -
                event LogTokenRegistryTokenStateSet( | 
| 21 | 
            +
                event LogTokenRegistryTokenRegistered(ChainId chainId, address token, uint256 decimals, string symbol);
         | 
| 22 | 
            +
                event LogTokenRegistryTokenGlobalStateSet(ChainId chainId, address token, bool active);
         | 
| 23 | 
            +
                event LogTokenRegistryTokenStateSet(ChainId chainId, address token, VersionPart release, bool active);
         | 
| 25 24 |  | 
| 26 25 | 
             
                error ErrorTokenRegistryChainIdZero();
         | 
| 27 26 | 
             
                error ErrorTokenRegistryTokenAddressZero();
         | 
| 28 27 |  | 
| 29 | 
            -
                error ErrorTokenRegistryNotRemoteToken( | 
| 30 | 
            -
                error ErrorTokenRegistryTokenAlreadyRegistered( | 
| 31 | 
            -
                error ErrorTokenRegistryTokenNotContract( | 
| 32 | 
            -
                error ErrorTokenRegistryTokenNotErc20( | 
| 28 | 
            +
                error ErrorTokenRegistryNotRemoteToken(ChainId chainId, address token);
         | 
| 29 | 
            +
                error ErrorTokenRegistryTokenAlreadyRegistered(ChainId chainId, address token);
         | 
| 30 | 
            +
                error ErrorTokenRegistryTokenNotContract(ChainId chainId, address token);
         | 
| 31 | 
            +
                error ErrorTokenRegistryTokenNotErc20(ChainId chainId, address token);
         | 
| 33 32 |  | 
| 34 | 
            -
                error ErrorTokenRegistryTokenNotRegistered( | 
| 35 | 
            -
                error ErrorTokenRegistryMajorVersionInvalid(VersionPart  | 
| 33 | 
            +
                error ErrorTokenRegistryTokenNotRegistered(ChainId chainId, address token);
         | 
| 34 | 
            +
                error ErrorTokenRegistryMajorVersionInvalid(VersionPart release);
         | 
| 36 35 |  | 
| 37 36 | 
             
                struct TokenInfo {
         | 
| 38 | 
            -
                     | 
| 39 | 
            -
                     | 
| 40 | 
            -
                     | 
| 41 | 
            -
                     | 
| 37 | 
            +
                    // slot 0
         | 
| 38 | 
            +
                    ChainId chainId; // 96
         | 
| 39 | 
            +
                    address token; // 20
         | 
| 40 | 
            +
                    uint8 decimals; // 8
         | 
| 42 41 | 
             
                    bool active;
         | 
| 42 | 
            +
                    // slot 1
         | 
| 43 | 
            +
                    string symbol;
         | 
| 43 44 | 
             
                }
         | 
| 44 45 |  | 
| 45 | 
            -
                mapping( | 
| 46 | 
            -
                mapping( | 
| 46 | 
            +
                mapping(ChainId chainId => mapping(address token => TokenInfo info)) internal _tokenInfo;
         | 
| 47 | 
            +
                mapping(ChainId chainId => mapping(address token => mapping(VersionPart release => bool isActive))) internal _active;
         | 
| 47 48 | 
             
                TokenInfo [] internal _token;
         | 
| 48 49 |  | 
| 49 50 | 
             
                IRegistry internal _registry;
         | 
| 50 | 
            -
                 | 
| 51 | 
            +
                ChainId internal _chainId = ChainIdLib.current();
         | 
| 51 52 | 
             
                IERC20Metadata internal _dipToken;
         | 
| 52 53 |  | 
| 53 54 | 
             
                /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
         | 
| 54 | 
            -
                modifier onlyRegisteredToken( | 
| 55 | 
            +
                modifier onlyRegisteredToken(ChainId chainId, address token) {
         | 
| 55 56 | 
             
                    if (!isRegistered(chainId, token)) {
         | 
| 56 57 | 
             
                        revert ErrorTokenRegistryTokenNotRegistered(chainId, token);
         | 
| 57 58 | 
             
                    }
         | 
| @@ -66,12 +67,13 @@ contract TokenRegistry is | |
| 66 67 | 
             
                    setAuthority(authority);
         | 
| 67 68 |  | 
| 68 69 | 
             
                    _registry = registry;
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    // TODO deal with chains without a dip token
         | 
| 69 72 | 
             
                    _dipToken = _verifyOnchainToken(address(dipToken));
         | 
| 70 73 |  | 
| 71 74 | 
             
                    // register dip token
         | 
| 72 | 
            -
                    uint256 chainId = block.chainid;
         | 
| 73 75 | 
             
                    _registerToken(
         | 
| 74 | 
            -
                         | 
| 76 | 
            +
                        _chainId, 
         | 
| 75 77 | 
             
                        address(_dipToken), 
         | 
| 76 78 | 
             
                        _dipToken.decimals(), 
         | 
| 77 79 | 
             
                        _dipToken.symbol());
         | 
| @@ -85,15 +87,18 @@ contract TokenRegistry is | |
| 85 87 | 
             
                    external
         | 
| 86 88 | 
             
                    restricted()
         | 
| 87 89 | 
             
                {
         | 
| 90 | 
            +
                    // checks
         | 
| 88 91 | 
             
                    IERC20Metadata token = _verifyOnchainToken(tokenAddress);
         | 
| 89 | 
            -
             | 
| 92 | 
            +
             | 
| 93 | 
            +
                    // effects
         | 
| 94 | 
            +
                    _registerToken(_chainId, tokenAddress, token.decimals(), token.symbol());
         | 
| 90 95 | 
             
                }
         | 
| 91 96 |  | 
| 92 97 |  | 
| 93 98 | 
             
                /// @dev register the remote token with the provided attributes.
         | 
| 94 99 | 
             
                /// this function may not be used for tokens when chainId == block.chainid.
         | 
| 95 100 | 
             
                function registerRemoteToken(
         | 
| 96 | 
            -
                     | 
| 101 | 
            +
                    ChainId chainId,
         | 
| 97 102 | 
             
                    address token,
         | 
| 98 103 | 
             
                    uint8 decimals,
         | 
| 99 104 | 
             
                    string memory symbol
         | 
| @@ -101,7 +106,7 @@ contract TokenRegistry is | |
| 101 106 | 
             
                    external
         | 
| 102 107 | 
             
                    restricted()
         | 
| 103 108 | 
             
                {
         | 
| 104 | 
            -
                    if (chainId ==  | 
| 109 | 
            +
                    if (chainId == _chainId) {
         | 
| 105 110 | 
             
                        revert ErrorTokenRegistryNotRemoteToken(chainId, token);
         | 
| 106 111 | 
             
                    }
         | 
| 107 112 |  | 
| @@ -113,7 +118,7 @@ contract TokenRegistry is | |
| 113 118 | 
             
                /// when setting a token to active=false isActive will return false
         | 
| 114 119 | 
             
                /// regardless of release specific active value.
         | 
| 115 120 | 
             
                function setActive(
         | 
| 116 | 
            -
                     | 
| 121 | 
            +
                    ChainId chainId, 
         | 
| 117 122 | 
             
                    address token, 
         | 
| 118 123 | 
             
                    bool active
         | 
| 119 124 | 
             
                )
         | 
| @@ -126,32 +131,32 @@ contract TokenRegistry is | |
| 126 131 | 
             
                }
         | 
| 127 132 |  | 
| 128 133 |  | 
| 129 | 
            -
                /// @dev sets active state for specified token and major version.
         | 
| 134 | 
            +
                /// @dev sets active state for specified token and release (major version).
         | 
| 130 135 | 
             
                /// internally calls setActiveWithVersionCheck() with enforcing version check.
         | 
| 131 136 | 
             
                /// token state is informative, registry have no clue about used tokens
         | 
| 132 137 | 
             
                /// component owner is responsible for token selection and operations
         | 
| 133 138 | 
             
                /// service MUST deny registration of component with inactive token.
         | 
| 134 139 | 
             
                function setActiveForVersion(
         | 
| 135 | 
            -
                     | 
| 140 | 
            +
                    ChainId chainId, 
         | 
| 136 141 | 
             
                    address token, 
         | 
| 137 | 
            -
                    VersionPart  | 
| 142 | 
            +
                    VersionPart release, 
         | 
| 138 143 | 
             
                    bool active
         | 
| 139 144 | 
             
                )
         | 
| 140 145 | 
             
                    external
         | 
| 141 146 | 
             
                    restricted()
         | 
| 142 147 | 
             
                    onlyRegisteredToken(chainId, token)
         | 
| 143 148 | 
             
                {
         | 
| 144 | 
            -
                    _setActiveWithVersionCheck(chainId, token,  | 
| 149 | 
            +
                    _setActiveWithVersionCheck(chainId, token, release, active, true);
         | 
| 145 150 | 
             
                }
         | 
| 146 151 |  | 
| 147 152 |  | 
| 148 153 | 
             
                /// @dev as setActiveForVersion() with the option to skip the version check.
         | 
| 149 154 | 
             
                /// enforcing the version check checks if the provided major version with the release manager. 
         | 
| 150 | 
            -
                /// the function reverts if the provided  | 
| 155 | 
            +
                /// the function reverts if the provided release is unknown to the release manager.
         | 
| 151 156 | 
             
                function setActiveWithVersionCheck(
         | 
| 152 | 
            -
                     | 
| 157 | 
            +
                    ChainId chainId, 
         | 
| 153 158 | 
             
                    address token, 
         | 
| 154 | 
            -
                    VersionPart  | 
| 159 | 
            +
                    VersionPart release, 
         | 
| 155 160 | 
             
                    bool active,
         | 
| 156 161 | 
             
                    bool enforceVersionCheck
         | 
| 157 162 | 
             
                )
         | 
| @@ -159,14 +164,14 @@ contract TokenRegistry is | |
| 159 164 | 
             
                    restricted()
         | 
| 160 165 | 
             
                    onlyRegisteredToken(chainId, token)
         | 
| 161 166 | 
             
                {
         | 
| 162 | 
            -
                    _setActiveWithVersionCheck(chainId, token,  | 
| 167 | 
            +
                    _setActiveWithVersionCheck(chainId, token, release, active, enforceVersionCheck);
         | 
| 163 168 | 
             
                }
         | 
| 164 169 |  | 
| 165 170 |  | 
| 166 171 | 
             
                function _setActiveWithVersionCheck(
         | 
| 167 | 
            -
                     | 
| 172 | 
            +
                    ChainId chainId, 
         | 
| 168 173 | 
             
                    address token, 
         | 
| 169 | 
            -
                    VersionPart  | 
| 174 | 
            +
                    VersionPart release, 
         | 
| 170 175 | 
             
                    bool active,
         | 
| 171 176 | 
             
                    bool enforceVersionCheck
         | 
| 172 177 | 
             
                )
         | 
| @@ -174,15 +179,15 @@ contract TokenRegistry is | |
| 174 179 | 
             
                {
         | 
| 175 180 | 
             
                    // verify valid major version
         | 
| 176 181 | 
             
                    if(enforceVersionCheck) {
         | 
| 177 | 
            -
                        uint256 version =  | 
| 178 | 
            -
                        if (!getRegistry().isActiveRelease( | 
| 179 | 
            -
                            revert ErrorTokenRegistryMajorVersionInvalid( | 
| 182 | 
            +
                        uint256 version = release.toInt();
         | 
| 183 | 
            +
                        if (!getRegistry().isActiveRelease(release)) {
         | 
| 184 | 
            +
                            revert ErrorTokenRegistryMajorVersionInvalid(release);
         | 
| 180 185 | 
             
                        }
         | 
| 181 186 | 
             
                    }
         | 
| 182 187 |  | 
| 183 | 
            -
                    _active[chainId][token][ | 
| 188 | 
            +
                    _active[chainId][token][release] = active;
         | 
| 184 189 |  | 
| 185 | 
            -
                    emit LogTokenRegistryTokenStateSet(chainId, token,  | 
| 190 | 
            +
                    emit LogTokenRegistryTokenStateSet(chainId, token, release, active);
         | 
| 186 191 | 
             
                }
         | 
| 187 192 |  | 
| 188 193 | 
             
                /// @dev returns the dip token for this chain
         | 
| @@ -201,17 +206,17 @@ contract TokenRegistry is | |
| 201 206 | 
             
                }
         | 
| 202 207 |  | 
| 203 208 | 
             
                /// @dev returns the token info for the specified token coordinates.
         | 
| 204 | 
            -
                function getTokenInfo( | 
| 209 | 
            +
                function getTokenInfo(ChainId chainId, address token) external view returns (TokenInfo memory tokenInfo) {
         | 
| 205 210 | 
             
                    return _tokenInfo[chainId][token];
         | 
| 206 211 | 
             
                }
         | 
| 207 212 |  | 
| 208 213 | 
             
                /// @dev returns true iff the specified token has been registered for this TokenRegistry contract.
         | 
| 209 | 
            -
                function isRegistered( | 
| 210 | 
            -
                    return _tokenInfo[chainId][token].chainId | 
| 214 | 
            +
                function isRegistered(ChainId chainId, address token) public view returns (bool) {
         | 
| 215 | 
            +
                    return _tokenInfo[chainId][token].chainId.gtz();
         | 
| 211 216 | 
             
                }
         | 
| 212 217 |  | 
| 213 218 | 
             
                /// @dev returns true iff both the token is active for the specfied release and the global token state is active
         | 
| 214 | 
            -
                function isActive( | 
| 219 | 
            +
                function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool) {
         | 
| 215 220 | 
             
                    if(!_tokenInfo[chainId][token].active) {
         | 
| 216 221 | 
             
                        return false;
         | 
| 217 222 | 
             
                    }
         | 
| @@ -242,16 +247,15 @@ contract TokenRegistry is | |
| 242 247 | 
             
                    returns (IERC20Metadata token)
         | 
| 243 248 | 
             
                {
         | 
| 244 249 | 
             
                    token = IERC20Metadata(tokenAddress);
         | 
| 245 | 
            -
                    uint256 chainId = block.chainid;
         | 
| 246 250 |  | 
| 247 251 | 
             
                    // MUST be contract
         | 
| 248 252 | 
             
                    if(tokenAddress.code.length == 0) {
         | 
| 249 | 
            -
                        revert ErrorTokenRegistryTokenNotContract( | 
| 253 | 
            +
                        revert ErrorTokenRegistryTokenNotContract(ChainIdLib.current(), tokenAddress);
         | 
| 250 254 | 
             
                    }
         | 
| 251 255 |  | 
| 252 256 | 
             
                    // MUST implement required erc20 view functions
         | 
| 253 257 | 
             
                    if(!_implementsErc20Functions(token)) {
         | 
| 254 | 
            -
                        revert ErrorTokenRegistryTokenNotErc20( | 
| 258 | 
            +
                        revert ErrorTokenRegistryTokenNotErc20(ChainIdLib.current(), tokenAddress);
         | 
| 255 259 | 
             
                    }
         | 
| 256 260 | 
             
                }
         | 
| 257 261 |  | 
| @@ -284,13 +288,13 @@ contract TokenRegistry is | |
| 284 288 | 
             
                /// - token not yet registered
         | 
| 285 289 | 
             
                /// - chainId not zero
         | 
| 286 290 | 
             
                /// - token address not zero
         | 
| 287 | 
            -
                function _registerToken( | 
| 291 | 
            +
                function _registerToken(ChainId chainId, address token, uint8 decimals, string memory symbol) internal {
         | 
| 288 292 |  | 
| 289 293 | 
             
                    if (isRegistered(chainId, token)) {
         | 
| 290 294 | 
             
                        revert ErrorTokenRegistryTokenAlreadyRegistered(chainId, token);
         | 
| 291 295 | 
             
                    }
         | 
| 292 296 |  | 
| 293 | 
            -
                    if(chainId | 
| 297 | 
            +
                    if(chainId.eqz()) {
         | 
| 294 298 | 
             
                        revert ErrorTokenRegistryChainIdZero();
         | 
| 295 299 | 
             
                    }
         | 
| 296 300 |  | 
| @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 6 |  | 
| 7 | 
            -
            import {Amount} from "../type/Amount.sol";
         | 
| 7 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 8 8 | 
             
            import {IComponent} from "./IComponent.sol";
         | 
| 9 9 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 10 10 | 
             
            import {IComponentService} from "./IComponentService.sol";
         | 
| @@ -25,7 +25,6 @@ abstract contract Component is | |
| 25 25 | 
             
                struct ComponentStorage {
         | 
| 26 26 | 
             
                    string _name; // unique (per instance) component name
         | 
| 27 27 | 
             
                    bool _isInterceptor;
         | 
| 28 | 
            -
                    bytes _data;
         | 
| 29 28 | 
             
                    IComponentService _componentService;
         | 
| 30 29 | 
             
                }
         | 
| 31 30 |  | 
| @@ -46,7 +45,7 @@ abstract contract Component is | |
| 46 45 | 
             
                }
         | 
| 47 46 |  | 
| 48 47 |  | 
| 49 | 
            -
                function  | 
| 48 | 
            +
                function __Component_init(
         | 
| 50 49 | 
             
                    address authority,
         | 
| 51 50 | 
             
                    address registry,
         | 
| 52 51 | 
             
                    NftId parentNftId,
         | 
| @@ -54,8 +53,7 @@ abstract contract Component is | |
| 54 53 | 
             
                    ObjectType componentType,
         | 
| 55 54 | 
             
                    bool isInterceptor,
         | 
| 56 55 | 
             
                    address initialOwner,
         | 
| 57 | 
            -
                    bytes memory registryData | 
| 58 | 
            -
                    bytes memory componentData // other component specific data
         | 
| 56 | 
            +
                    bytes memory registryData // writeonly data that will saved in the object info record of the registry
         | 
| 59 57 | 
             
                )
         | 
| 60 58 | 
             
                    internal
         | 
| 61 59 | 
             
                    virtual
         | 
| @@ -78,7 +76,6 @@ abstract contract Component is | |
| 78 76 | 
             
                    ComponentStorage storage $ = _getComponentStorage();
         | 
| 79 77 | 
             
                    $._name = name;
         | 
| 80 78 | 
             
                    $._isInterceptor = isInterceptor;
         | 
| 81 | 
            -
                    $._data = componentData;
         | 
| 82 79 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 83 80 |  | 
| 84 81 | 
             
                    _registerInterface(type(IAccessManaged).interfaceId);
         | 
| @@ -152,7 +149,11 @@ abstract contract Component is | |
| 152 149 | 
             
                function _approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 153 150 | 
             
                    internal
         | 
| 154 151 | 
             
                    virtual
         | 
| 152 | 
            +
                    returns (Amount oldAllowanceAmount)
         | 
| 155 153 | 
             
                {
         | 
| 154 | 
            +
                    oldAllowanceAmount = AmountLib.toAmount(
         | 
| 155 | 
            +
                        token.allowance(address(getTokenHandler()), address(this)));
         | 
| 156 | 
            +
             | 
| 156 157 | 
             
                    _getComponentStorage()._componentService.approveTokenHandler(
         | 
| 157 158 | 
             
                        token, 
         | 
| 158 159 | 
             
                        amount);
         | 
| @@ -197,8 +198,7 @@ abstract contract Component is | |
| 197 198 |  | 
| 198 199 | 
             
                    return IComponents.ComponentInfo({
         | 
| 199 200 | 
             
                        name: $._name,
         | 
| 200 | 
            -
                        tokenHandler: TokenHandler(address(0)) | 
| 201 | 
            -
                        data: $._data // user specific component data
         | 
| 201 | 
            +
                        tokenHandler: TokenHandler(address(0))
         | 
| 202 202 | 
             
                    });
         | 
| 203 203 | 
             
                }
         | 
| 204 204 |  |