@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
| @@ -0,0 +1,93 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {IBaseStore} from "./IBaseStore.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 7 | 
            +
            import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
         | 
| 8 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 9 | 
            +
            import {StateId, KEEP_STATE} from "../type/StateId.sol";
         | 
| 10 | 
            +
            import {Lifecycle} from "../shared/Lifecycle.sol";
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            abstract contract BaseStore is
         | 
| 13 | 
            +
                Lifecycle, 
         | 
| 14 | 
            +
                IBaseStore
         | 
| 15 | 
            +
            {
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                mapping(Key32 key32 => IBaseStore.Metadata metadata) private _metadata;
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                function _createMetadata(
         | 
| 20 | 
            +
                    Key32 key32
         | 
| 21 | 
            +
                )
         | 
| 22 | 
            +
                    internal
         | 
| 23 | 
            +
                {
         | 
| 24 | 
            +
                    ObjectType objectType = key32.toObjectType();
         | 
| 25 | 
            +
                    if (objectType.eqz()) {
         | 
| 26 | 
            +
                        revert ErrorBaseStoreTypeUndefined(objectType);
         | 
| 27 | 
            +
                    }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    Metadata storage metadata = _metadata[key32];
         | 
| 30 | 
            +
                    if (metadata.updatedIn.gtz()) {
         | 
| 31 | 
            +
                        revert ErrorBaseStoreAlreadyCreated(key32, objectType);
         | 
| 32 | 
            +
                    }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    if(!hasLifecycle(objectType)) {
         | 
| 35 | 
            +
                        revert ErrorBaseStoreNoLifecycle(objectType);
         | 
| 36 | 
            +
                    }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    Blocknumber blocknumber = BlocknumberLib.current();
         | 
| 39 | 
            +
                    StateId initialState = getInitialState(objectType);
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    // set metadata
         | 
| 42 | 
            +
                    metadata.objectType = objectType;
         | 
| 43 | 
            +
                    metadata.state = initialState;
         | 
| 44 | 
            +
                    metadata.updatedIn = blocknumber;
         | 
| 45 | 
            +
                }
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                function _updateState(
         | 
| 48 | 
            +
                    Key32 key32, 
         | 
| 49 | 
            +
                    StateId state
         | 
| 50 | 
            +
                )
         | 
| 51 | 
            +
                    internal
         | 
| 52 | 
            +
                    returns (Blocknumber lastUpdatedIn, StateId oldState)
         | 
| 53 | 
            +
                {
         | 
| 54 | 
            +
                    if (state.eqz()) {
         | 
| 55 | 
            +
                        revert ErrorBaseStoreStateZero(key32);
         | 
| 56 | 
            +
                    }
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    Metadata storage metadata = _metadata[key32];
         | 
| 59 | 
            +
                    oldState = metadata.state;
         | 
| 60 | 
            +
                    lastUpdatedIn = metadata.updatedIn;
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                    if (oldState.eqz()) {
         | 
| 63 | 
            +
                        revert ErrorBaseStoreNotExisting(key32);
         | 
| 64 | 
            +
                    }
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    // update state 
         | 
| 67 | 
            +
                    if(state != KEEP_STATE()) {
         | 
| 68 | 
            +
                        checkTransition(oldState, metadata.objectType, oldState, state);
         | 
| 69 | 
            +
                        metadata.state = state;
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                        // solhint-disable-next-line avoid-tx-origin
         | 
| 72 | 
            +
                    }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    // update metadata
         | 
| 75 | 
            +
                    metadata.updatedIn = BlocknumberLib.current();
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                function exists(Key32 key32) public view returns (bool) {
         | 
| 79 | 
            +
                    return _metadata[key32].state.gtz();
         | 
| 80 | 
            +
                }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
         | 
| 83 | 
            +
                    return _metadata[key32];
         | 
| 84 | 
            +
                }
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                function getState(Key32 key32) public view returns (StateId state) {
         | 
| 87 | 
            +
                    return _metadata[key32].state;
         | 
| 88 | 
            +
                }
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
         | 
| 91 | 
            +
                    return Key32Lib.toKey32(objectType, id);
         | 
| 92 | 
            +
                }
         | 
| 93 | 
            +
            }
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {ILifecycle} from "../shared/ILifecycle.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import {Blocknumber} from "../type/Blocknumber.sol";
         | 
