@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +163 -55
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- 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 +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- 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 +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- 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 +215 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +3 -3
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +94 -106
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -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 +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.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 +18 -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 +152 -38
- 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 +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -2,41 +2,34 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
         | 
| 5 | 
            -
            import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
         | 
| 6 5 |  | 
| 6 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 7 | 
             
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 8 8 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 9 | 
             
            import {BundleSet} from "./BundleSet.sol";
         | 
| 10 | 
            +
            import {RiskSet} from "./RiskSet.sol";
         | 
| 10 11 | 
             
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 11 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 13 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
         | 
| 16 | 
            -
            import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
         | 
| 14 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 | 
            +
            import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
         | 
| 17 16 |  | 
| 18 17 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 19 | 
            -
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 20 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         | 
| 23 | 
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 24 | 
            -
            import {IProductComponent} from "../product/IProductComponent.sol";
         | 
| 25 18 |  | 
| 26 19 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 27 20 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 28 21 | 
             
            import {IStakingService} from "../staking/IStakingService.sol";
         | 
| 29 22 | 
             
            import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
         | 
| 30 23 |  | 
| 24 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 31 25 | 
             
            import {Instance} from "./Instance.sol";
         | 
| 32 | 
            -
            import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
         | 
| 33 26 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 34 27 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| 35 28 | 
             
            import {IInstanceService} from "./IInstanceService.sol";
         | 
| 36 29 | 
             
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 37 30 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 38 31 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 39 | 
            -
            import {VersionPart | 
| 32 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 40 33 |  | 
| 41 34 |  | 
| 42 35 | 
             
            contract InstanceService is
         | 
| @@ -49,12 +42,14 @@ contract InstanceService is | |
| 49 42 |  | 
| 50 43 | 
             
                IRegistryService internal _registryService;
         | 
| 51 44 | 
             
                IStakingService internal _stakingService;
         | 
| 45 | 
            +
                IComponentService internal _componentService;
         | 
| 52 46 |  | 
| 53 47 | 
             
                address internal _masterAccessManager;
         | 
| 54 48 | 
             
                address internal _masterInstanceAdmin;
         | 
| 55 49 | 
             
                address internal _masterInstance;
         | 
| 56 50 | 
             
                address internal _masterInstanceReader;
         | 
| 57 51 | 
             
                address internal _masterInstanceBundleSet;
         | 
| 52 | 
            +
                address internal _masterInstanceRiskSet;
         | 
| 58 53 | 
             
                address internal _masterInstanceStore;
         | 
| 59 54 |  | 
| 60 55 |  | 
| @@ -70,7 +65,7 @@ contract InstanceService is | |
| 70 65 | 
             
                        revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
         | 
| 71 66 | 
             
                    }
         | 
| 72 67 |  | 
| 73 | 
            -
                    VersionPart instanceVersion = IInstance(instanceAddress). | 
| 68 | 
            +
                    VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
         | 
| 74 69 | 
             
                    if (instanceVersion != getVersion().toMajorPart()) {
         | 
| 75 70 | 
             
                        revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
         | 
| 76 71 | 
             
                    }
         | 
| @@ -86,6 +81,7 @@ contract InstanceService is | |
| 86 81 | 
             
                    _;
         | 
| 87 82 | 
             
                }
         | 
| 88 83 |  | 
| 84 | 
            +
             | 
| 89 85 | 
             
                // TODO check component - service - instance version match
         | 
