@etherisc/gif-next 3.0.0-1a7e54a-113 → 3.0.0-1b49bd6-565
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/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +139 -72
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +110 -116
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +72 -33
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +89 -66
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +122 -101
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +20 -65
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +31 -55
- 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 +20 -10
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +18 -42
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +126 -75
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +41 -65
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +72 -57
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +198 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +140 -150
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -56
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -32
- 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 +166 -104
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +41 -65
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +200 -138
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +41 -65
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -56
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +173 -116
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +41 -65
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +170 -108
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +41 -65
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +580 -134
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +41 -65
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.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 +159 -102
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +41 -65
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +163 -106
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +177 -120
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +41 -65
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +171 -114
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +41 -65
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +49 -54
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -25
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +83 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +144 -50
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +169 -147
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +43 -67
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -75
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -112
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +53 -58
- 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/Cloneable.sol/Cloneable.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 +3 -8
- 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 +132 -81
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +41 -65
- 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 -66
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +80 -83
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +82 -67
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +149 -148
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +111 -129
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +88 -73
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +41 -65
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +176 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +129 -139
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +71 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +100 -72
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +94 -86
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +88 -73
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +24 -247
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +233 -165
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +140 -130
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +138 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +110 -112
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +72 -57
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +41 -65
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +182 -115
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -138
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +71 -32
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +71 -32
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +82 -64
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +82 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +84 -56
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +75 -36
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +173 -127
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +122 -128
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +161 -94
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +116 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +72 -57
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +146 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +109 -107
- 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 +155 -56
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +202 -216
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +1 -15
- 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 +314 -96
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +163 -142
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +57 -77
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +285 -244
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +115 -110
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +159 -150
- 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 +127 -185
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +32 -56
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +13 -29
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +84 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +164 -320
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -141
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +421 -169
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +691 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +96 -38
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +82 -226
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +84 -56
- 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 +1 -28
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -12
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +77 -25
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +1 -12
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -32
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +74 -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 +72 -57
- 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 +15 -34
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -14
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -24
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +3 -37
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +70 -31
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +42 -29
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +30 -17
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +74 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +101 -56
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -36
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +170 -109
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +26 -31
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +112 -124
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +5 -22
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +132 -65
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +105 -111
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +212 -204
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +27 -19
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- 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/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/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.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 +4 -4
- 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/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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +19 -6
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IVersionable.sol/IVersionable.json → IUpgradeable.sol/IUpgradeable.json} +54 -4
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +63 -86
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Versionable.sol/Versionable.json → Upgradeable.sol/Upgradeable.json} +54 -4
- package/contracts/accounting/AccountingService.sol +5 -6
- package/contracts/accounting/AccountingServiceManager.sol +4 -6
- package/contracts/accounting/IAccountingService.sol +1 -1
- package/contracts/authorization/AccessAdmin.sol +22 -19
- package/contracts/authorization/AccessAdminLib.sol +14 -11
- package/contracts/authorization/AccessManagerCloneable.sol +24 -48
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -3
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +0 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -4
- package/contracts/distribution/Distribution.sol +0 -2
- package/contracts/distribution/DistributionService.sol +24 -20
- package/contracts/distribution/DistributionServiceManager.sol +4 -6
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +0 -4
- package/contracts/examples/flight/FlightLib.sol +48 -37
- package/contracts/examples/flight/FlightOracle.sol +0 -4
- package/contracts/examples/flight/FlightPool.sol +0 -4
- package/contracts/examples/flight/FlightProduct.sol +120 -15
- package/contracts/examples/flight/FlightProductAuthorization.sol +2 -1
- package/contracts/examples/flight/FlightUSD.sol +3 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +0 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
- package/contracts/instance/Instance.sol +7 -11
- package/contracts/instance/InstanceAdmin.sol +10 -17
- package/contracts/instance/InstanceAuthorizationV3.sol +4 -2
- package/contracts/instance/InstanceReader.sol +15 -15
- package/contracts/instance/InstanceService.sol +18 -20
- package/contracts/instance/InstanceServiceManager.sol +4 -6
- package/contracts/instance/base/Cloneable.sol +4 -10
- package/contracts/instance/base/ObjectSet.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +0 -2
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -1
- package/contracts/oracle/IOracleService.sol +0 -4
- package/contracts/oracle/Oracle.sol +3 -4
- package/contracts/oracle/OracleService.sol +37 -67
- package/contracts/oracle/OracleServiceManager.sol +4 -6
- package/contracts/pool/BasicPool.sol +2 -4
- package/contracts/pool/BasicPoolAuthorization.sol +5 -4
- package/contracts/pool/BundleService.sol +25 -19
- package/contracts/pool/BundleServiceManager.sol +5 -7
- package/contracts/pool/IPoolService.sol +5 -6
- package/contracts/pool/Pool.sol +1 -3
- package/contracts/pool/PoolLib.sol +5 -102
- package/contracts/pool/PoolService.sol +67 -101
- package/contracts/pool/PoolServiceManager.sol +4 -6
- package/contracts/product/ApplicationService.sol +13 -34
- package/contracts/product/ApplicationServiceManager.sol +4 -6
- package/contracts/product/BasicProduct.sol +0 -2
- package/contracts/product/BasicProductAuthorization.sol +5 -4
- package/contracts/product/ClaimService.sol +10 -34
- package/contracts/product/ClaimServiceManager.sol +5 -7
- package/contracts/product/IPolicyService.sol +0 -1
- package/contracts/product/PolicyService.sol +44 -57
- package/contracts/product/PolicyServiceManager.sol +4 -6
- package/contracts/product/PricingService.sol +7 -8
- package/contracts/product/PricingServiceManager.sol +4 -6
- package/contracts/product/Product.sol +0 -2
- package/contracts/product/RiskService.sol +8 -40
- package/contracts/product/RiskServiceManager.sol +4 -6
- package/contracts/registry/IRegistry.sol +20 -14
- package/contracts/registry/IRegistryService.sol +10 -14
- package/contracts/registry/IRelease.sol +0 -3
- package/contracts/registry/Registry.sol +124 -78
- package/contracts/registry/RegistryAdmin.sol +11 -22
- package/contracts/registry/RegistryAuthorization.sol +4 -3
- package/contracts/registry/RegistryService.sol +99 -82
- package/contracts/registry/RegistryServiceManager.sol +4 -11
- package/contracts/registry/ReleaseAdmin.sol +9 -16
- package/contracts/registry/ReleaseRegistry.sol +64 -74
- package/contracts/registry/ServiceAuthorizationV3.sol +4 -3
- package/contracts/registry/TokenRegistry.sol +6 -15
- package/contracts/shared/Component.sol +27 -22
- package/contracts/shared/ComponentService.sol +45 -130
- package/contracts/shared/ComponentServiceManager.sol +5 -7
- package/contracts/shared/ContractLib.sol +359 -93
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +5 -3
- package/contracts/shared/IComponentService.sol +0 -14
- package/contracts/shared/IInstanceLinkedComponent.sol +5 -12
- package/contracts/shared/INftOwnable.sol +0 -2
- package/contracts/shared/IRegisterable.sol +14 -3
- package/contracts/shared/IRegistryLinked.sol +1 -3
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/IVersionable.sol +19 -0
- package/contracts/shared/InstanceLinkedComponent.sol +31 -65
- package/contracts/shared/NftOwnable.sol +9 -22
- package/contracts/shared/PolicyHolder.sol +2 -4
- package/contracts/shared/Registerable.sol +37 -20
- package/contracts/shared/RegistryLinked.sol +4 -23
- package/contracts/shared/Service.sol +8 -9
- package/contracts/shared/TokenHandler.sol +4 -1
- package/contracts/shared/Versionable.sol +47 -0
- package/contracts/staking/IStaking.sol +2 -2
- package/contracts/staking/Staking.sol +28 -33
- package/contracts/staking/StakingLib.sol +3 -1
- package/contracts/staking/StakingManager.sol +3 -6
- package/contracts/staking/StakingReader.sol +9 -17
- package/contracts/staking/StakingService.sol +16 -13
- package/contracts/staking/StakingServiceManager.sol +4 -8
- package/contracts/staking/StakingStore.sol +8 -8
- package/contracts/staking/TargetHandler.sol +4 -5
- package/contracts/type/Version.sol +15 -16
- package/contracts/upgradeability/{IVersionable.sol → IUpgradeable.sol} +13 -19
- package/contracts/upgradeability/ProxyManager.sol +46 -54
- package/contracts/upgradeability/{Versionable.sol → Upgradeable.sol} +25 -14
- package/package.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +0 -24
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +0 -40
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +0 -4
| @@ -5,114 +5,376 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C | |
| 5 5 | 
             
            import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
         | 