| 7 | 
            +
            import {Key32, KeyId} from "../type/Key32.sol";
         | 
| 8 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 9 | 
            +
            import {StateId} from "../type/StateId.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            interface IBaseStore is ILifecycle {
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                error ErrorBaseStoreTypeUndefined(ObjectType objectType);
         | 
| 15 | 
            +
                error ErrorBaseStoreAlreadyCreated(Key32 key, ObjectType objectType);
         | 
| 16 | 
            +
                error ErrorBaseStoreNoLifecycle(ObjectType objectType);
         | 
| 17 | 
            +
                error ErrorBaseStoreStateZero(Key32 key);
         | 
| 18 | 
            +
                error ErrorBaseStoreNotExisting(Key32 key);
         | 
| 19 | 
            +
             | 
| 20 | 
            +
             | 
| 21 | 
            +
                struct Metadata {
         | 
| 22 | 
            +
                    // slot 0
         | 
| 23 | 
            +
                    ObjectType objectType;
         | 
| 24 | 
            +
                    StateId state;
         | 
| 25 | 
            +
                    Blocknumber updatedIn;
         | 
| 26 | 
            +
                }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                /// @dev check if a metadata entry with the key exists
         | 
| 29 | 
            +
                function exists(Key32 key) external view returns (bool);
         | 
| 30 | 
            +
                /// @dev retrieve the metadata for a given key
         | 
| 31 | 
            +
                function getMetadata(Key32 key) external view returns (Metadata memory metadata);
         | 
| 32 | 
            +
                /// @dev retrieve the state for a given key
         | 
| 33 | 
            +
                function getState(Key32 key) external view returns (StateId state);
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                /// @dev convert an object type and an id to a key32
         | 
| 36 | 
            +
                function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
         | 
| 37 | 
            +
            }
         | 
| @@ -1,14 +1,17 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 5 | 
            +
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 6 | 
            +
             | 
| 4 7 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 8 | 
             
            import {BundleSet} from "./BundleSet.sol";
         | 
| 6 9 | 
             
            import {RiskSet} from "./RiskSet.sol";
         | 
| 7 10 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| 8 11 | 
             
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 9 12 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 10 | 
            -
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 11 13 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 | 
            +
            import {ProductStore} from "./ProductStore.sol";
         | 
| 12 15 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 13 16 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 14 17 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| @@ -17,6 +20,21 @@ import {UFixed} from "../type/UFixed.sol"; | |
| 17 20 | 
             
            interface IInstance is 
         | 
| 18 21 | 
             
                IRegisterable
         | 