| 90 86 | 
             
                modifier onlyComponent() {
         | 
| 91 87 | 
             
                    if (! getRegistry().isRegisteredComponent(msg.sender)) {
         | 
| @@ -96,9 +92,10 @@ contract InstanceService is | |
| 96 92 |  | 
| 97 93 | 
             
                function createInstance()
         | 
| 98 94 | 
             
                    external 
         | 
| 95 | 
            +
                    restricted()
         | 
| 99 96 | 
             
                    returns (
         | 
| 100 | 
            -
                         | 
| 101 | 
            -
                        NftId  | 
| 97 | 
            +
                        IInstance instance,
         | 
| 98 | 
            +
                        NftId instanceNftId
         | 
| 102 99 | 
             
                    )
         | 
| 103 100 | 
             
                {
         | 
| 104 101 | 
             
                    // tx sender will become instance owner
         | 
| @@ -106,30 +103,35 @@ contract InstanceService is | |
| 106 103 |  | 
| 107 104 | 
             
                    // create instance admin and instance
         | 
| 108 105 | 
             
                    InstanceAdmin instanceAdmin = _createInstanceAdmin();
         | 
| 109 | 
            -
                     | 
| 106 | 
            +
                    instance = _createInstance(instanceAdmin, instanceOwner);
         | 
| 110 107 |  | 
| 111 108 | 
             
                    // register cloned instance with registry
         | 
| 112 | 
            -
                     | 
| 113 | 
            -
                         | 
| 109 | 
            +
                    instanceNftId = _registryService.registerInstance(
         | 
| 110 | 
            +
                        instance, instanceOwner).nftId;
         | 
| 114 111 |  | 
| 115 112 | 
             
                    // register cloned instance as staking target
         | 
| 116 113 | 
             
                    _stakingService.createInstanceTarget(
         | 
| 117 | 
            -
                         | 
| 114 | 
            +
                        instanceNftId,
         | 
| 118 115 | 
             
                        TargetManagerLib.getDefaultLockingPeriod(),
         | 
| 119 116 | 
             
                        TargetManagerLib.getDefaultRewardRate());
         | 
| 120 117 |  | 
| 121 118 | 
             
                    // MUST be set after instance is set up and registered
         | 
| 122 | 
            -
                     | 
| 119 | 
            +
                    IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
         | 
| 120 | 
            +
                    VersionPart release = AccessManagerCloneable(authority()).getRelease();
         | 
| 121 | 
            +
                    instanceAdmin.completeSetup(
         | 
| 122 | 
            +
                        address(instance),
         | 
| 123 | 
            +
                        address(instanceAuthorization));
         | 
| 123 124 |  | 
| 124 125 | 
             
                    emit LogInstanceCloned(
         | 
| 125 | 
            -
                         | 
| 126 | 
            -
                        address( | 
| 126 | 
            +
                        instanceNftId,
         | 
| 127 | 
            +
                        address(instance));
         | 
| 127 128 | 
             
                }
         | 
| 128 129 |  | 
| 129 130 |  | 
| 130 131 | 
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod)
         | 
| 131 132 | 
             
                    external
         | 
| 132 133 | 
             
                    virtual
         | 
| 134 | 
            +
                    restricted()
         | 
| 133 135 | 
             
                    onlyInstance()
         | 
| 134 136 | 
             
                {
         | 
| 135 137 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -142,6 +144,7 @@ contract InstanceService is | |
| 142 144 | 
             
                function setStakingRewardRate(UFixed rewardRate)
         | 
| 143 145 | 
             
                    external
         | 
| 144 146 | 
             
                    virtual
         | 
| 147 | 
            +
                    restricted()
         | 
| 145 148 | 
             
                    onlyInstance()
         | 
| 146 149 | 
             
                {
         | 
| 147 150 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -154,6 +157,7 @@ contract InstanceService is | |
| 154 157 | 
             
                function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
         | 
| 155 158 | 
             
                    external
         | 
| 156 159 | 
             
                    virtual
         | 
| 160 | 
            +
                    restricted()
         | 
| 157 161 | 
             
                    onlyInstance()
         | 
| 158 162 | 
             
                {
         | 
| 159 163 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -167,6 +171,7 @@ contract InstanceService is | |
| 167 171 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount)
         | 
| 168 172 | 
             
                    external
         | 
| 169 173 | 
             
                    virtual
         | 
| 174 | 
            +
                    restricted()
         | 
| 170 175 | 
             
                    onlyInstance()
         | 
| 171 176 | 
             
                    returns (Amount newBalance)
         | 
| 172 177 | 
             
                {
         | 
| @@ -176,46 +181,31 @@ contract InstanceService is | |
| 176 181 | 
             
                        dipAmount);
         | 
| 177 182 | 
             
                }
         | 
| 178 183 |  | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 | 
            -
                     | 
| 182 | 
            -
                     | 
| 183 | 
            -
                     | 
| 184 | 
            +
                function upgradeInstanceReader(NftId instanceNftId) 
         | 
| 185 | 
            +
                    external 
         | 
| 186 | 
            +
                    nonReentrant()
         | 
| 187 | 
            +
                    restricted()
         | 
| 188 | 
            +
                    onlyInstanceOwner(instanceNftId) 
         | 
| 189 | 
            +
                    onlyNftOfType(instanceNftId, INSTANCE())
         | 
| 184 190 | 
             
                {
         | 
| 185 | 
            -
                    // checks
         | 
| 186 | 
            -
                    address componentAddress = msg.sender;
         | 
| 187 | 
            -
             | 
| 188 | 
            -
                    if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
         | 
| 189 | 
            -
                        revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
         | 
| 190 | 
            -
                    }
         | 
| 191 | 
            -
             | 
| 192 191 | 
             
                    IRegistry registry = getRegistry();
         | 
| 193 | 
            -
                     | 
| 194 | 
            -
             | 
| 195 | 
            -
                     | 
| 196 | 
            -
             | 
| 197 | 
            -
             | 
| 198 | 
            -
                     | 
| 199 | 
            -
                    // TODO refactor/implement
         | 
| 200 | 
            -
                    // instance.getInstanceAdmin().setTargetLockedByService(
         | 
| 201 | 
            -
                    //     componentAddress, 
         | 
| 202 | 
            -
                    //     locked);
         | 
| 203 | 
            -
                }
         | 
| 204 | 
            -
             | 
| 205 | 
            -
             | 
| 206 | 
            -
                function getMasterInstanceReader() external view returns (address) {
         | 
| 207 | 
            -
                    return _masterInstanceReader;
         | 
| 192 | 
            +
                    IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
         | 
| 193 | 
            +
                    Instance instance = Instance(instanceInfo.objectAddress);
         | 
| 194 | 
            +
                    
         | 
| 195 | 
            +
                    InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 196 | 
            +
                    upgradedInstanceReaderClone.initializeWithInstance(address(instance));
         | 
| 197 | 
            +
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 208 198 | 
             
                }
         | 
| 209 199 |  | 
| 210 200 | 
             
                function setAndRegisterMasterInstance(address instanceAddress)
         | 
| 211 | 
            -
             | 
| 212 | 
            -
             | 
| 213 | 
            -
             | 
| 201 | 
            +
                    external 
         | 
| 202 | 
            +
                    onlyOwner()
         | 
| 203 | 
            +
                    returns(NftId masterInstanceNftId)
         | 
| 214 204 | 
             
                {
         | 
| 215 205 | 
             
                    if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
         | 
| 216 206 | 
             
                    if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
         | 
| 217 207 | 
             
                    if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
         | 
| 218 | 
            -
             | 
| 208 | 
            +
                    if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
         | 
| 219 209 | 
             
                    if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
         | 
| 220 210 |  | 
| 221 211 | 
             
                    IInstance instance = IInstance(instanceAddress);
         | 
| @@ -224,28 +214,34 @@ contract InstanceService is | |
| 224 214 | 
             
                    address instanceAdminAddress = address(instanceAdmin);
         | 
| 225 215 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 226 216 | 
             
                    address instanceReaderAddress = address(instanceReader);
         | 
| 227 | 
            -
                    BundleSet  | 
| 228 | 
            -
                    address  | 
| 217 | 
            +
                    BundleSet bundleSet = instance.getBundleSet();
         | 
| 218 | 
            +
                    address bundleSetAddress = address(bundleSet);
         | 
| 219 | 
            +
                    RiskSet riskSet = instance.getRiskSet();
         | 
| 220 | 
            +
                    address riskSetAddress = address(riskSet);
         | 
| 229 221 | 
             
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 230 222 | 
             
                    address instanceStoreAddress = address(instanceStore);
         | 
| 231 223 |  | 
| 232 224 | 
             
                    if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
         | 
| 233 225 | 
             
                    if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
         | 
| 234 226 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
         | 
| 235 | 
            -
                    if( | 
| 227 | 
            +
                    if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
         | 
| 228 | 
            +
                    if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
         | 
| 236 229 | 
             
                    if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
         | 
| 237 230 |  | 
| 238 231 | 
             
                    if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
         | 
| 239 | 
            -
                    if( | 
| 232 | 
            +
                    if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
         | 
| 233 | 
            +
                    if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
         | 
| 240 234 | 
             
                    if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
         | 
| 241 | 
            -
                    if( | 
| 235 | 
            +
                    if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
         | 
| 236 | 
            +
                    if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
         | 
| 242 237 | 
             
                    if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
         | 
| 243 238 |  | 
| 244 239 | 
             
                    _masterAccessManager = accessManagerAddress;
         | 
| 245 240 | 
             
                    _masterInstanceAdmin = instanceAdminAddress;
         | 
| 246 241 | 
             
                    _masterInstance = instanceAddress;
         | 
| 247 242 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 248 | 
            -
                    _masterInstanceBundleSet =  | 
| 243 | 
            +
                    _masterInstanceBundleSet = bundleSetAddress;
         | 
| 244 | 
            +
                    _masterInstanceRiskSet = riskSetAddress;
         | 
| 249 245 | 
             
                    _masterInstanceStore = instanceStoreAddress;
         | 
| 250 246 |  | 
| 251 247 | 
             
                    IInstance masterInstance = IInstance(_masterInstance);
         | 
| @@ -253,7 +249,10 @@ contract InstanceService is | |
| 253 249 | 
             
                    masterInstanceNftId = info.nftId;
         | 
| 254 250 | 
             
                }
         | 
| 255 251 |  | 
| 256 | 
            -
                function upgradeMasterInstanceReader(address instanceReaderAddress) | 
| 252 | 
            +
                function upgradeMasterInstanceReader(address instanceReaderAddress)
         | 
| 253 | 
            +
                    external
         | 
| 254 | 
            +
                    onlyOwner
         | 
| 255 | 
            +
                {
         | 
| 257 256 | 
             
                    if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
         | 
| 258 257 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
         | 
| 259 258 | 
             
                    if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
         | 
| @@ -264,78 +263,8 @@ contract InstanceService is | |
| 264 263 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 265 264 | 
             
                }
         | 
| 266 265 |  | 
| 267 | 
            -
                function  | 
| 268 | 
            -
                     | 
| 269 | 
            -
                    onlyInstanceOwner(instanceNftId) 
         | 
| 270 | 
            -
                {
         | 
| 271 | 
            -
                    IRegistry registry = getRegistry();
         | 
| 272 | 
            -
                    IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
         | 
| 273 | 
            -
                    Instance instance = Instance(instanceInfo.objectAddress);
         | 
| 274 | 
            -
                    
         | 
| 275 | 
            -
                    InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 276 | 
            -
                    upgradedInstanceReaderClone.initializeWithInstance(address(instance));
         | 
| 277 | 
            -
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 278 | 
            -
                }
         | 
| 279 | 
            -
             | 
| 280 | 
            -
             | 
| 281 | 
            -
                function createGifTarget(
         | 
| 282 | 
            -
                    NftId instanceNftId,
         | 
| 283 | 
            -
                    address targetAddress,
         | 
| 284 | 
            -
                    string memory targetName,
         | 
| 285 | 
            -
                    bytes4[][] memory selectors,
         | 
| 286 | 
            -
                    RoleId[] memory roles
         | 
| 287 | 
            -
                )
         | 
| 288 | 
            -
                    external
         | 
| 289 | 
            -
                    virtual
         | 
| 290 | 
            -
                    restricted()
         | 
| 291 | 
            -
                {
         | 
| 292 | 
            -
                    _createGifTarget(
         | 
| 293 | 
            -
                        instanceNftId,
         | 
| 294 | 
            -
                        targetAddress,
         | 
| 295 | 
            -
                        targetName,
         | 
| 296 | 
            -
                        roles,
         | 
| 297 | 
            -
                        selectors
         | 
| 298 | 
            -
                    );
         | 
| 299 | 
            -
                }
         | 
| 300 | 
            -
             | 
| 301 | 
            -
             | 
| 302 | 
            -
                function initializeAuthorization(
         | 
| 303 | 
            -
                    NftId instanceNftId, 
         | 
| 304 | 
            -
                    IInstanceLinkedComponent component
         | 
| 305 | 
            -
                )
         | 
| 306 | 
            -
                    external
         | 
| 307 | 
            -
                    virtual
         | 
| 308 | 
            -
                    restricted()
         | 
| 309 | 
            -
                {
         | 
| 310 | 
            -
                    (IInstance instance, ) = _validateInstanceAndComponent(
         | 
| 311 | 
            -
                        instanceNftId, 
         | 
| 312 | 
            -
                        address(component));
         | 
| 313 | 
            -
             | 
| 314 | 
            -
                    InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
         | 
| 315 | 
            -
                    instanceAdmin.initializeComponentAuthorization(
         | 
| 316 | 
            -
                        component,
         | 
| 317 | 
            -
                        component.getAuthorization());
         | 
| 318 | 
            -
                }
         | 
| 319 | 
            -
             | 
| 320 | 
            -
             | 
| 321 | 
            -
                function createComponentTarget(
         | 
| 322 | 
            -
                    NftId instanceNftId,
         | 
| 323 | 
            -
                    address targetAddress,
         | 
| 324 | 
            -
                    string memory targetName,
         | 
| 325 | 
            -
                    bytes4[][] memory selectors,
         | 
| 326 | 
            -
                    RoleId[] memory roles
         | 
| 327 | 
            -
                )
         | 
| 328 | 
            -
                    external
         | 
| 329 | 
            -
                    virtual
         | 
| 330 | 
            -
                    restricted()
         | 
| 331 | 
            -
                {
         | 
| 332 | 
            -
                    _createGifTarget(
         | 
| 333 | 
            -
                        instanceNftId,
         | 
| 334 | 
            -
                        targetAddress,
         | 
| 335 | 
            -
                        targetName,
         | 
| 336 | 
            -
                        roles,
         | 
| 337 | 
            -
                        selectors
         | 
| 338 | 
            -
                    );
         | 
| 266 | 
            +
                function getMasterInstanceReader() external view returns (address) {
         | 
| 267 | 
            +
                    return _masterInstanceReader;
         | 
| 339 268 | 
             
                }
         | 
| 340 269 |  | 
| 341 270 | 
             
                /// @dev create new cloned instance admin
         | 
| @@ -346,17 +275,16 @@ contract InstanceService is | |
| 346 275 | 
             
                    returns (InstanceAdmin clonedInstanceAdmin)
         | 
| 347 276 | 
             
                {
         | 
| 348 277 | 
             
                    // start with setting up a new OZ access manager
         | 
| 278 | 
            +
                    // TODO consider _masterInstanceAdmin.authority() instead of _masterAccessManager
         | 
| 349 279 | 
             
                    AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
         | 
| 350 280 | 
             
                        Clones.clone(_masterAccessManager));
         | 
| 351 281 |  | 
| 352 282 | 
             
                    // set up the instance admin
         | 
| 353 283 | 
             
                    clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
         | 
| 354 | 
            -
                    clonedAccessManager.initialize(
         | 
| 355 | 
            -
                        address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
         | 
| 356 | 
            -
             | 
| 357 284 | 
             
                    clonedInstanceAdmin.initialize(
         | 
| 358 285 | 
             
                        clonedAccessManager,
         | 
| 359 | 
            -
                         | 
| 286 | 
            +
                        getRegistry(),
         | 
| 287 | 
            +
                        getRelease());
         | 
| 360 288 | 
             
                }
         | 
| 361 289 |  | 
| 362 290 |  | 
| @@ -368,21 +296,24 @@ contract InstanceService is | |
| 368 296 | 
             
                )
         | 
| 369 297 | 
             
                    internal
         | 
| 370 298 | 
             
                    virtual
         | 
| 371 | 
            -
                    returns ( | 
| 299 | 
            +
                    returns (IInstance)
         | 
| 372 300 | 
             
                {
         | 
| 373 301 | 
             
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 374 302 | 
             
                    BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
         | 
| 303 | 
            +
                    RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
         | 
| 375 304 | 
             
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 376 305 |  | 
| 377 306 | 
             
                    // clone instance
         | 
| 378 | 
            -
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 307 | 
            +
                    Instance clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 379 308 | 
             
                    clonedInstance.initialize(
         | 
| 380 309 | 
             
                        instanceAdmin,
         | 
| 381 310 | 
             
                        clonedInstanceStore,
         | 
| 382 311 | 
             
                        clonedBundleSet,
         | 
| 312 | 
            +
                        clonedRiskSet,
         | 
| 383 313 | 
             
                        clonedInstanceReader,
         | 
| 384 314 | 
             
                        getRegistry(),
         | 
| 385 315 | 
             
                        instanceOwner);
         | 
| 316 | 
            +
                    return clonedInstance;
         | 
| 386 317 | 
             
                }
         | 
| 387 318 |  | 
| 388 319 |  | 
| @@ -425,14 +356,15 @@ contract InstanceService is | |
| 425 356 | 
             
                    initializer()
         | 
| 426 357 | 
             
                {
         | 
| 427 358 | 
             
                    (
         | 
| 428 | 
            -
                        address  | 
| 429 | 
            -
                        address  | 
| 359 | 
            +
                        address authority,
         | 
| 360 | 
            +
                        address registry
         | 
| 430 361 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 431 362 |  | 
| 432 | 
            -
                     | 
| 363 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 433 364 |  | 
| 434 365 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 435 366 | 
             
                    _stakingService = IStakingService(_getServiceAddress(STAKING()));
         | 
| 367 | 
            +
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 436 368 |  | 
| 437 369 | 
             
                    _registerInterface(type(IInstanceService).interfaceId);
         | 
| 438 370 | 
             
                }
         | 
| @@ -449,13 +381,20 @@ contract InstanceService is | |
| 449 381 | 
             
                        revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
         | 
| 450 382 | 
             
                    }
         | 
| 451 383 |  | 
| 452 | 
            -
                     | 
| 453 | 
            -
             | 
| 454 | 
            -
             | 
| 384 | 
            +
                    if (registry.getNftIdForAddress(componentAddress).gtz()) {
         | 
| 385 | 
            +
                        IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
         | 
| 386 | 
            +
             | 
| 387 | 
            +
                        if(componentInfo.parentNftId != instanceNftId) {
         | 
| 388 | 
            +
                            revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
         | 
| 389 | 
            +
                        }
         | 
| 390 | 
            +
             | 
| 391 | 
            +
                        componentNftId = componentInfo.nftId;
         | 
| 392 | 
            +
                    } else {
         | 
| 393 | 
            +
             | 
| 455 394 | 
             
                    }
         | 
| 456 395 |  | 
| 457 396 | 
             
                    instance = Instance(instanceInfo.objectAddress);
         | 
| 458 | 
            -
                     | 
| 397 | 
            +
                    
         | 
| 459 398 | 
             
                }
         | 
| 460 399 |  | 
| 461 400 | 
             
                // From IService
         | 
| @@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    InstanceService svc = new InstanceService{salt: salt}();
         | 
| 20 | 
            -
                    bytes memory data = abi.encode( | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 21 | 
             
                    IVersionable versionable = initialize(
         | 
| 22 22 | 
             
                        registry,
         | 
| 23 23 | 
             
                        address(svc), 
         | 
| @@ -7,10 +7,10 @@ import {Amount} from "../type/Amount.sol"; | |
| 7 7 | 
             
            import {Key32} from "../type/Key32.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 9 | 
             
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 10 | 
            -
            import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
         | 
| 10 | 
            +
            import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR, FEE} from "../type/ObjectType.sol";
         | 
| 11 11 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 12 12 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 13 | 
            -
            import {StateId} from "../type/StateId.sol";
         | 
| 13 | 
            +
            import {StateId, KEEP_STATE} from "../type/StateId.sol";
         | 
| 14 14 | 
             
            import {ReferralId} from "../type/Referral.sol";
         | 
| 15 15 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 16 16 | 
             
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| @@ -85,6 +85,17 @@ contract InstanceStore is | |
| 85 85 | 
             
                    _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
         | 
| 86 86 | 
             
                }
         | 
| 87 87 |  | 
| 88 | 
            +
             | 
| 89 | 
            +
                //--- Fee -----------------------------------------------------------//
         | 
| 90 | 
            +
                function createFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
         | 
| 91 | 
            +
                    _create(_toNftKey32(productNftId, FEE()), abi.encode(info));
         | 
| 92 | 
            +
                }
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                // Fee only has one state, so no change change possible
         | 
| 95 | 
            +
                function updateFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
         | 
| 96 | 
            +
                    _update(_toNftKey32(productNftId, FEE()), abi.encode(info), KEEP_STATE());
         | 
| 97 | 
            +
                }
         | 
| 98 | 
            +
             | 
| 88 99 | 
             
                //--- Pool --------------------------------------------------------------//
         | 
| 89 100 |  | 
| 90 101 | 
             
                function createPool(
         | 
| @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {Key32} from "../type/Key32.sol";
         | 
| 5 | 
            +
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         | 
| 6 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            +
            import {ObjectSet} from "./base/ObjectSet.sol";
         | 
| 8 | 
            +
            import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
         | 
| 9 | 
            +
            import {RiskIdLib, RiskId} from "../type/RiskId.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            /// @dev RiskSet manages the risks and its active policies per product.
         | 
| 12 | 
            +
            contract RiskSet is
         | 
| 13 | 
            +
                ObjectSet
         | 
| 14 | 
            +
            {
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
         | 
| 17 | 
            +
                event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
         | 
| 20 | 
            +
                event LogRiskSetRiskActive(NftId poolNftId,  RiskId riskId);
         | 
| 21 | 
            +
                event LogRiskSetRiskPaused(NftId poolNftId,  RiskId riskId);
         | 
| 22 | 
            +
                event LogRiskSetRiskArchived(NftId poolNftId,  RiskId riskId);
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId); 
         | 
| 25 | 
            +
                error ErrorRiskSetRiskUnknown(RiskId riskId);
         | 
| 26 | 
            +
                error ErrorRiskSetRiskNotRegistered(RiskId riskId);
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                /// @dev links a policy to its bundle
         | 
| 31 | 
            +
                function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    // ensure risk is active (in active set) and registered with this instance
         | 
| 34 | 
            +
                    if (!_isActive(productNftId, riskId.toKey32())) {
         | 
| 35 | 
            +
                        revert ErrorRiskSetRiskLocked(riskId, policyNftId);
         | 
| 36 | 
            +
                    }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    LibNftIdSet.add(_activePolicies[riskId], policyNftId);
         | 
| 39 | 
            +
                    emit LogRiskSetPolicyLinked(riskId, policyNftId);
         | 
| 40 | 
            +
                }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                /// @dev Unlinks a policy from its risk.
         | 
| 43 | 
            +
                function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    // ensure risk is registered with this instance
         | 
| 46 | 
            +
                    if (!_contains(productNftId, riskId.toKey32())) {
         | 
| 47 | 
            +
                        revert ErrorRiskSetRiskUnknown(riskId);
         | 
| 48 | 
            +
                    }
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    LibNftIdSet.remove(_activePolicies[riskId], policyNftId);
         | 
| 51 | 
            +
                    emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
         | 
| 52 | 
            +
                }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                /// @dev add a new risk to a product registered with this instance
         | 
| 55 | 
            +
                // the corresponding product is fetched via instance reader
         | 
| 56 | 
            +
                function add(RiskId riskId) external restricted() {
         | 
| 57 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    // ensure product is registered with instance
         | 
| 60 | 
            +
                    if(productNftId.eqz()) {
         | 
| 61 | 
            +
                        revert ErrorRiskSetRiskNotRegistered(riskId);
         | 
| 62 | 
            +
                    }
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    _add(productNftId, riskId.toKey32());
         | 
| 65 | 
            +
                    emit LogRiskSetRiskAdded(productNftId, riskId);
         | 
| 66 | 
            +
                }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                /// @dev Applications linked to active risks may be underwritten
         | 
| 69 | 
            +
                function activate(RiskId riskId) external restricted() {
         | 
| 70 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 71 | 
            +
                    _activate(productNftId, riskId.toKey32());
         | 
| 72 | 
            +
                    emit LogRiskSetRiskActive(productNftId, riskId);
         | 
| 73 | 
            +
                }
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                /// @dev Applications linked to paused/archived risks may not be underwritten
         | 
| 76 | 
            +
                function pause(RiskId riskId) external restricted() {
         | 
| 77 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 78 | 
            +
                    _deactivate(productNftId, riskId.toKey32());
         | 
| 79 | 
            +
                    emit LogRiskSetRiskPaused(productNftId, riskId);
         | 
| 80 | 
            +
                }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                function checkRisk(NftId productNftId, RiskId riskId)
         | 
| 83 | 
            +
                    public
         | 
| 84 | 
            +
                    view 
         | 
| 85 | 
            +
                    returns (bool exists, bool active)
         | 
| 86 | 
            +
                {
         | 
| 87 | 
            +
                    Key32 riskKey32 = riskId.toKey32();
         | 
| 88 | 
            +
                    exists = _contains(productNftId, riskKey32);
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    if (exists) {
         | 
| 91 | 
            +
                        active = _isActive(productNftId, riskKey32);
         | 
| 92 | 
            +
                    }
         | 
| 93 | 
            +
                }
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                function risks(NftId productNftId) external view returns(uint256) {
         | 
| 96 | 
            +
                    return _objects(productNftId);
         | 
| 97 | 
            +
                }
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
         | 
| 100 | 
            +
                    return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
         | 
| 101 | 
            +
                }
         | 
| 102 | 
            +
                
         | 
| 103 | 
            +
                function activeRisks(NftId productNftId) external view returns(uint256) {
         | 
| 104 | 
            +
                    return _activeObjs(productNftId);
         | 
| 105 | 
            +
                }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
         | 
| 108 | 
            +
                    return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
         | 
| 109 | 
            +
                }
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                function linkedPolicies(RiskId riskId) external view returns(uint256) {
         | 
| 112 | 
            +
                    return LibNftIdSet.size(_activePolicies[riskId]);
         | 
| 113 | 
            +
                }
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
         | 