| 6 6 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 7 7 |  | 
| 8 | 
            +
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 9 | 
            +
            import {IOracleComponent} from "../oracle/IOracleComponent.sol";
         | 
| 8 10 | 
             
            import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
         | 
| 9 11 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 10 12 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 11 13 |  | 
| 12 14 | 
             
            import {ChainId} from "../type/ChainId.sol";
         | 
| 13 15 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 | 
            -
            import {ObjectType, INSTANCE, PRODUCT, DISTRIBUTION, ORACLE, POOL} from "../type/ObjectType.sol";
         | 
| 16 | 
            +
            import {ObjectType, INSTANCE, COMPONENT, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
         | 
| 17 | 
            +
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 15 18 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| 16 19 |  | 
| 17 20 | 
             
            interface ITargetHelper {
         | 
| 18 21 | 
             
                function isTargetLocked(address target) external view returns (bool);
         | 
| 19 22 | 
             
            }
         | 
| 20 23 |  | 
| 21 | 
            -
             | 
| 22 | 
            -
                function getInstanceAdmin() external view returns (ITargetHelper);
         | 
| 23 | 
            -
            }
         | 
| 24 | 
            +
            library ContractLib {
         | 
| 24 25 |  | 
| 25 | 
            -
             | 
| 26 | 
            -
                 | 
| 27 | 
            -
             | 
| 26 | 
            +
                error ErrorContractLibCallerNotRegistered(address caller);
         | 
| 27 | 
            +
                error ErrorContractLibCallerNotComponent(/*address caller, */NftId callerNftId, ObjectType callerType);
         | 
| 28 | 
            +
                error ErrorContractLibParentNotInstance(/*address component, */NftId componentNftId, NftId parentNftId/*, ObjectType parentType*/);
         | 
| 29 | 
            +
                error ErrorContractLibParentNotProduct(/*address component, */NftId componentNftId, NftId parentNftId/*, ObjectType parentType*/);
         | 
| 30 | 
            +
                error ErrorContractLibComponentTypeMismatch(/*address component, */NftId componentNftId, ObjectType expectedType, ObjectType actualType);
         | 
| 31 | 
            +
                error ErrorContractLibComponentReleaseMismatch(/*address component, */NftId componentNftId, VersionPart expectedRelease, VersionPart actualRelease);
         | 
| 32 | 
            +
                error ErrorContractLibComponentInactive(/*address component, */NftId componentNftId);
         | 
| 28 33 |  | 
| 29 | 
            -
             | 
| 34 | 
            +
                error ErrorContractLibObjectNotRegistered(NftId objectNftId);
         | 
| 35 | 
            +
                error ErrorContractLibObjectTypeMismatch(NftId objectNftId, ObjectType expectedType, ObjectType actualType);
         | 
| 36 | 
            +
                error ErrorContractLibObjectReleaseMismatch(NftId objectNftId, VersionPart expectedRelease, VersionPart actualRelease);
         | 
| 37 | 
            +
                error ErrorContractLibObjectParentMismatch(NftId objectNftId, NftId expectedParentNftId, NftId actualParentNftId);
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                error ErrorContractLibParentsMismatch(NftId componentNftId, NftId componentParentNftId, NftId objectNftId, NftId objectParentNftId);
         | 
| 30 40 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
                 | 
| 34 | 
            -
                 | 
| 35 | 
            -
             | 
| 36 | 
            -
                 | 
| 41 | 
            +
             | 
| 42 | 
            +
             | 
| 43 | 
            +
                // update registry address whenever it changes
         | 
| 44 | 
            +
                address public constant REGISTRY_ADDRESS = address(0x345cA3e014Aaf5dcA488057592ee47305D9B3e10);
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                function getRegistry() internal pure returns (IRegistry) {
         | 
| 47 | 
            +
                    return IRegistry(REGISTRY_ADDRESS);
         | 
| 48 | 
            +
                }
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                function getAndVerifyProduct(VersionPart expectedRelease)
         | 
| 51 | 
            +
                    external
         | 
| 52 | 
            +
                    view
         | 
| 53 | 
            +
                    returns (
         | 
| 54 | 
            +
                        NftId, // productNftId
         | 
| 55 | 
            +
                        IInstance // instance,
         | 
| 56 | 
            +
                    )
         | 
| 57 | 
            +
                {
         | 
| 58 | 
            +
                    return getAndVerifyComponent(
         | 
| 59 | 
            +
                        msg.sender,
         | 
| 60 | 
            +
                        PRODUCT(),
         | 
| 61 | 
            +
                        expectedRelease,
         | 
| 62 | 
            +
                        true); // only active product
         | 
| 63 | 
            +
                }
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                function getAndVerifyPool(VersionPart expectedRelease)
         | 
| 66 | 
            +
                    external
         | 
| 67 | 
            +
                    view
         | 
| 68 | 
            +
                    returns (
         | 
| 69 | 
            +
                        NftId, // poolNftId
         | 
| 70 | 
            +
                        IInstance // instance,
         | 
| 71 | 
            +
                    )
         | 
| 72 | 
            +
                {
         | 
| 73 | 
            +
                    return getAndVerifyComponent(
         | 
| 74 | 
            +
                        msg.sender,
         | 
| 75 | 
            +
                        POOL(),
         | 
| 76 | 
            +
                        expectedRelease,
         | 
| 77 | 
            +
                        true); // only active pool
         | 
| 78 | 
            +
                }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                function getAndVerifyProductForPolicy(NftId policyNftId, VersionPart expectedRelease)
         | 
| 81 | 
            +
                    external
         | 
| 82 | 
            +
                    view
         | 
| 83 | 
            +
                    returns (
         | 
| 84 | 
            +
                        NftId, // productNftId
         | 
| 85 | 
            +
                        IInstance // instance,
         | 
| 86 | 
            +
                    )
         | 
| 87 | 
            +
                {
         | 
| 88 | 
            +
                    return getAndVerifyComponentWithChild(
         | 
| 89 | 
            +
                        msg.sender, // product
         | 
| 90 | 
            +
                        true, // only active product
         | 
| 91 | 
            +
                        policyNftId, // child nft id
         | 
| 92 | 
            +
                        POLICY(), // child must be policy
         | 
| 93 | 
            +
                        expectedRelease);
         | 
| 94 | 
            +
                }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                function getAndVerifyPoolForBundle(NftId bundleNftId, VersionPart expectedRelease)
         | 
| 97 | 
            +
                    external
         | 
| 98 | 
            +
                    view
         | 
| 99 | 
            +
                    returns (
         | 
| 100 | 
            +
                        NftId, // poolNftId
         | 
| 101 | 
            +
                        IInstance // instance,
         | 
| 102 | 
            +
                    )
         | 
| 103 | 
            +
                {
         | 
| 104 | 
            +
                    return getAndVerifyComponentWithChild({
         | 
| 105 | 
            +
                        component: msg.sender, // pool 
         | 
| 106 | 
            +
                        onlyActive: true, // only active pool
         | 
| 107 | 
            +
                        childNftId: bundleNftId, // child nft id
         | 
| 108 | 
            +
                        expectedChildType: BUNDLE(), // child must be bundle
         | 
| 109 | 
            +
                        expectedRelease: expectedRelease});
         | 
| 110 | 
            +
                }
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                function getAndVerifyPoolForPolicy(NftId policyNftId, VersionPart expectedRelease)
         | 
| 113 | 
            +
                    external
         | 
| 114 | 
            +
                    view
         | 
| 115 | 
            +
                    returns (
         | 
| 116 | 
            +
                        NftId poolNftId,
         | 
| 117 | 
            +
                        IInstance instance
         | 
| 118 | 
            +
                    )
         | 
| 119 | 
            +
                {
         | 
| 120 | 
            +
                    (poolNftId,, instance) = getAndVerifyComponentAndObject({
         | 
| 121 | 
            +
                        component: msg.sender,  // pool
         | 
| 122 | 
            +
                        expectedComponentType: POOL(),
         | 
| 123 | 
            +
                        onlyActive: true,
         | 
| 124 | 
            +
                        objectNftId: policyNftId,
         | 
| 125 | 
            +
                        expectedObjectType: POLICY(),
         | 
| 126 | 
            +
                        expectedRelease: expectedRelease
         | 
| 127 | 
            +
                    });    
         | 
| 128 | 
            +
                }
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                function getAndVerifyComponentAndOracle(
         | 
| 131 | 
            +
                    NftId oracleNftId,
         | 
| 132 | 
            +
                    VersionPart expectedRelease
         | 
| 133 | 
            +
                )
         | 
| 134 | 
            +
                    external
         | 
| 135 | 
            +
                    view
         | 
| 136 | 
            +
                    returns (
         | 
| 137 | 
            +
                        NftId requesterNftId,
         | 
| 138 | 
            +
                        IOracleComponent oracle,
         | 
| 139 | 
            +
                        IInstance instance
         | 
| 140 | 
            +
                    )
         | 
| 141 | 
            +
                {
         | 
| 142 | 
            +
                    address oracleAddress;
         | 
| 143 | 
            +
                    (requesterNftId, oracleAddress, instance) = getAndVerifyComponentAndObject({
         | 
| 144 | 
            +
                        component: msg.sender,
         | 
| 145 | 
            +
                        expectedComponentType: COMPONENT(),
         | 
| 146 | 
            +
                        onlyActive: true, 
         | 
| 147 | 
            +
                        objectNftId: oracleNftId,
         | 
| 148 | 
            +
                        expectedObjectType: ORACLE(),
         | 
| 149 | 
            +
                        expectedRelease: expectedRelease
         | 
| 150 | 
            +
                    });
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                    oracle = IOracleComponent(oracleAddress);
         | 
| 153 | 
            +
                }
         | 
| 37 154 |  | 
| 38 155 |  | 
| 39 156 | 
             
                function getInfoAndInstance(
         | 
| 40 | 
            -
                    IRegistry registry,
         | 
| 41 157 | 
             
                    NftId componentNftId,
         | 
| 158 | 
            +
                    VersionPart release,
         | 
| 42 159 | 
             
                    bool onlyActive
         | 
| 43 160 | 
             
                )
         | 
| 44 | 
            -
                     | 
| 161 | 
            +
                    public
         | 
| 45 162 | 
             
                    view
         | 
| 46 163 | 
             
                    returns (
         | 
| 47 164 | 
             
                        IRegistry.ObjectInfo memory info, 
         | 
| 48 | 
            -
                         | 
| 165 | 
            +
                        IInstance instance
         | 
| 49 166 | 
             
                    )
         | 
| 50 167 | 
             
                {
         | 
| 168 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 51 169 | 
             
                    info = registry.getObjectInfo(componentNftId);
         | 
| 52 | 
            -
                     | 
| 170 | 
            +
                    (, instance) = _getAndVerifyComponentAndInstance(info, info.objectType, release, onlyActive);
         | 
| 53 171 | 
             
                }
         | 
| 54 172 |  | 
| 55 173 |  | 
| 56 | 
            -
                function  | 
| 57 | 
            -
                    IRegistry registry, 
         | 
| 174 | 
            +
                function getAndVerifyComponent(
         | 
| 58 175 | 
             
                    address caller,
         | 
| 176 | 
            +
                    ObjectType expectedType,
         | 
| 177 | 
            +
                    VersionPart expectedRelease,
         | 
| 59 178 | 
             
                    bool onlyActive
         | 
| 60 179 | 
             
                )
         | 
| 61 | 
            -
                     | 
| 180 | 
            +
                    public
         | 
| 62 181 | 
             
                    view
         | 
| 63 182 | 
             
                    returns (
         | 
| 64 | 
            -
                         | 
| 65 | 
            -
                         | 
| 183 | 
            +
                        NftId componentNftId, 
         | 
| 184 | 
            +
                        IInstance instance
         | 
| 66 185 | 
             
                    )
         | 
| 67 186 | 
             
                {
         | 
| 68 | 
            -
                    // check caller is  | 
| 69 | 
            -
                     | 
| 70 | 
            -
                     | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 187 | 
            +
                    // check caller is registered
         | 
| 188 | 
            +
                    IRegistry.ObjectInfo memory info = _getAndVerifyObjectInfo(caller);
         | 
| 189 | 
            +
                    // check caller info
         | 
| 190 | 
            +
                    return _getAndVerifyComponentAndInstance(info, expectedType, expectedRelease, onlyActive);
         | 
| 191 | 
            +
                }
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                function getAndVerifyComponentWithChild(
         | 
| 194 | 
            +
                    address component,
         | 
| 195 | 
            +
                    bool onlyActive, 
         | 
| 196 | 
            +
                    NftId childNftId, 
         | 
| 197 | 
            +
                    ObjectType expectedChildType, // assume valid component type
         | 
| 198 | 
            +
                    VersionPart expectedRelease
         | 
| 199 | 
            +
                ) 
         | 
| 200 | 
            +
                    public
         | 
| 201 | 
            +
                    view
         | 
| 202 | 
            +
                    returns (
         | 
| 203 | 
            +
                        //IRegistry.ObjectInfo memory info,  // component info
         | 
| 204 | 
            +
                        NftId componentNftId,
         | 
| 205 | 
            +
                        IInstance instance)
         | 
| 206 | 
            +
                {
         | 
| 207 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 208 | 
            +
                    IRegistry.ObjectInfo memory info = registry.getObjectInfo(childNftId);
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                    // check child registration
         | 
| 211 | 
            +
                    if(info.nftId.eqz()) {
         | 
| 212 | 
            +
                        revert ErrorContractLibObjectNotRegistered(childNftId);
         | 
| 78 213 | 
             
                    }
         | 
| 79 214 |  | 
| 80 | 
            -
                     | 
| 81 | 
            -
             | 
| 215 | 
            +
                    // check child type
         | 
| 216 | 
            +
                    if(info.objectType != expectedChildType) {
         | 
| 217 | 
            +
                        revert ErrorContractLibObjectTypeMismatch(
         | 
| 218 | 
            +
                            childNftId, 
         | 
| 219 | 
            +
                            expectedChildType, 
         | 
| 220 | 
            +
                            info.objectType);
         | 
| 221 | 
            +
                    }
         | 
| 82 222 |  | 
| 223 | 
            +
                    // check child release
         | 
| 224 | 
            +
                    if(info.release != expectedRelease) {
         | 
| 225 | 
            +
                        revert ErrorContractLibObjectReleaseMismatch(
         | 
| 226 | 
            +
                            childNftId, 
         | 
| 227 | 
            +
                            expectedRelease, 
         | 
| 228 | 
            +
                            info.release);
         | 
| 229 | 
            +
                    }
         | 
| 83 230 |  | 
| 84 | 
            -
             | 
| 85 | 
            -
                     | 
| 86 | 
            -
             | 
| 87 | 
            -
                     | 
| 88 | 
            -
                     | 
| 231 | 
            +
                    info = registry.getObjectInfo(info.parentNftId);
         | 
| 232 | 
            +
                    componentNftId = info.nftId;
         | 
| 233 | 
            +
             | 
| 234 | 
            +
                    // check parent is component
         | 
| 235 | 
            +
                    if(info.objectAddress != component) {
         | 
| 236 | 
            +
                        revert ErrorContractLibObjectParentMismatch(
         | 
| 237 | 
            +
                            childNftId,
         | 
| 238 | 
            +
                            registry.getNftIdForAddress(component),
         | 
| 239 | 
            +
                            info.nftId);
         | 
| 240 | 
            +
                    }
         | 
| 241 | 
            +
             | 
| 242 | 
            +
                    // get instance
         | 
| 243 | 
            +
                    instance = getAndVerifyInstance(info);// _getAndVerifyInstance(info);
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                    // check component is active
         | 
| 246 | 
            +
                    _checkComponentActive(
         | 
| 247 | 
            +
                        instance, 
         | 
| 248 | 
            +
                        component, 
         | 
| 249 | 
            +
                        componentNftId, 
         | 
| 250 | 
            +
                        onlyActive);
         | 
| 251 | 
            +
                }
         | 
| 252 | 
            +
             | 
| 253 | 
            +
                /// @dev 
         | 
| 254 | 
            +
                // component is contract of type COMPONENT
         | 
| 255 | 
            +
                // objectNftId is either contract of type COMPONENT or object of type POLICY, BUNDLE, etc.
         | 
| 256 | 
            +
                //             is either child of component or have same parent as component
         | 
| 257 | 
            +
                function getAndVerifyComponentAndObject(
         | 
| 258 | 
            +
                    address component,
         | 
| 259 | 
            +
                    ObjectType expectedComponentType,
         | 
| 260 | 
            +
                    bool onlyActive, 
         | 
| 261 | 
            +
                    NftId objectNftId,
         | 
| 262 | 
            +
                    ObjectType expectedObjectType,
         | 
| 263 | 
            +
                    VersionPart expectedRelease
         | 
| 89 264 | 
             
                )
         | 
| 90 | 
            -
                     | 
| 265 | 
            +
                    public
         | 
| 91 266 | 
             
                    view
         | 
| 92 267 | 
             
                    returns (
         | 
| 93 | 
            -
                         | 
| 94 | 
            -
                        address  | 
| 95 | 
            -
             | 
| 268 | 
            +
                        NftId componentNftId,
         | 
| 269 | 
            +
                        address objectAddress, // 0 for non contracts objects
         | 
| 270 | 
            +
                        IInstance instance)
         | 
| 96 271 | 
             
                {
         | 
| 97 | 
            -
                     | 
| 98 | 
            -
             | 
| 272 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 273 | 
            +
             | 
| 274 | 
            +
                    IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(component);
         | 
| 275 | 
            +
                    componentNftId = componentInfo.nftId;
         | 
| 276 | 
            +
             | 
| 277 | 
            +
                    // check component registered 
         | 
| 278 | 
            +
             | 
| 279 | 
            +
                    // check component type
         | 
| 280 | 
            +
                    if(expectedComponentType != COMPONENT()) {
         | 
| 281 | 
            +
                        if(componentInfo.objectType != expectedComponentType) {
         | 
| 282 | 
            +
                            revert ErrorContractLibComponentTypeMismatch(
         | 
| 283 | 
            +
                                //component,
         | 
| 284 | 
            +
                                componentInfo.nftId,
         | 
| 285 | 
            +
                                expectedComponentType,
         | 
| 286 | 
            +
                                componentInfo.objectType);
         | 
| 287 | 
            +
                        }
         | 
| 288 | 
            +
                    } else if(
         | 
| 289 | 
            +
                        !(
         | 
| 290 | 
            +
                            componentInfo.objectType == PRODUCT() ||
         | 
| 291 | 
            +
                            componentInfo.objectType == POOL() ||
         | 
| 292 | 
            +
                            componentInfo.objectType == DISTRIBUTION() ||
         | 
| 293 | 
            +
                            componentInfo.objectType == ORACLE()
         | 
| 294 | 
            +
                        )
         | 
| 295 | 
            +
                    ) {
         | 
| 296 | 
            +
                        revert ErrorContractLibCallerNotComponent(
         | 
| 297 | 
            +
                            //component,
         | 
| 298 | 
            +
                            componentInfo.nftId,
         | 
| 299 | 
            +
                            componentInfo.objectType);
         | 
| 300 | 
            +
                    }
         | 
| 301 | 
            +
             | 
| 302 | 
            +
                    // check component release
         | 
| 303 | 
            +
                    if(componentInfo.release != expectedRelease) {
         | 
| 304 | 
            +
                        revert ErrorContractLibComponentReleaseMismatch(
         | 
| 305 | 
            +
                            //component, 
         | 
| 306 | 
            +
                            componentInfo.nftId, 
         | 
| 307 | 
            +
                            expectedRelease, 
         | 
| 308 | 
            +
                            componentInfo.release);
         | 
| 309 | 
            +
                    }
         | 
| 310 | 
            +
             | 
| 311 | 
            +
                    IRegistry.ObjectInfo memory objectInfo = registry.getObjectInfo(objectNftId);
         | 
| 312 | 
            +
                    objectAddress = objectInfo.objectAddress;
         | 
| 313 | 
            +
             | 
| 314 | 
            +
                    // check object type
         | 
| 315 | 
            +
                    if(objectInfo.objectType != expectedObjectType) {
         | 
| 316 | 
            +
                        revert ErrorContractLibObjectTypeMismatch(
         | 
| 317 | 
            +
                            objectNftId, 
         | 
| 318 | 
            +
                            expectedObjectType, 
         | 
| 319 | 
            +
                            objectInfo.objectType);
         | 
| 320 | 
            +
                    }
         | 
| 321 | 
            +
             | 
| 322 | 
            +
                    if(componentInfo.objectType == PRODUCT()) {
         | 
| 323 | 
            +
                        // check object parent is product
         | 
| 324 | 
            +
                        if(componentInfo.nftId != objectInfo.parentNftId) {
         | 
| 325 | 
            +
                            revert ErrorContractLibObjectParentMismatch(
         | 
| 326 | 
            +
                                objectNftId,
         | 
| 327 | 
            +
                                objectInfo.parentNftId,
         | 
| 328 | 
            +
                                componentInfo.nftId);
         | 
| 329 | 
            +
                        }
         | 
| 330 | 
            +
                    } else {
         | 
| 331 | 
            +
                        // check component parent is product
         | 
| 332 | 
            +
             | 
| 333 | 
            +
                        // check object parent is same product
         | 
| 334 | 
            +
                        if(componentInfo.parentNftId != objectInfo.parentNftId) {
         | 
| 335 | 
            +
                            revert ErrorContractLibParentsMismatch(
         | 
| 336 | 
            +
                                componentInfo.nftId,
         | 
| 337 | 
            +
                                componentInfo.parentNftId,
         | 
| 338 | 
            +
                                objectNftId, 
         | 
| 339 | 
            +
                                objectInfo.parentNftId);
         | 
| 340 | 
            +
                        }
         | 
| 341 | 
            +
                    }
         | 
| 342 | 
            +
             | 
| 343 | 
            +
                    // get instance
         | 
| 344 | 
            +
                    instance = getAndVerifyInstance(componentInfo);
         | 
| 345 | 
            +
             | 
| 346 | 
            +
                    // check component is active
         | 
| 347 | 
            +
                    _checkComponentActive(
         | 
| 348 | 
            +
                        instance, 
         | 
| 349 | 
            +
                        component, 
         | 
| 350 | 
            +
                        componentNftId, 
         | 
| 351 | 
            +
                        onlyActive);
         | 
| 99 352 | 
             
                }
         | 
| 100 353 |  | 
| 101 354 |  | 
| 102 355 | 
             
                function getInstanceForComponent(
         | 
| 103 | 
            -
                    IRegistry registry, 
         | 
| 104 356 | 
             
                    NftId componentNftId
         | 
| 105 357 | 
             
                )
         | 
| 106 358 | 
             
                    public
         | 
| 107 359 | 
             
                    view
         | 
| 108 360 | 
             
                    returns (address instance)
         | 
| 109 361 | 
             
                {
         | 
| 362 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 110 363 | 
             
                    NftId productNftId = registry.getParentNftId(componentNftId);
         | 
| 111 364 | 
             
                    NftId instanceNftId = registry.getParentNftId(productNftId);
         | 
| 112 365 | 
             
                    return registry.getObjectInfo(instanceNftId).objectAddress;
         | 
| 113 366 | 
             
                }
         | 
| 114 367 |  | 
| 368 | 
            +
                // TODO check array of nfts and array of types
         | 
| 369 | 
            +
                //      need to call: checkNftType({nftId: {nftId1, nftId2, nftId3}, expectedObjectType: {.., .., ..}})
         | 
| 370 | 
            +
                /*function checkNftType(NftId nftId, ObjectType expectedObjectType) external view {
         | 
| 371 | 
            +
                    VersionPart expectedRelease = getRelease();
         | 
| 372 | 
            +
                    if(expectedObjectType.eqz() || !_getRegistry().isObjectType(nftId, expectedObjectType, expectedRelease)) {
         | 
| 373 | 
            +
                        revert ErrorNftOwnableInvalidType(nftId, expectedObjectType, expectedRelease);
         | 
| 374 | 
            +
                    }
         | 
| 375 | 
            +
                }*/
         | 
| 115 376 |  | 
| 377 | 
            +
                // TODO hardcoded token registry address?
         | 
| 116 378 | 
             
                function isActiveToken(
         | 
| 117 379 | 
             
                    address tokenRegistryAddress,
         | 
| 118 380 | 
             
                    ChainId chainId, 
         | 
| @@ -123,7 +385,7 @@ library ContractLib { | |
| 123 385 | 
             
                    view 
         | 
| 124 386 | 
             
                    returns (bool)
         | 
| 125 387 | 
             
                {
         | 
| 126 | 
            -
                    return  | 
| 388 | 
            +
                    return TokenRegistry(
         | 
| 127 389 | 
             
                        tokenRegistryAddress).isActive(
         | 
| 128 390 | 
             
                            chainId, token, release);
         | 
| 129 391 | 
             
                }
         | 
| @@ -160,16 +422,6 @@ library ContractLib { | |
| 160 422 | 
             
                }
         | 
| 161 423 |  | 
| 162 424 |  | 
| 163 | 
            -
                function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
         | 
| 164 | 
            -
                    NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
         | 
| 165 | 
            -
                    if (nftId.eqz()) {
         | 
| 166 | 
            -
                        return false;
         | 
| 167 | 
            -
                    }
         | 
| 168 | 
            -
             | 
| 169 | 
            -
                    return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
         | 
| 170 | 
            -
                }
         | 
| 171 | 
            -
             | 
| 172 | 
            -
             | 
| 173 425 | 
             
                function isService(address service) public view returns (bool) {
         | 
| 174 426 | 
             
                    if (!isContract(service)) {
         | 
| 175 427 | 
             
                        return false;
         | 
| @@ -179,12 +431,8 @@ library ContractLib { | |
| 179 431 | 
             
                }
         | 
| 180 432 |  | 
| 181 433 |  | 
| 182 | 
            -
                function isRegistry(address registry) public  | 
| 183 | 
            -
                     | 
| 184 | 
            -
                        return false;
         | 
| 185 | 
            -
                    }
         | 
| 186 | 
            -
             | 
| 187 | 
            -
                    return supportsInterface(registry, type(IRegistry).interfaceId);
         | 
| 434 | 
            +
                function isRegistry(address registry) public pure returns (bool) {
         | 
| 435 | 
            +
                    return registry == REGISTRY_ADDRESS;
         | 
| 188 436 | 
             
                }
         | 
| 189 437 |  | 
| 190 438 |  | 
| @@ -206,39 +454,59 @@ library ContractLib { | |
| 206 454 |  | 
| 207 455 |  | 
| 208 456 | 
             
                function _getAndVerifyComponentAndInstance(
         | 
| 209 | 
            -
                    IRegistry registry, 
         | 
| 210 457 | 
             
                    IRegistry.ObjectInfo memory info,
         | 
| 211 458 | 
             
                    ObjectType expectedType,
         | 
| 459 | 
            +
                    VersionPart expectedRelease,
         | 
| 212 460 | 
             
                    bool onlyActive
         | 
| 213 461 | 
             
                )
         | 
| 214 462 | 
             
                    internal
         | 
| 215 463 | 
             
                    view
         | 
| 216 464 | 
             
                    returns (
         | 
| 217 | 
            -
                         | 
| 218 | 
            -
                         | 
| 465 | 
            +
                        NftId componentNftId,
         | 
| 466 | 
            +
                        IInstance instance
         | 
| 219 467 | 
             
                    )
         | 
| 220 468 | 
             
                {
         | 
| 221 | 
            -
                    if( | 
| 222 | 
            -
                         | 
| 469 | 
            +
                    if(expectedType != COMPONENT()) {
         | 
| 470 | 
            +
                        if(info.objectType != expectedType) {
         | 
| 471 | 
            +
                            revert ErrorContractLibComponentTypeMismatch(
         | 
| 472 | 
            +
                                //info.objectAddress,
         | 
| 473 | 
            +
                                info.nftId,
         | 
| 474 | 
            +
                                expectedType,
         | 
| 475 | 
            +
                                info.objectType);
         | 
| 476 | 
            +
                        }
         | 
| 477 | 
            +
                    } else if(
         | 
| 478 | 
            +
                        !(
         | 
| 479 | 
            +
                            info.objectType == PRODUCT() ||
         | 
| 480 | 
            +
                            info.objectType == POOL() ||
         | 
| 481 | 
            +
                            info.objectType == DISTRIBUTION() ||
         | 
| 482 | 
            +
                            info.objectType == ORACLE()
         | 
| 483 | 
            +
                        )
         | 
| 484 | 
            +
                    ) {
         | 
| 485 | 
            +
                        revert ErrorContractLibCallerNotComponent(
         | 
| 486 | 
            +
                            //info.objectAddress,
         | 
| 223 487 | 
             
                            info.nftId,
         | 
| 224 | 
            -
                            expectedType,
         | 
| 225 488 | 
             
                            info.objectType);
         | 
| 226 489 | 
             
                    }
         | 
| 227 490 |  | 
| 491 | 
            +
                    if(info.release != expectedRelease) {
         | 
| 492 | 
            +
                        revert ErrorContractLibComponentReleaseMismatch(
         | 
| 493 | 
            +
                            //info.objectAddress,
         | 
| 494 | 
            +
                            info.nftId,
         | 
| 495 | 
            +
                            expectedRelease,
         | 
| 496 | 
            +
                            info.release);
         | 
| 497 | 
            +
                    }
         | 
| 498 | 
            +
             | 
| 499 | 
            +
                    componentNftId = info.nftId;
         | 
| 500 | 
            +
             | 
| 228 501 | 
             
                    // get instance and check component is active
         | 
| 229 | 
            -
                    instance = getAndVerifyInstance( | 
| 502 | 
            +
                    instance = getAndVerifyInstance(info);
         | 
| 230 503 | 
             
                    _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
         | 
| 231 | 
            -
             | 
| 232 | 
            -
                    return (
         | 
| 233 | 
            -
                        info,
         | 
| 234 | 
            -
                        instance
         | 
| 235 | 
            -
                    );
         | 
| 236 504 | 
             
                }
         | 
| 237 505 |  | 
| 238 506 |  | 
| 239 507 | 
             
                function _checkComponentActive(
         | 
| 240 | 
            -
                     | 
| 241 | 
            -
                    address  | 
| 508 | 
            +
                    IInstance instance, 
         | 
| 509 | 
            +
                    address component, 
         | 
| 242 510 | 
             
                    NftId componentNftId, 
         | 
| 243 511 | 
             
                    bool onlyActive
         | 
| 244 512 | 
             
                )
         | 
| @@ -246,11 +514,8 @@ library ContractLib { | |
| 246 514 | 
             
                    view
         | 
| 247 515 | 
             
                {
         | 
| 248 516 | 
             
                    if (onlyActive) {
         | 
| 249 | 
            -
                        if ( | 
| 250 | 
            -
                             | 
| 251 | 
            -
                                target)
         | 
| 252 | 
            -
                        ) {
         | 
| 253 | 
            -
                            revert ErrorContractLibComponentInactive(componentNftId);
         | 
| 517 | 
            +
                        if (instance.getInstanceAdmin().isTargetLocked(component)) {
         | 
| 518 | 
            +
                            revert ErrorContractLibComponentInactive(/*component, */componentNftId);
         | 
| 254 519 | 
             
                        }
         | 
| 255 520 | 
             
                    }
         | 
| 256 521 | 
             
                }
         | 
| @@ -260,13 +525,14 @@ library ContractLib { | |
| 260 525 | 
             
                /// The info may represent a product or any other component.
         | 
| 261 526 | 
             
                /// If the parent of the provided info is not registered with the correct type, the function reverts.
         | 
| 262 527 | 
             
                function getAndVerifyInstance(
         | 
| 263 | 
            -
                    IRegistry registry,
         | 
| 264 528 | 
             
                    IRegistry.ObjectInfo memory info
         | 
| 265 529 | 
             
                )
         | 
| 266 530 | 
             
                    public
         | 
| 267 531 | 
             
                    view
         | 
| 268 | 
            -
                    returns ( | 
| 532 | 
            +
                    returns (IInstance instance)
         | 
| 269 533 | 
             
                {
         | 
| 534 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 535 | 
            +
             | 
| 270 536 | 
             
                    // get instance for product case
         | 
| 271 537 | 
             
                    if (info.objectType == PRODUCT()) {
         | 
| 272 538 | 
             
                        // verify that parent of product is registered instance
         | 
| @@ -278,7 +544,7 @@ library ContractLib { | |
| 278 544 | 
             
                        }
         | 
| 279 545 |  | 
| 280 546 | 
             
                        // we have verified that parent object is a registerd instance -> we return the instance address
         | 
| 281 | 
            -
                        return instanceInfo.objectAddress;
         | 
| 547 | 
            +
                        return IInstance(instanceInfo.objectAddress);
         | 
| 282 548 | 
             
                    }
         | 
| 283 549 |  | 
| 284 550 | 
             
                    // not product: verify parent is registered product
         | 
| @@ -290,23 +556,23 @@ library ContractLib { | |
| 290 556 | 
             
                    }
         | 
| 291 557 |  | 
| 292 558 | 
             
                    // we have verified that parent is registerd product -> we can rely on registry that its parent is an instance
         | 
| 293 | 
            -
                    return registry.getObjectAddress(info.parentNftId);
         | 
| 559 | 
            +
                    return IInstance(registry.getObjectAddress(info.parentNftId));
         | 
| 294 560 | 
             
                }
         | 
| 295 561 |  | 
| 296 | 
            -
             | 
| 562 | 
            +
                // check registration and return info
         | 
| 297 563 | 
             
                function _getAndVerifyObjectInfo(
         | 
| 298 | 
            -
                    IRegistry registry, 
         | 
| 299 564 | 
             
                    address caller
         | 
| 300 565 | 
             
                )
         | 
| 301 566 | 
             
                    internal
         | 
| 302 567 | 
             
                    view
         | 
| 303 568 | 
             
                    returns (IRegistry.ObjectInfo memory info)
         | 
| 304 569 | 
             
                {
         | 
| 305 | 
            -
                     | 
| 306 | 
            -
             | 
| 570 | 
            +
                    IRegistry registry = getRegistry();
         | 
| 571 | 
            +
             | 
| 572 | 
            +
                    info = registry.getObjectInfo(caller);
         | 
| 573 | 
            +
             | 
| 574 | 
            +
                    if (info.nftId.eqz()) {
         | 
| 307 575 | 
             
                        revert ErrorContractLibCallerNotRegistered(caller);
         | 
| 308 576 | 
             
                    }
         | 
| 309 | 
            -
             | 
| 310 | 
            -
                    info = registry.getObjectInfo(componentNftId);
         | 
| 311 577 | 
             
                }
         | 
| 312 578 | 
             
            }
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 5 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            /// @dev component base class
         | 
| 8 | 
            +
            /// component examples are product, distribution, pool and oracle
         | 
| 9 | 
            +
            interface IAuthorizedComponent is 
         | 
| 10 | 
            +
                IComponent
         | 
| 11 | 
            +
            {
         | 
| 12 | 
            +
                /// @dev returns the initial component authorization specification.
         | 
| 13 | 
            +
                function getAuthorization() external view returns (IAuthorization authorization);
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            }
         | 
| @@ -29,6 +29,11 @@ interface IComponent is | |
| 29 29 | 
             
                event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
         | 
| 30 30 | 
             
                event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
         | 
| 31 31 |  | 
| 32 | 
            +
                /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
         | 
| 33 | 
            +
                /// @param amount the amount to withdraw
         | 
| 34 | 
            +
                /// @return withdrawnAmount the amount that was actually withdrawn
         | 
| 35 | 
            +
                function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
         | 
| 36 | 
            +
             | 
| 32 37 | 
             
                /// @dev returns the name of this component
         | 
| 33 38 | 
             
                /// to successfully register the component with an instance the name MUST be unique in the linked instance
         | 
| 34 39 | 
             
                function getName() external view returns (string memory name);
         | 
| @@ -43,9 +48,6 @@ interface IComponent is | |
| 43 48 | 
             
                /// the default address is the token handler address
         | 
| 44 49 | 
             
                function getWallet() external view returns (address walletAddress);
         | 
| 45 50 |  | 
| 46 | 
            -
                /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
         | 
| 47 | 
            -
                function isNftInterceptor() external view returns(bool isInterceptor);
         | 
| 48 | 
            -
             | 
| 49 51 | 
             
                /// @dev returns true iff this component is registered with the registry
         | 
| 50 52 | 
             
                function isRegistered() external view returns (bool);
         | 
| 51 53 |  | 
| @@ -18,18 +18,11 @@ interface IComponentService is | |
| 18 18 | 
             
            {
         | 
| 19 19 | 
             
                // registerProduct
         | 
| 20 20 | 
             
                error ErrorComponentServiceCallerNotInstance(address caller);
         | 
| 21 | 
            -
                error ErrorComponentServiceNotProduct(address product);
         | 
| 22 21 | 
             
                error ErrorComponentServiceTokenInvalid(address token);
         | 
| 23 22 |  | 
| 24 23 | 
             
                // registerComponent
         | 
| 25 24 | 
             
                error ErrorComponentServiceCallerNotProduct(address caller);
         | 
| 26 | 
            -
                error ErrorComponentServiceNotComponent(address component);
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                error ErrorComponentServiceNotInstanceLinkedComponent(address component);
         | 
| 29 25 | 
             
                error ErrorComponentServiceComponentTypeNotSupported(address component, ObjectType invalid);
         | 
| 30 | 
            -
                error ErrorComponentServiceComponentParentInvalid(address component, NftId required, NftId actual);
         | 
| 31 | 
            -
                error ErrorComponentServiceComponentReleaseMismatch(address component, VersionPart serviceRelease, VersionPart componentRelease);
         | 
| 32 | 
            -
                error ErrorComponentServiceComponentAlreadyRegistered(address component);
         | 
| 33 26 |  | 
| 34 27 | 
             
                error ErrorProductServiceNoDistributionExpected(NftId productNftId);
         | 
| 35 28 | 
             
                error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
         | 
| @@ -37,18 +30,11 @@ interface IComponentService is | |
| 37 30 | 
             
                error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
         | 
| 38 31 | 
             
                error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
         | 
| 39 32 |  | 
| 40 | 
            -
                error ErrorComponentServiceNewWalletAddressZero();
         | 
| 41 | 
            -
                error ErrorComponentServiceWalletAddressZero();
         | 
| 42 | 
            -
                error ErrorComponentServiceWalletAddressIsSameAsCurrent();
         | 
| 43 | 
            -
             | 
| 44 33 | 
             
                error ErrorComponentServiceWithdrawAmountIsZero();
         | 
| 45 34 | 
             
                error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
         | 
| 46 | 
            -
                error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
         | 
| 47 35 |  | 
| 48 36 | 
             
                event LogComponentServiceComponentLocked(address component, bool locked);
         | 
| 49 37 | 
             
                event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner); 
         | 
| 50 | 
            -
                event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
         | 
| 51 | 
            -
                event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
         | 
| 52 38 | 
             
                event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
         | 
| 53 39 | 
             
                event LogComponentServiceProductFeesUpdated(NftId productNftId);
         | 
| 54 40 | 
             
                event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
         |