| 19 22 | 
             
            {
         | 
| 23 | 
            +
                // role handling
         | 
| 24 | 
            +
                event LogInstanceCustomRoleCreated(RoleId roleId, string roleName, RoleId adminRoleId, uint32 maxMemberCount);
         | 
| 25 | 
            +
                event LogInstanceCustomRoleActiveSet(RoleId roleId, bool active, address caller);
         | 
| 26 | 
            +
                event LogInstanceCustomRoleGranted(RoleId roleId, address account, address caller);
         | 
| 27 | 
            +
                event LogInstanceCustomRoleRevoked(RoleId roleId, address account, address caller);
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                // target handling
         | 
| 30 | 
            +
                event LogInstanceCustomTargetCreated(address target, RoleId targetRoleId, string name);
         | 
| 31 | 
            +
                event LogInstanceTargetLocked(address target, bool locked);
         | 
| 32 | 
            +
                event LogInstanceCustomTargetFunctionRoleSet(address target, bytes4[] selectors, RoleId roleId);
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                // modifier is onlyRoleAdmin
         | 
| 35 | 
            +
                error ErrorInstanceNotCustomRole(RoleId roleId);
         | 
| 36 | 
            +
                error ErrorInstanceNotRoleAdmin(RoleId roleId, address account);
         | 
| 37 | 
            +
             | 
| 20 38 | 
             
                error ErrorInstanceInstanceAdminZero();
         | 
| 21 39 | 
             
                error ErrorInstanceInstanceAdminAlreadySet(address instanceAdmin);
         | 
| 22 40 | 
             
                error ErrorInstanceInstanceAdminAuthorityMismatch(address instanceAuthority);
         | 
| @@ -34,6 +52,15 @@ interface IInstance is | |
| 34 52 | 
             
                error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
         | 
| 35 53 | 
             
                error ErrorInstanceInstanceStoreAuthorityMismatch(address instanceAuthority);
         | 
| 36 54 |  | 
| 55 | 
            +
                struct InstanceContracts {
         | 
| 56 | 
            +
                    InstanceAdmin instanceAdmin;
         | 
| 57 | 
            +
                    InstanceStore instanceStore;
         | 
| 58 | 
            +
                    ProductStore productStore;
         | 
| 59 | 
            +
                    BundleSet bundleSet;
         | 
| 60 | 
            +
                    RiskSet riskSet;
         | 
| 61 | 
            +
                    InstanceReader instanceReader;
         | 
| 62 | 
            +
                }
         | 
| 63 | 
            +
             | 
| 37 64 | 
             
                struct InstanceInfo {
         | 
| 38 65 | 
             
                    uint64 requestsCount;
         | 
| 39 66 | 
             
                }
         | 
| @@ -62,7 +89,7 @@ interface IInstance is | |
| 62 89 | 
             
                function setStakingMaxAmount(Amount maxStakedAmount) external;
         | 
| 63 90 |  | 
| 64 91 | 
             
                /// @dev Refills the staking reward reserves for the specified target.
         | 
| 65 | 
            -
                function refillStakingRewardReserves(Amount dipAmount) external;
         | 
| 92 | 
            +
                function refillStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         | 
| 66 93 |  | 
| 67 94 | 
             
                /// @dev Defunds the staking reward reserves for the specified target.
         | 
| 68 95 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         | 
| @@ -77,12 +104,34 @@ interface IInstance is | |
| 77 104 |  | 
| 78 105 | 
             
                ///--- authz ------------------------------------------------------------//
         | 
| 79 106 |  | 
| 80 | 
            -
                 | 
| 107 | 
            +
                /// @dev Creates a new custom role for the calling instance.
         | 
| 108 | 
            +
                /// Custom roles are intended to be used for access control of custom components and its helper contracts.
         | 
| 109 | 
            +
                /// Custom roles are not intended to be used as target roles for custom contracts.
         | 
| 110 | 
            +
                function createRole(string memory roleName, RoleId adminRoleId, uint32 maxMemberCount) external returns (RoleId roleId);
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                /// @dev Activates/deactivates the specified role.
         | 
| 113 | 
            +
                /// Only instance owner or account with role admin role can call this function.
         | 
| 114 | 
            +
                function setRoleActive(RoleId roleId, bool active) external;
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                /// @dev Grants the specified role to the account.
         | 
| 117 | 
            +
                /// Only active roles can be granted.
         | 
| 118 | 
            +
                /// Only instance owner or account with role admin role can call this function.
         | 
| 81 119 | 
             
                function grantRole(RoleId roleId, address account) external;
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                /// @dev Revokes the specified role from the account.
         | 
| 122 | 
            +
                /// Only instance owner or account with role admin role can call this function.
         | 
| 82 123 | 
             
                function revokeRole(RoleId roleId, address account) external;
         | 
| 83 124 |  | 
| 84 | 
            -
                 | 
| 85 | 
            -
                 | 
| 125 | 
            +
                /// @dev Creates a new custom target.
         | 
| 126 | 
            +
                /// Custom targets are intended to be used for access control helper contracts of components.
         | 
| 127 | 
            +
                /// Custom targets are not intended to be used for components.
         | 
| 128 | 
            +
                function createTarget(address target, string memory name) external returns (RoleId contractRoleId);
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                /// @dev Authorizes the specified functions for the target and provided role.
         | 
| 131 | 
            +
                function authorizeFunctions(address target, RoleId roleId, IAccess.FunctionInfo[] memory functions) external;
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                /// @dev Removes any role authorization for the specified functions.
         | 
| 134 | 
            +
                function unauthorizeFunctions(address target, IAccess.FunctionInfo[] memory functions) external;
         | 
| 86 135 |  | 
| 87 136 | 
             
                //--- getters -----------------------------------------------------------//
         | 
| 88 137 |  | 
| @@ -102,5 +151,6 @@ interface IInstance is | |
| 102 151 | 
             
                function getRiskSet() external view returns (RiskSet);
         | 
| 103 152 | 
             
                function getInstanceAdmin() external view returns (InstanceAdmin);
         | 
| 104 153 | 
             
                function getInstanceStore() external view returns (InstanceStore);
         | 
| 154 | 
            +
                function getProductStore() external view returns (ProductStore);
         | 
| 105 155 | 
             
                function isTokenRegistryDisabled() external view returns (bool);
         | 
| 106 156 | 
             
            }
         | 