| 116 | 
            +
                    return LibNftIdSet.getElementAt(_activePolicies[riskId], idx);
         | 
| 117 | 
            +
                }
         | 
| 118 | 
            +
            }
         | 
| @@ -11,9 +11,8 @@ contract ObjectCounter { | |
| 11 11 | 
             
                // TODO refactor risk id
         | 
| 12 12 | 
             
                // mapping(NftId productNftId => uint64 risks) private _riskCounter;
         | 
| 13 13 |  | 
| 14 | 
            -
                uint256 private _requestCounter;
         | 
| 14 | 
            +
                uint256 private _requestCounter = 0;
         | 
| 15 15 |  | 
| 16 | 
            -
                // TODO introduce RequestId (uint64)
         | 
| 17 16 | 
             
                function _createNextRequestId() internal returns (RequestId requestId) {
         | 
| 18 17 | 
             
                    _requestCounter++;
         | 
| 19 18 | 
             
                    requestId = RequestIdLib.toRequestId(_requestCounter);
         | 
| @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 5 5 |  | 
| 6 | 
            -
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
         | 
| 6 | 
            +
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL, FEE} from "../../type/ObjectType.sol";
         | 
| 7 7 | 
             
            import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
         | 
| 8 8 | 
             
            import {Lifecycle} from "../../shared/Lifecycle.sol";
         | 
| 9 9 |  | 
| @@ -65,6 +65,7 @@ contract ObjectLifecycle is | |
| 65 65 |  | 
| 66 66 | 
             
                function _setupClaimLifecycle() private {
         | 
| 67 67 | 
             
                    setInitialState(CLAIM(), SUBMITTED());
         | 
| 68 | 
            +
                    setStateTransition(CLAIM(), SUBMITTED(), REVOKED());
         | 
| 68 69 | 
             
                    setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
         | 
| 69 70 | 
             
                    setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
         | 
| 70 71 | 
             
                    setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
         | 
| @@ -72,8 +73,8 @@ contract ObjectLifecycle is | |
| 72 73 |  | 
| 73 74 | 
             
                function _setupPayoutLifecycle() private {
         | 
| 74 75 | 
             
                    setInitialState(PAYOUT(), EXPECTED());
         | 
| 75 | 
            -
                    // TODO: add state cancelled
         | 
| 76 76 | 
             
                    setStateTransition(PAYOUT(), EXPECTED(), PAID());
         | 
| 77 | 
            +
                    setStateTransition(PAYOUT(), EXPECTED(), CANCELLED());
         | 
| 77 78 | 
             
                }
         | 
| 78 79 |  | 
| 79 80 | 
             
                function _setupRiskLifecycle() private {
         | 
| @@ -99,6 +100,7 @@ contract ObjectLifecycle is | |
| 99 100 | 
             
                // dummy lifecycle only
         | 
| 100 101 | 
             
                function _setUpProductLifecycle() private {
         | 
| 101 102 | 
             
                    setInitialState(PRODUCT(), ACTIVE());
         | 
| 103 | 
            +
                    setInitialState(FEE(), ACTIVE());
         | 
| 102 104 | 
             
                }
         | 
| 103 105 |  | 
| 104 106 | 
             
                // dummy lifecycles only
         |