| @@ -1,11 +1,14 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 5 5 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 6 6 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 7 9 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 8 10 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 11 | 
            +
            import {RoleId} from "../type/RoleId.sol";
         | 
| 9 12 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 10 13 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 11 14 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| @@ -36,6 +39,7 @@ interface IInstanceService is IService { | |
| 36 39 | 
             
                error ErrorInstanceServiceBundleSetZero();
         | 
| 37 40 | 
             
                error ErrorInstanceServiceRiskSetZero();
         | 
| 38 41 | 
             
                error ErrorInstanceServiceInstanceStoreZero();
         | 
| 42 | 
            +
                error ErrorInstanceServiceProductStoreZero();
         | 
| 39 43 |  | 
| 40 44 | 
             
                error ErrorInstanceServiceInstanceAuthorityMismatch();
         | 
| 41 45 | 
             
                error ErrorInstanceServiceBundleSetAuthorityMismatch();
         | 
| @@ -44,6 +48,7 @@ interface IInstanceService is IService { | |
| 44 48 | 
             
                error ErrorInstanceServiceBundleSetInstanceMismatch();
         | 
| 45 49 | 
             
                error ErrorInstanceServiceRiskSetInstanceMismatch();
         | 
| 46 50 | 
             
                error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
         | 
| 51 | 
            +
                error ErrorInstanceServiceProductStoreAuthorityMismatch();
         | 
| 47 52 |  | 
| 48 53 | 
             
                error ErrorInstanceServiceRequestUnauhorized(address caller);
         | 
| 49 54 | 
             
                error ErrorInstanceServiceNotInstanceNftId(NftId nftId);
         | 
| @@ -51,14 +56,39 @@ interface IInstanceService is IService { | |
| 51 56 | 
             
                error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
         | 
| 52 57 | 
             
                error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
         | 
| 53 58 |  | 
| 54 | 
            -
                event  | 
| 59 | 
            +
                event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
         | 
| 60 | 
            +
                event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
         | 
| 61 | 
            +
                event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
         | 
| 62 | 
            +
                event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
         | 
| 55 63 |  | 
| 56 | 
            -
                /// @dev  | 
| 57 | 
            -
                function  | 
| 64 | 
            +
                /// @dev Creates a new custom role for the calling instance.
         | 
| 65 | 
            +
                function createRole(string memory roleName, RoleId adminRoleId, uint32 maxMemberCount) external returns (RoleId roleId);
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                /// @dev Sets the specified custom role as active or inactive for the calling instance.
         | 
| 68 | 
            +
                function setRoleActive(RoleId roleId, bool active) external;
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                /// @dev Grants the specified custom role to the specified account for the calling instance.
         | 
| 71 | 
            +
                function grantRole(RoleId roleId, address account) external; 
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                /// @dev Revokes the specified custom role from the specified account for the calling instance.
         | 
| 74 | 
            +
                function revokeRole(RoleId roleId, address account) external; 
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                /// @dev Creates a new custom target for the calling instance.
         | 
| 77 | 
            +
                /// All custom trargets are created with a corresponding contract role.
         | 
| 78 | 
            +
                function createTarget(address target, string memory name) external returns (RoleId contractRoleId);
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                /// @dev Authorizes the specified functions for the specified target.
         | 
| 81 | 
            +
                function authorizeFunctions(address target, RoleId roleId, IAccess.FunctionInfo[] memory functions) external; 
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                /// @dev Removes any role authorization for the specified functions.
         | 
| 84 | 
            +
                function unauthorizeFunctions(address target, IAccess.FunctionInfo[] memory functions) external;
         | 
| 58 85 |  | 
| 59 86 | 
             
                /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
         | 
| 60 87 | 
             
                function setTargetLocked(address target, bool locked) external;
         | 
| 61 88 |  | 
| 89 | 
            +
                /// @dev Locks the complete instance, including all its components.
         | 
| 90 | 
            +
                function setInstanceLocked(bool locked) external;
         | 
| 91 | 
            +
             | 
| 62 92 | 
             
                /// @dev Creates a new instance.
         | 
| 63 93 | 
             
                /// The caller becomes the owner of the new instance.
         | 
| 64 94 | 
             
                /// Creation of a new instance is achieved by this service through the creation and registration 
         | 
| @@ -81,8 +111,9 @@ interface IInstanceService is IService { | |
| 81 111 | 
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         | 
| 82 112 | 
             
                function setStakingRewardRate(UFixed rewardRate) external;
         | 
| 83 113 | 
             
                function setStakingMaxAmount(Amount maxStakedAmount) external;
         | 
| 84 | 
            -
             | 
| 114 | 
            +
             | 
| 115 | 
            +
                function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
         | 
| 85 116 |  | 
| 86 117 | 
             
                /// @dev Defunds the staking reward reserves for the specified target.
         | 
| 87 | 
            -
                function  | 
| 118 | 
            +
                function withdrawInstanceRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         | 
| 88 119 | 
             
            }
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 4 5 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 5 6 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 6 7 | 
             
            import {IInstanceService} from "./IInstanceService.sol";
         | 
| @@ -14,6 +15,7 @@ import {InstanceReader} from "./InstanceReader.sol"; | |
| 14 15 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| 15 16 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 16 17 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 18 | 
            +
            import {ProductStore} from "./ProductStore.sol";
         | 
| 17 19 | 
             
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 18 20 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 19 21 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| @@ -34,56 +36,65 @@ contract Instance is | |
| 34 36 | 
             
                BundleSet internal _bundleSet;
         | 
| 35 37 | 
             
                RiskSet internal _riskSet;
         | 
| 36 38 | 
             
                InstanceStore internal _instanceStore;
         | 
| 39 | 
            +
                ProductStore internal _productStore;
         | 
| 37 40 | 
             
                NftId [] internal _products;
         | 
| 38 41 | 
             
                bool internal _tokenRegistryDisabled;
         | 
| 39 42 |  | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            +
             | 
| 44 | 
            +
                modifier onlyCustomRoleAdmin(RoleId roleId) {
         | 
| 45 | 
            +
                    if (!_instanceAdmin.isRoleCustom(roleId)) {
         | 
| 46 | 
            +
                        revert ErrorInstanceNotCustomRole(roleId);
         | 
| 47 | 
            +
                    }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    // instance owner can always act as role admin
         | 
| 50 | 
            +
                    address account = msg.sender;
         | 
| 51 | 
            +
                    if (account != getOwner()) {
         | 
| 52 | 
            +
                        if (!_instanceAdmin.isRoleAdmin(roleId, account)) {
         | 
| 53 | 
            +
                            revert ErrorInstanceNotRoleAdmin(roleId, account);
         | 
| 54 | 
            +
                        }
         | 
| 43 55 | 
             
                    }
         | 
| 44 56 | 
             
                    _;
         | 
| 45 57 | 
             
                }
         | 
| 46 58 |  | 
| 59 | 
            +
             | 
| 47 60 | 
             
                function initialize(
         | 
| 48 | 
            -
                     | 
| 49 | 
            -
                    InstanceStore instanceStore,
         | 
| 50 | 
            -
                    BundleSet bundleSet,
         | 
| 51 | 
            -
                    RiskSet riskSet,
         | 
| 52 | 
            -
                    InstanceReader instanceReader,
         | 
| 61 | 
            +
                    InstanceContracts memory instanceContracts,
         | 
| 53 62 | 
             
                    IRegistry registry, 
         | 
| 54 63 | 
             
                    VersionPart release,
         | 
| 55 64 | 
             
                    address initialOwner,
         | 
| 56 | 
            -
                    bool tokenRegistryDisabled
         | 
| 65 | 
            +
                    bool tokenRegistryDisabled // only disable for testing
         | 
| 57 66 | 
             
                ) 
         | 
| 58 67 | 
             
                    external 
         | 
| 59 68 | 
             
                    initializer()
         | 
| 60 69 | 
             
                {
         | 
| 61 | 
            -
                    if(address(instanceAdmin) == address(0)) {
         | 
| 70 | 
            +
                    if(address(instanceContracts.instanceAdmin) == address(0)) {
         | 
| 62 71 | 
             
                        revert ErrorInstanceInstanceAdminZero();
         | 
| 63 72 | 
             
                    }
         | 
| 64 73 |  | 
| 65 | 
            -
                    _instanceAdmin = instanceAdmin;
         | 
| 74 | 
            +
                    _instanceAdmin = instanceContracts.instanceAdmin;
         | 
| 66 75 |  | 
| 67 76 | 
             
                    // setup instance object info
         | 
| 68 | 
            -
                    __Registerable_init(
         | 
| 69 | 
            -
                        instanceAdmin.authority(),
         | 
| 70 | 
            -
                        address(registry), 
         | 
| 71 | 
            -
                        registry.getNftId(), 
         | 
| 72 | 
            -
                        INSTANCE(), 
         | 
| 73 | 
            -
                         | 
| 74 | 
            -
                        initialOwner, 
         | 
| 75 | 
            -
                        "");
         | 
| 77 | 
            +
                    __Registerable_init({
         | 
| 78 | 
            +
                        authority: instanceContracts.instanceAdmin.authority(),
         | 
| 79 | 
            +
                        registry: address(registry), 
         | 
| 80 | 
            +
                        parentNftId: registry.getNftId(), 
         | 
| 81 | 
            +
                        objectType: INSTANCE(), 
         | 
| 82 | 
            +
                        isInterceptor: false, 
         | 
| 83 | 
            +
                        initialOwner: initialOwner, 
         | 
| 84 | 
            +
                        data: ""});
         | 
| 76 85 |  | 
| 77 86 | 
             
                    // store instance supporting contracts
         | 
| 78 | 
            -
                    _instanceStore = instanceStore;
         | 
| 79 | 
            -
                     | 
| 80 | 
            -
                     | 
| 81 | 
            -
                     | 
| 87 | 
            +
                    _instanceStore = instanceContracts.instanceStore;
         | 
| 88 | 
            +
                    _productStore = instanceContracts.productStore;
         | 
| 89 | 
            +
                    _bundleSet = instanceContracts.bundleSet;
         | 
| 90 | 
            +
                    _riskSet = instanceContracts.riskSet;
         | 
| 91 | 
            +
                    _instanceReader = instanceContracts.instanceReader;
         | 
| 82 92 |  | 
| 83 93 | 
             
                    // initialize instance supporting contracts
         | 
| 84 94 | 
             
                    _instanceStore.initialize();
         | 
| 85 | 
            -
                     | 
| 86 | 
            -
                     | 
| 95 | 
            +
                    _productStore.initialize();
         | 
| 96 | 
            +
                    _bundleSet.initialize(instanceContracts.instanceAdmin.authority(), address(registry));
         | 
| 97 | 
            +
                    _riskSet.initialize(instanceContracts.instanceAdmin.authority(), address(registry));
         | 
| 87 98 | 
             
                    _instanceReader.initialize();
         | 
| 88 99 |  | 
| 89 100 | 
             
                    _componentService = IComponentService(
         | 
| @@ -152,6 +163,7 @@ contract Instance is | |
| 152 163 |  | 
| 153 164 | 
             
                function setStakingMaxAmount(Amount maxStakedAmount)
         | 
| 154 165 | 
             
                    external
         | 
| 166 | 
            +
                    restricted()
         | 
| 155 167 | 
             
                    onlyOwner()
         | 
| 156 168 | 
             
                {
         | 
| 157 169 | 
             
                    _instanceService.setStakingMaxAmount(maxStakedAmount);
         | 
| @@ -161,87 +173,120 @@ contract Instance is | |
| 161 173 | 
             
                    external
         | 
| 162 174 | 
             
                    restricted()
         | 
| 163 175 | 
             
                    onlyOwner()
         | 
| 176 | 
            +
                    returns (Amount newRewardReserveBalance)
         | 
| 164 177 | 
             
                {
         | 
| 165 178 | 
             
                    address instanceOwner = msg.sender;
         | 
| 166 | 
            -
                    _instanceService. | 
| 179 | 
            +
                    return _instanceService.refillInstanceRewardReserves(instanceOwner, dipAmount);
         | 
| 167 180 | 
             
                }
         | 
| 168 181 |  | 
| 169 182 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount)
         | 
| 170 183 | 
             
                    external
         | 
| 171 184 | 
             
                    restricted()
         | 
| 172 185 | 
             
                    onlyOwner()
         | 
| 173 | 
            -
                    returns (Amount  | 
| 186 | 
            +
                    returns (Amount newRewardReserveBalance)
         | 
| 174 187 | 
             
                {
         | 
| 175 | 
            -
                    return _instanceService. | 
| 188 | 
            +
                    return _instanceService.withdrawInstanceRewardReserves(dipAmount);
         | 
| 176 189 | 
             
                }
         | 
| 177 190 |  | 
| 178 191 | 
             
                //--- Roles ------------------------------------------------------------//
         | 
| 179 192 |  | 
| 180 | 
            -
                 | 
| 193 | 
            +
                /// @inheritdoc IInstance
         | 
| 194 | 
            +
                function createRole(
         | 
| 195 | 
            +
                    string memory roleName, 
         | 
| 196 | 
            +
                    RoleId adminRoleId,
         | 
| 197 | 
            +
                    uint32 maxMemberCount
         | 
| 198 | 
            +
                )
         | 
| 181 199 | 
             
                    external
         | 
| 182 200 | 
             
                    restricted()
         | 
| 183 201 | 
             
                    onlyOwner()
         | 
| 184 | 
            -
                    returns (RoleId roleId | 
| 202 | 
            +
                    returns (RoleId roleId)
         | 
| 185 203 | 
             
                {
         | 
| 186 | 
            -
                     | 
| 187 | 
            -
                     | 
| 204 | 
            +
                    roleId = _instanceService.createRole(roleName, adminRoleId, maxMemberCount);
         | 
| 205 | 
            +
                    emit LogInstanceCustomRoleCreated(roleId, roleName, adminRoleId, maxMemberCount);
         | 
| 188 206 | 
             
                }
         | 
| 189 207 |  | 
| 208 | 
            +
             | 
| 209 | 
            +
                /// @inheritdoc IInstance
         | 
| 210 | 
            +
                function setRoleActive(RoleId roleId, bool active)
         | 
| 211 | 
            +
                    external 
         | 
| 212 | 
            +
                    restricted()
         | 
| 213 | 
            +
                    onlyCustomRoleAdmin(roleId)
         | 
| 214 | 
            +
                {
         | 
| 215 | 
            +
                    _instanceService.setRoleActive(roleId, active);
         | 
| 216 | 
            +
                    emit LogInstanceCustomRoleActiveSet(roleId, active, msg.sender);
         | 
| 217 | 
            +
                }
         | 
| 218 | 
            +
             | 
| 219 | 
            +
             | 
| 220 | 
            +
                /// @inheritdoc IInstance
         | 
| 190 221 | 
             
                function grantRole(RoleId roleId, address account) 
         | 
| 191 222 | 
             
                    external 
         | 
| 192 223 | 
             
                    restricted()
         | 
| 193 | 
            -
                     | 
| 224 | 
            +
                    onlyCustomRoleAdmin(roleId)
         | 
| 194 225 | 
             
                {
         | 
| 195 | 
            -
                     | 
| 226 | 
            +
                    _instanceService.grantRole(roleId, account);
         | 
| 227 | 
            +
                    emit LogInstanceCustomRoleGranted(roleId, account, msg.sender);
         | 
| 196 228 | 
             
                }
         | 
| 197 229 |  | 
| 230 | 
            +
             | 
| 231 | 
            +
                /// @inheritdoc IInstance
         | 
| 198 232 | 
             
                function revokeRole(RoleId roleId, address account) 
         | 
| 199 233 | 
             
                    external 
         | 
| 200 234 | 
             
                    restricted()
         | 
| 201 | 
            -
                     | 
| 235 | 
            +
                    onlyCustomRoleAdmin(roleId)
         | 
| 202 236 | 
             
                {
         | 
| 203 | 
            -
                     | 
| 204 | 
            -
                     | 
| 237 | 
            +
                    _instanceService.revokeRole(roleId, account);
         | 
| 238 | 
            +
                    emit LogInstanceCustomRoleRevoked(roleId, account, msg.sender);
         | 
| 205 239 | 
             
                }
         | 
| 206 240 |  | 
| 207 241 | 
             
                //--- Targets ------------------------------------------------------------//
         | 
| 208 242 |  | 
| 243 | 
            +
                /// @inheritdoc IInstance
         | 
| 244 | 
            +
                function createTarget(address target, string memory name) 
         | 
| 245 | 
            +
                    external 
         | 
| 246 | 
            +
                    restricted()
         | 
| 247 | 
            +
                    onlyOwner()
         | 
| 248 | 
            +
                    returns (RoleId targetRoleId)
         | 
| 249 | 
            +
                {
         | 
| 250 | 
            +
                    targetRoleId = _instanceService.createTarget(target, name);
         | 
| 251 | 
            +
                    emit LogInstanceCustomTargetCreated(target, targetRoleId, name);
         | 
| 252 | 
            +
                }
         | 
| 253 | 
            +
             | 
| 209 254 |  | 
| 255 | 
            +
                /// @inheritdoc IInstance
         | 
| 210 256 | 
             
                function setTargetLocked(address target, bool locked)
         | 
| 211 257 | 
             
                    external 
         | 
| 212 258 | 
             
                    // not restricted(): instance owner may need to be able to unlock targets on an locked instance
         | 
| 213 259 | 
             
                    onlyOwner()
         | 
| 214 260 | 
             
                {
         | 
| 215 261 | 
             
                    _instanceService.setTargetLocked(target, locked);
         | 
| 262 | 
            +
                    emit LogInstanceTargetLocked(target, locked);
         | 
| 216 263 | 
             
                }
         | 
| 217 264 |  | 
| 218 | 
            -
             | 
| 265 | 
            +
             | 
| 266 | 
            +
                /// @inheritdoc IInstance
         | 
| 267 | 
            +
                function authorizeFunctions(
         | 
| 268 | 
            +
                    address target, 
         | 
| 269 | 
            +
                    RoleId roleId, 
         | 
| 270 | 
            +
                    IAccess.FunctionInfo[] memory functions
         | 
| 271 | 
            +
                )
         | 
| 219 272 | 
             
                    external 
         | 
| 220 273 | 
             
                    restricted()
         | 
| 221 274 | 
             
                    onlyOwner()
         | 
| 222 275 | 
             
                {
         | 
| 223 | 
            -
                     | 
| 224 | 
            -
                    // _instanceAdmin.createTarget(target, name);
         | 
| 276 | 
            +
                    _instanceService.authorizeFunctions(target, roleId, functions);
         | 
| 225 277 | 
             
                }
         | 
| 226 278 |  | 
| 227 | 
            -
             | 
| 228 | 
            -
             | 
| 229 | 
            -
             | 
| 230 | 
            -
                     | 
| 231 | 
            -
             | 
| 279 | 
            +
             | 
| 280 | 
            +
                /// @inheritdoc IInstance
         | 
| 281 | 
            +
                function unauthorizeFunctions(
         | 
| 282 | 
            +
                    address target, 
         | 
| 283 | 
            +
                    IAccess.FunctionInfo[] memory functions
         | 
| 284 | 
            +
                )
         | 
| 232 285 | 
             
                    external 
         | 
| 233 286 | 
             
                    restricted()
         | 
| 234 287 | 
             
                    onlyOwner()
         | 
| 235 288 | 
             
                {
         | 
| 236 | 
            -
                     | 
| 237 | 
            -
                    // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
         | 
| 238 | 
            -
                }
         | 
| 239 | 
            -
             | 
| 240 | 
            -
                //--- ITransferInterceptor ----------------------------------------------//
         | 
| 241 | 
            -
             | 
| 242 | 
            -
                function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external onlyChainNft {
         | 
| 243 | 
            -
                    // TODO refactor
         | 
| 244 | 
            -
                    // _instanceAdmin.transferInstanceOwnerRole(from, to);
         | 
| 289 | 
            +
                    _instanceService.unauthorizeFunctions(target, functions);
         | 
| 245 290 | 
             
                }
         | 
| 246 291 |  | 
| 247 292 | 
             
                //--- initial setup functions -------------------------------------------//
         | 
| @@ -296,9 +341,11 @@ contract Instance is | |
| 296 341 | 
             
                    return _instanceStore;
         | 
| 297 342 | 
             
                }
         | 
| 298 343 |  | 
| 344 | 
            +
                function getProductStore() external view returns (ProductStore) {
         | 
| 345 | 
            +
                    return _productStore;
         | 
| 346 | 
            +
                }
         | 
| 347 | 
            +
             | 
| 299 348 | 
             
                function isTokenRegistryDisabled() external view returns (bool) {
         | 
| 300 349 | 
             
                    return _tokenRegistryDisabled;
         | 
| 301 350 | 
             
                }
         | 
| 302 | 
            -
             | 
| 303 | 
            -
                //--- internal view/pure functions --------------------------------------//
         | 
| 304 351 | 
             
            }
         |