@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13d67f-541
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 +86 -312
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +729 -287
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
- 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 +560 -220
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +128 -218
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +58 -137
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +555 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +170 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +37 -116
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
- 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 +183 -138
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +401 -59
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +324 -260
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +214 -215
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -110
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +196 -165
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +600 -306
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +551 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +415 -15
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +606 -112
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1121 -374
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +379 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1136 -561
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +419 -82
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -54
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1283 -1912
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +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 +77 -91
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
- 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 +41 -55
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +141 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +134 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -124
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +401 -59
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +298 -329
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +133 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -131
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -73
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -86
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +565 -367
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +169 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +313 -64
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -47
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +193 -192
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +292 -195
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +142 -94
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -55
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +168 -167
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +283 -195
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +153 -81
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +118 -70
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +187 -186
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +326 -91
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +123 -47
- 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 +54 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +92 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +845 -489
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +71 -35
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -43
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +398 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +60 -60
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +269 -561
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +134 -86
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +525 -4
- 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 +41 -41
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +155 -382
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +41 -55
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +60 -74
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1457 -145
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1634 -275
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +149 -62
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -174
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +102 -50
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
- 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 +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
- 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 +49 -50
- 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 +23 -4
- 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 +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
- 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/String.sol/StrLib.json +69 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +389 -306
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +128 -4
- package/contracts/authorization/Authorization.sol +161 -260
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +89 -84
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +19 -18
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +45 -85
- package/contracts/distribution/DistributionService.sol +192 -99
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +38 -24
- package/contracts/examples/fire/FirePool.sol +6 -6
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +15 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/flight/FlightLib.sol +279 -0
- package/contracts/examples/flight/FlightOracle.sol +168 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +470 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +26 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +34 -11
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -13
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +119 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +109 -19
- package/contracts/instance/IInstanceService.sol +59 -11
- package/contracts/instance/Instance.sol +184 -65
- package/contracts/instance/InstanceAdmin.sol +221 -191
- package/contracts/instance/InstanceAuthorizationV3.sol +153 -72
- package/contracts/instance/InstanceReader.sol +447 -314
- package/contracts/instance/InstanceService.sol +305 -205
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +152 -116
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +18 -8
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +12 -12
- package/contracts/oracle/Oracle.sol +5 -9
- package/contracts/oracle/OracleService.sol +98 -80
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +4 -18
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +66 -165
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +27 -51
- package/contracts/pool/IPoolService.sol +56 -58
- package/contracts/pool/Pool.sol +15 -29
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +221 -227
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +93 -25
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +4 -5
- package/contracts/product/BasicProductAuthorization.sol +33 -11
- package/contracts/product/ClaimService.sol +221 -209
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +31 -11
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +252 -302
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +95 -36
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +23 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +22 -11
- package/contracts/registry/RegistryAdmin.sol +94 -383
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +199 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +157 -117
- package/contracts/registry/ServiceAuthorizationV3.sol +193 -54
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +36 -55
- package/contracts/shared/ComponentService.sol +350 -438
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +260 -2
- package/contracts/shared/IComponent.sol +1 -10
- package/contracts/shared/IComponentService.sol +22 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +62 -35
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +42 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +45 -100
- package/contracts/staking/IStaking.sol +265 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +502 -210
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -194
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- 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 +70 -68
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -8
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +27 -13
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -3,11 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
9
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
|
-
import {IComponent} from "../shared/IComponent.sol";
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
11
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
8
|
import {IComponentService} from "./IComponentService.sol";
|
13
9
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -15,37 +11,37 @@ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
|
15
11
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
16
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
17
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
18
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
19
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
20
14
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
15
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
16
|
import {IRegistry} from "../registry/IRegistry.sol";
|
23
17
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
|
+
import {IStaking} from "../staking/IStaking.sol";
|
19
|
+
import {IStakingService} from "../staking/IStakingService.sol";
|
20
|
+
|
21
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
22
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
25
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
25
|
-
import {NftId} from "../type/NftId.sol";
|
26
|
-
import {ObjectType,
|
27
|
-
import {
|
27
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
28
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
29
|
+
import {ProductStore} from "../instance/ProductStore.sol";
|
30
|
+
import {Service} from "../shared/Service.sol";
|
28
31
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
32
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
30
33
|
|
34
|
+
|
31
35
|
contract ComponentService is
|
32
|
-
|
36
|
+
Service,
|
33
37
|
IComponentService
|
34
38
|
{
|
35
|
-
|
36
39
|
bool private constant INCREASE = true;
|
37
40
|
bool private constant DECREASE = false;
|
38
41
|
|
42
|
+
IAccountingService private _accountingService;
|
39
43
|
IRegistryService private _registryService;
|
40
|
-
|
41
|
-
|
42
|
-
modifier onlyComponent(address component) {
|
43
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
-
}
|
46
|
-
_;
|
47
|
-
}
|
48
|
-
|
44
|
+
IStaking private _staking;
|
49
45
|
|
50
46
|
function _initialize(
|
51
47
|
address owner,
|
@@ -56,233 +52,285 @@ contract ComponentService is
|
|
56
52
|
initializer()
|
57
53
|
{
|
58
54
|
(
|
59
|
-
address
|
60
|
-
address
|
55
|
+
address authority,
|
56
|
+
address registry
|
61
57
|
) = abi.decode(data, (address, address));
|
62
58
|
|
63
|
-
|
59
|
+
__Service_init(authority, registry, owner);
|
64
60
|
|
61
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
65
62
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
66
|
-
|
63
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
67
64
|
|
68
65
|
_registerInterface(type(IComponentService).interfaceId);
|
69
66
|
}
|
70
67
|
|
71
68
|
//-------- component ----------------------------------------------------//
|
72
69
|
|
73
|
-
|
70
|
+
/// @inheritdoc IComponentService
|
71
|
+
function registerComponent(address componentAddress)
|
74
72
|
external
|
75
73
|
virtual
|
76
|
-
|
74
|
+
restricted()
|
77
75
|
returns (NftId componentNftId)
|
78
76
|
{
|
79
|
-
//
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
if (componentType == DISTRIBUTION()) {
|
85
|
-
return _registerDistribution(component);
|
77
|
+
// checks
|
78
|
+
// check sender is registered product
|
79
|
+
IRegistry registry = getRegistry();
|
80
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
81
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
86
82
|
}
|
87
|
-
|
88
|
-
|
83
|
+
|
84
|
+
// check provided address is product contract
|
85
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
86
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
89
87
|
}
|
90
88
|
|
91
|
-
|
92
|
-
|
89
|
+
NftId productNftId = registry.getNftIdForAddress(msg.sender);
|
90
|
+
IInstance instance = IInstance(
|
91
|
+
registry.getObjectAddress(
|
92
|
+
registry.getParentNftId(productNftId)));
|
93
|
+
|
94
|
+
componentNftId = _verifyAndRegister(
|
95
|
+
instance,
|
96
|
+
componentAddress,
|
97
|
+
productNftId, // product is parent of component to be registered
|
98
|
+
address(0)); // token will be inhereited from product
|
93
99
|
}
|
94
100
|
|
101
|
+
|
102
|
+
/// @inheritdoc IComponentService
|
95
103
|
function approveTokenHandler(
|
96
104
|
IERC20Metadata token,
|
97
105
|
Amount amount
|
98
106
|
)
|
99
107
|
external
|
100
108
|
virtual
|
109
|
+
restricted()
|
101
110
|
{
|
102
111
|
// checks
|
103
|
-
(NftId componentNftId
|
104
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
105
|
-
componentNftId)
|
112
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
113
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
114
|
+
componentNftId);
|
106
115
|
|
107
116
|
// effects
|
108
117
|
tokenHandler.approve(token, amount);
|
109
118
|
}
|
110
119
|
|
111
120
|
|
112
|
-
|
113
|
-
|
114
|
-
Amount amount
|
115
|
-
)
|
121
|
+
/// @inheritdoc IComponentService
|
122
|
+
function setWallet(address newWallet)
|
116
123
|
external
|
117
124
|
virtual
|
125
|
+
restricted()
|
118
126
|
{
|
119
127
|
// checks
|
120
|
-
NftId
|
121
|
-
|
122
|
-
|
123
|
-
STAKING(),
|
124
|
-
true);
|
128
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
129
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
130
|
+
componentNftId);
|
125
131
|
|
126
132
|
// effects
|
127
|
-
|
128
|
-
tokenHandler.approve(token, amount);
|
133
|
+
tokenHandler.setWallet(newWallet);
|
129
134
|
}
|
130
135
|
|
131
|
-
|
132
|
-
function
|
133
|
-
external
|
136
|
+
/// @inheritdoc IComponentService
|
137
|
+
function setLocked(bool locked)
|
138
|
+
external
|
134
139
|
virtual
|
140
|
+
restricted()
|
135
141
|
{
|
136
|
-
|
137
|
-
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
138
|
-
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
139
|
-
componentNftId).tokenHandler;
|
142
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
140
143
|
|
141
|
-
|
142
|
-
|
144
|
+
address component = msg.sender;
|
145
|
+
instance.getInstanceAdmin().setContractLocked(
|
146
|
+
component,
|
147
|
+
locked);
|
148
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
143
149
|
}
|
144
150
|
|
145
|
-
// TODO implement
|
146
|
-
function lock() external virtual {}
|
147
|
-
|
148
|
-
// TODO implement
|
149
|
-
function unlock() external virtual {}
|
150
151
|
|
152
|
+
/// @inheritdoc IComponentService
|
151
153
|
function withdrawFees(Amount amount)
|
152
154
|
external
|
153
155
|
virtual
|
156
|
+
restricted()
|
154
157
|
returns (Amount withdrawnAmount)
|
155
158
|
{
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
+
// checks
|
160
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
161
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
159
162
|
|
160
163
|
// determine withdrawn amount
|
164
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
161
165
|
withdrawnAmount = amount;
|
162
|
-
|
163
|
-
|
164
|
-
|
166
|
+
|
167
|
+
// max amount -> withraw all available fees
|
168
|
+
if (amount == AmountLib.max()) {
|
169
|
+
withdrawnAmount = maxAvailableAmount;
|
170
|
+
}
|
171
|
+
|
172
|
+
// check modified withdrawn amount
|
173
|
+
if (withdrawnAmount.eqz()) {
|
165
174
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
166
|
-
} else {
|
167
|
-
|
168
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
169
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
170
|
-
}
|
175
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
176
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
171
177
|
}
|
172
178
|
|
179
|
+
// effects
|
173
180
|
// decrease fee counters by withdrawnAmount
|
174
|
-
|
181
|
+
_accountingService.decreaseComponentFees(
|
182
|
+
instance.getInstanceStore(),
|
183
|
+
componentNftId,
|
184
|
+
withdrawnAmount);
|
175
185
|
|
176
186
|
// transfer amount to component owner
|
177
187
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
178
|
-
|
179
|
-
|
188
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
189
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
190
|
+
componentNftId,
|
191
|
+
componentOwner,
|
192
|
+
address(tokenHandler.TOKEN()),
|
193
|
+
withdrawnAmount);
|
194
|
+
|
195
|
+
// interactions
|
196
|
+
// transfer amount to component owner
|
197
|
+
tokenHandler.pushFeeToken(
|
198
|
+
componentOwner,
|
199
|
+
withdrawnAmount);
|
180
200
|
}
|
181
201
|
|
182
202
|
|
183
203
|
//-------- product ------------------------------------------------------//
|
184
204
|
|
185
|
-
|
205
|
+
/// @inheritdoc IComponentService
|
206
|
+
function registerProduct(address productAddress, address token)
|
186
207
|
external
|
187
208
|
virtual
|
188
|
-
|
209
|
+
restricted()
|
210
|
+
nonReentrant()
|
189
211
|
returns (NftId productNftId)
|
190
212
|
{
|
191
|
-
//
|
192
|
-
|
193
|
-
|
194
|
-
(,
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
// get product
|
199
|
-
IProductComponent product = IProductComponent(productAddress);
|
213
|
+
// checks
|
214
|
+
// check sender is registered instance
|
215
|
+
IRegistry registry = getRegistry();
|
216
|
+
if (!registry.isObjectType(msg.sender, INSTANCE())) {
|
217
|
+
revert ErrorComponentServiceCallerNotInstance(msg.sender);
|
218
|
+
}
|
200
219
|
|
201
|
-
//
|
202
|
-
|
203
|
-
|
204
|
-
|
220
|
+
// check provided address is product contract
|
221
|
+
if (!_isProduct(productAddress)) {
|
222
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
223
|
+
}
|
205
224
|
|
206
|
-
|
207
|
-
|
225
|
+
IInstance instance = IInstance(msg.sender);
|
226
|
+
NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
|
227
|
+
productNftId = _verifyAndRegister(
|
228
|
+
instance,
|
229
|
+
productAddress,
|
230
|
+
instanceNftId, // instance is parent of product to be registered
|
231
|
+
token);
|
232
|
+
|
233
|
+
// add product specific token for product to staking
|
234
|
+
_staking.addTargetToken(
|
235
|
+
instanceNftId,
|
236
|
+
token);
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
function _isProduct(address target) internal view virtual returns (bool) {
|
241
|
+
if (!_isInstanceLinkedComponent(target)) {
|
242
|
+
return false;
|
243
|
+
}
|
244
|
+
|
245
|
+
return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
|
246
|
+
}
|
247
|
+
|
248
|
+
|
249
|
+
function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
|
250
|
+
if (!ContractLib.isContract(target)) {
|
251
|
+
return false;
|
252
|
+
}
|
253
|
+
|
254
|
+
return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
|
208
255
|
}
|
209
256
|
|
210
257
|
|
258
|
+
/// @inheritdoc IComponentService
|
211
259
|
function setProductFees(
|
212
260
|
Fee memory productFee, // product fee on net premium
|
213
261
|
Fee memory processingFee // product fee on payout amounts
|
214
262
|
)
|
215
263
|
external
|
216
264
|
virtual
|
265
|
+
restricted()
|
266
|
+
nonReentrant()
|
217
267
|
{
|
218
|
-
(NftId productNftId
|
219
|
-
IComponents.
|
268
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
269
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
220
270
|
bool feesChanged = false;
|
221
271
|
|
222
272
|
// update product fee if required
|
223
|
-
if(!FeeLib.eq(
|
224
|
-
_logUpdateFee(productNftId, "ProductFee",
|
225
|
-
|
273
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
274
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
275
|
+
feeInfo.productFee = productFee;
|
226
276
|
feesChanged = true;
|
227
277
|
}
|
228
278
|
|
229
279
|
// update processing fee if required
|
230
|
-
if(!FeeLib.eq(
|
231
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
232
|
-
|
280
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
281
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
282
|
+
feeInfo.processingFee = processingFee;
|
233
283
|
feesChanged = true;
|
234
284
|
}
|
235
285
|
|
236
286
|
if(feesChanged) {
|
237
|
-
instance.
|
287
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
238
288
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
239
289
|
}
|
240
290
|
}
|
241
291
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
// restricted()
|
292
|
+
|
293
|
+
function _createProduct(
|
294
|
+
ProductStore productStore,
|
295
|
+
NftId productNftId,
|
296
|
+
address productAddress
|
297
|
+
)
|
298
|
+
internal
|
299
|
+
virtual
|
251
300
|
{
|
252
|
-
|
253
|
-
|
254
|
-
|
301
|
+
// create product in instance instanceStore
|
302
|
+
IProductComponent product = IProductComponent(productAddress);
|
303
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
304
|
+
// force initialization of linked components with empty values to
|
305
|
+
// ensure no components are linked upon initialization of the product
|
306
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
307
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
308
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
255
309
|
|
310
|
+
// create info
|
311
|
+
productStore.createProduct(
|
312
|
+
productNftId,
|
313
|
+
initialProductInfo);
|
256
314
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
// TODO re-enable once role granting is stable and fixed
|
261
|
-
// restricted()
|
262
|
-
{
|
263
|
-
_checkNftType(productNftId, PRODUCT());
|
264
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
315
|
+
productStore.createFee(
|
316
|
+
productNftId,
|
317
|
+
product.getInitialFeeInfo());
|
265
318
|
}
|
266
319
|
|
267
320
|
//-------- distribution -------------------------------------------------//
|
268
321
|
|
269
322
|
/// @dev registers the sending component as a distribution component
|
270
|
-
function
|
323
|
+
function _createDistribution(
|
324
|
+
ProductStore productStore,
|
325
|
+
NftId productNftId,
|
326
|
+
NftId distributionNftId,
|
327
|
+
IComponents.ProductInfo memory productInfo
|
328
|
+
)
|
271
329
|
internal
|
272
330
|
virtual
|
273
|
-
|
331
|
+
nonReentrant()
|
274
332
|
{
|
275
|
-
// register/create component info
|
276
|
-
InstanceReader instanceReader;
|
277
|
-
InstanceAdmin instanceAdmin;
|
278
|
-
InstanceStore instanceStore;
|
279
|
-
NftId productNftId;
|
280
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
281
|
-
distributioAddress,
|
282
|
-
DISTRIBUTION());
|
283
|
-
|
284
333
|
// check product is still expecting a distribution registration
|
285
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
286
334
|
if (!productInfo.hasDistribution) {
|
287
335
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
288
336
|
}
|
@@ -292,11 +340,7 @@ contract ComponentService is
|
|
292
340
|
|
293
341
|
// set distribution in product info
|
294
342
|
productInfo.distributionNftId = distributionNftId;
|
295
|
-
|
296
|
-
|
297
|
-
// authorize
|
298
|
-
instanceAdmin.initializeComponentAuthorization(
|
299
|
-
IInstanceLinkedComponent(distributioAddress));
|
343
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
300
344
|
}
|
301
345
|
|
302
346
|
|
@@ -306,114 +350,45 @@ contract ComponentService is
|
|
306
350
|
)
|
307
351
|
external
|
308
352
|
virtual
|
353
|
+
restricted()
|
309
354
|
{
|
310
|
-
(NftId distributionNftId
|
311
|
-
(NftId productNftId, IComponents.
|
355
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
356
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
312
357
|
instance.getInstanceReader(), distributionNftId);
|
313
358
|
bool feesChanged = false;
|
314
359
|
|
315
360
|
// update distributino fee if required
|
316
|
-
if(!FeeLib.eq(
|
317
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
318
|
-
|
361
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
362
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
363
|
+
feeInfo.distributionFee = distributionFee;
|
319
364
|
feesChanged = true;
|
320
365
|
}
|
321
366
|
|
322
367
|
// update min distribution owner fee if required
|
323
|
-
if(!FeeLib.eq(
|
324
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
325
|
-
|
368
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
369
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
370
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
326
371
|
feesChanged = true;
|
327
372
|
}
|
328
373
|
|
329
374
|
if(feesChanged) {
|
330
|
-
instance.
|
375
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
331
376
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
332
377
|
}
|
333
378
|
}
|
334
379
|
|
335
|
-
function increaseDistributionBalance(
|
336
|
-
InstanceStore instanceStore,
|
337
|
-
NftId distributionNftId,
|
338
|
-
Amount amount,
|
339
|
-
Amount feeAmount
|
340
|
-
)
|
341
|
-
external
|
342
|
-
virtual
|
343
|
-
// TODO re-enable once role granting is stable and fixed
|
344
|
-
// restricted()
|
345
|
-
{
|
346
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
347
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
348
|
-
}
|
349
|
-
|
350
|
-
|
351
|
-
function decreaseDistributionBalance(
|
352
|
-
InstanceStore instanceStore,
|
353
|
-
NftId distributionNftId,
|
354
|
-
Amount amount,
|
355
|
-
Amount feeAmount
|
356
|
-
)
|
357
|
-
external
|
358
|
-
virtual
|
359
|
-
// TODO re-enable once role granting is stable and fixed
|
360
|
-
// restricted()
|
361
|
-
{
|
362
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
363
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
364
|
-
}
|
365
|
-
|
366
|
-
//-------- distributor -------------------------------------------------------//
|
367
|
-
|
368
|
-
function increaseDistributorBalance(
|
369
|
-
InstanceStore instanceStore,
|
370
|
-
NftId distributorNftId,
|
371
|
-
Amount amount,
|
372
|
-
Amount feeAmount
|
373
|
-
)
|
374
|
-
external
|
375
|
-
virtual
|
376
|
-
// TODO re-enable once role granting is stable and fixed
|
377
|
-
// restricted()
|
378
|
-
{
|
379
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
380
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
381
|
-
}
|
382
|
-
|
383
|
-
function decreaseDistributorBalance(
|
384
|
-
InstanceStore instanceStore,
|
385
|
-
NftId distributorNftId,
|
386
|
-
Amount amount,
|
387
|
-
Amount feeAmount
|
388
|
-
)
|
389
|
-
external
|
390
|
-
virtual
|
391
|
-
// TODO re-enable once role granting is stable and fixed
|
392
|
-
// restricted()
|
393
|
-
{
|
394
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
395
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
396
|
-
}
|
397
|
-
|
398
380
|
//-------- oracle -------------------------------------------------------//
|
399
381
|
|
400
|
-
function
|
382
|
+
function _createOracle(
|
383
|
+
ProductStore productStore,
|
384
|
+
NftId productNftId,
|
385
|
+
NftId oracleNftId,
|
386
|
+
IComponents.ProductInfo memory productInfo
|
387
|
+
)
|
401
388
|
internal
|
402
389
|
virtual
|
403
|
-
returns (NftId oracleNftId)
|
404
390
|
{
|
405
|
-
// register/create component setup
|
406
|
-
InstanceReader instanceReader;
|
407
|
-
InstanceAdmin instanceAdmin;
|
408
|
-
InstanceStore instanceStore;
|
409
|
-
NftId productNftId;
|
410
|
-
|
411
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
412
|
-
oracleAddress,
|
413
|
-
ORACLE());
|
414
|
-
|
415
391
|
// check product is still expecting an oracle registration
|
416
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
417
392
|
if (productInfo.expectedNumberOfOracles == 0) {
|
418
393
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
419
394
|
}
|
@@ -424,48 +399,37 @@ contract ComponentService is
|
|
424
399
|
// update/add oracle to product info
|
425
400
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
426
401
|
productInfo.numberOfOracles++;
|
427
|
-
|
428
|
-
|
429
|
-
// authorize
|
430
|
-
instanceAdmin.initializeComponentAuthorization(
|
431
|
-
IInstanceLinkedComponent(oracleAddress));
|
402
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
432
403
|
}
|
433
404
|
|
434
405
|
//-------- pool ---------------------------------------------------------//
|
435
406
|
|
436
|
-
function
|
407
|
+
function _createPool(
|
408
|
+
InstanceStore instanceStore,
|
409
|
+
ProductStore productStore,
|
410
|
+
NftId productNftId,
|
411
|
+
NftId poolNftId,
|
412
|
+
address componentAddress,
|
413
|
+
IComponents.ProductInfo memory productInfo
|
414
|
+
)
|
437
415
|
internal
|
438
416
|
virtual
|
439
|
-
returns (NftId poolNftId)
|
440
417
|
{
|
441
|
-
// register/create component setup
|
442
|
-
InstanceReader instanceReader;
|
443
|
-
InstanceAdmin instanceAdmin;
|
444
|
-
InstanceStore instanceStore;
|
445
|
-
NftId productNftId;
|
446
|
-
|
447
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
448
|
-
poolAddress,
|
449
|
-
POOL());
|
450
|
-
|
451
418
|
// check product is still expecting a pool registration
|
452
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
419
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
453
420
|
if (productInfo.poolNftId.gtz()) {
|
454
421
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
455
422
|
}
|
456
423
|
|
457
424
|
// create info
|
458
|
-
IPoolComponent pool = IPoolComponent(
|
425
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
459
426
|
instanceStore.createPool(
|
460
427
|
poolNftId,
|
461
428
|
pool.getInitialPoolInfo());
|
462
429
|
|
463
430
|
// update pool in product info
|
464
431
|
productInfo.poolNftId = poolNftId;
|
465
|
-
|
466
|
-
|
467
|
-
// authorize
|
468
|
-
instanceAdmin.initializeComponentAuthorization(pool);
|
432
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
469
433
|
}
|
470
434
|
|
471
435
|
|
@@ -476,182 +440,110 @@ contract ComponentService is
|
|
476
440
|
)
|
477
441
|
external
|
478
442
|
virtual
|
443
|
+
restricted()
|
479
444
|
{
|
480
|
-
(NftId poolNftId
|
481
|
-
|
445
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
446
|
+
|
447
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
482
448
|
instance.getInstanceReader(), poolNftId);
|
483
449
|
bool feesChanged = false;
|
484
450
|
|
485
451
|
// update pool fee if required
|
486
|
-
if(!FeeLib.eq(
|
487
|
-
_logUpdateFee(productNftId, "PoolFee",
|
488
|
-
|
452
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
453
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
454
|
+
feeInfo.poolFee = poolFee;
|
489
455
|
feesChanged = true;
|
490
456
|
}
|
491
457
|
|
492
458
|
// update staking fee if required
|
493
|
-
if(!FeeLib.eq(
|
494
|
-
_logUpdateFee(productNftId, "StakingFee",
|
495
|
-
|
459
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
460
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
461
|
+
feeInfo.stakingFee = stakingFee;
|
496
462
|
feesChanged = true;
|
497
463
|
}
|
498
464
|
|
499
465
|
// update performance fee if required
|
500
|
-
if(!FeeLib.eq(
|
501
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
502
|
-
|
466
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
467
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
468
|
+
feeInfo.performanceFee = performanceFee;
|
503
469
|
feesChanged = true;
|
504
470
|
}
|
505
471
|
|
506
472
|
if(feesChanged) {
|
507
|
-
instance.
|
473
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
508
474
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
509
475
|
}
|
510
476
|
}
|
511
477
|
|
512
|
-
function increasePoolBalance(
|
513
|
-
InstanceStore instanceStore,
|
514
|
-
NftId poolNftId,
|
515
|
-
Amount amount,
|
516
|
-
Amount feeAmount
|
517
|
-
)
|
518
|
-
public
|
519
|
-
virtual
|
520
|
-
// TODO re-enable once role granting is stable and fixed
|
521
|
-
// restricted()
|
522
|
-
{
|
523
|
-
_checkNftType(poolNftId, POOL());
|
524
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
525
|
-
}
|
526
|
-
|
527
|
-
function decreasePoolBalance(
|
528
|
-
InstanceStore instanceStore,
|
529
|
-
NftId poolNftId,
|
530
|
-
Amount amount,
|
531
|
-
Amount feeAmount
|
532
|
-
)
|
533
|
-
public
|
534
|
-
virtual
|
535
|
-
// TODO re-enable once role granting is stable and fixed
|
536
|
-
// restricted()
|
537
|
-
{
|
538
|
-
_checkNftType(poolNftId, POOL());
|
539
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
540
|
-
}
|
541
|
-
|
542
|
-
//-------- bundle -------------------------------------------------------//
|
543
|
-
|
544
|
-
function increaseBundleBalance(
|
545
|
-
InstanceStore instanceStore,
|
546
|
-
NftId bundleNftId,
|
547
|
-
Amount amount,
|
548
|
-
Amount feeAmount
|
549
|
-
)
|
550
|
-
external
|
551
|
-
virtual
|
552
|
-
// TODO re-enable once role granting is stable and fixed
|
553
|
-
// restricted()
|
554
|
-
{
|
555
|
-
_checkNftType(bundleNftId, BUNDLE());
|
556
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
557
|
-
}
|
558
|
-
|
559
|
-
function decreaseBundleBalance(
|
560
|
-
InstanceStore instanceStore,
|
561
|
-
NftId bundleNftId,
|
562
|
-
Amount amount,
|
563
|
-
Amount feeAmount
|
564
|
-
)
|
565
|
-
external
|
566
|
-
virtual
|
567
|
-
// TODO re-enable once role granting is stable and fixed
|
568
|
-
// restricted()
|
569
|
-
{
|
570
|
-
_checkNftType(bundleNftId, BUNDLE());
|
571
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
572
|
-
}
|
573
|
-
|
574
|
-
|
575
|
-
//-------- internal functions ------------------------------------------//
|
576
|
-
|
577
|
-
function _changeTargetBalance(
|
578
|
-
bool increase,
|
579
|
-
InstanceStore instanceStore,
|
580
|
-
NftId targetNftId,
|
581
|
-
Amount amount,
|
582
|
-
Amount feeAmount
|
583
|
-
)
|
584
|
-
internal
|
585
|
-
virtual
|
586
|
-
{
|
587
|
-
Amount totalAmount = amount + feeAmount;
|
588
|
-
|
589
|
-
if(increase) {
|
590
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
591
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
592
|
-
} else {
|
593
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
594
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
595
|
-
}
|
596
|
-
}
|
597
478
|
|
598
479
|
/// @dev Registers the component represented by the provided address.
|
599
|
-
|
600
|
-
|
601
|
-
|
480
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
481
|
+
function _verifyAndRegister(
|
482
|
+
IInstance instance,
|
483
|
+
address componentAddress,
|
484
|
+
NftId parentNftId,
|
485
|
+
address token
|
602
486
|
)
|
603
487
|
internal
|
604
488
|
virtual
|
605
|
-
returns (
|
606
|
-
InstanceReader instanceReader,
|
607
|
-
InstanceAdmin instanceAdmin,
|
608
|
-
InstanceStore instanceStore,
|
609
|
-
NftId parentNftId,
|
610
|
-
NftId componentNftId
|
611
|
-
)
|
489
|
+
returns (NftId componentNftId)
|
612
490
|
{
|
613
|
-
NftId instanceNftId;
|
614
|
-
IInstance instance;
|
615
|
-
IInstanceLinkedComponent component;
|
616
|
-
address initialOwner;
|
617
|
-
|
618
491
|
(
|
619
|
-
|
620
|
-
|
621
|
-
parentNftId,
|
622
|
-
component,
|
623
|
-
initialOwner
|
492
|
+
IInstanceLinkedComponent component,
|
493
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
624
494
|
) = _getAndVerifyRegisterableComponent(
|
625
|
-
getRegistry(),
|
626
495
|
componentAddress,
|
627
|
-
|
496
|
+
parentNftId);
|
628
497
|
|
629
|
-
|
630
|
-
|
631
|
-
instanceAdmin = instance.getInstanceAdmin();
|
632
|
-
instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
633
500
|
|
634
|
-
|
635
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
636
503
|
componentNftId = _registryService.registerProduct(
|
637
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instance.getProductStore(), componentNftId, componentAddress);
|
638
509
|
} else {
|
510
|
+
// register non product component with registry
|
639
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
640
|
-
component,
|
512
|
+
component,
|
513
|
+
objectInfo.objectType,
|
514
|
+
objectInfo.initialOwner).nftId;
|
515
|
+
|
516
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
517
|
+
|
518
|
+
// create non product component info in instance store
|
519
|
+
NftId productNftId = parentNftId;
|
520
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
521
|
+
if(componentType == POOL()) {
|
522
|
+
_createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
|
523
|
+
} else if(componentType == DISTRIBUTION()) {
|
524
|
+
_createDistribution(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
525
|
+
} else if(componentType == ORACLE()) {
|
526
|
+
_createOracle(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
527
|
+
} else {
|
528
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
529
|
+
}
|
530
|
+
|
531
|
+
// get product's token
|
532
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
641
533
|
}
|
642
534
|
|
535
|
+
_checkToken(instance, token);
|
536
|
+
|
537
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
538
|
+
|
643
539
|
// deploy and wire token handler
|
644
540
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
645
|
-
IERC20Metadata token = componentInfo.token;
|
646
541
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
647
542
|
address(getRegistry()),
|
648
543
|
address(component), // initially, component is its own wallet
|
649
|
-
|
650
|
-
|
544
|
+
token,
|
545
|
+
instanceAdmin.authority());
|
651
546
|
|
652
|
-
// set token handler allowance to max
|
653
|
-
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
654
|
-
|
655
547
|
// register component with instance
|
656
548
|
instanceStore.createComponent(
|
657
549
|
componentNftId,
|
@@ -660,7 +552,34 @@ contract ComponentService is
|
|
660
552
|
// link component contract to nft id
|
661
553
|
component.linkToRegisteredNftId();
|
662
554
|
|
663
|
-
|
555
|
+
// authorize
|
556
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
557
|
+
|
558
|
+
emit LogComponentServiceRegistered(
|
559
|
+
instance.getNftId(),
|
560
|
+
componentNftId,
|
561
|
+
componentType,
|
562
|
+
address(component),
|
563
|
+
token,
|
564
|
+
objectInfo.initialOwner);
|
565
|
+
}
|
566
|
+
|
567
|
+
|
568
|
+
function _checkToken(IInstance instance, address token)
|
569
|
+
internal
|
570
|
+
view
|
571
|
+
{
|
572
|
+
if (! instance.isTokenRegistryDisabled()) {
|
573
|
+
// check if provided token is whitelisted and active
|
574
|
+
if (!ContractLib.isActiveToken(
|
575
|
+
getRegistry().getTokenRegistryAddress(),
|
576
|
+
ChainIdLib.current(),
|
577
|
+
token,
|
578
|
+
AccessManagerCloneable(authority()).getRelease())
|
579
|
+
) {
|
580
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
581
|
+
}
|
582
|
+
}
|
664
583
|
}
|
665
584
|
|
666
585
|
|
@@ -679,7 +598,7 @@ contract ComponentService is
|
|
679
598
|
}
|
680
599
|
|
681
600
|
|
682
|
-
function
|
601
|
+
function _getLinkedFeeInfo(
|
683
602
|
InstanceReader instanceReader,
|
684
603
|
NftId componentNftId
|
685
604
|
)
|
@@ -687,89 +606,82 @@ contract ComponentService is
|
|
687
606
|
view
|
688
607
|
returns(
|
689
608
|
NftId productNftId,
|
690
|
-
IComponents.
|
609
|
+
IComponents.FeeInfo memory info
|
691
610
|
)
|
692
611
|
{
|
693
|
-
productNftId =
|
694
|
-
info = instanceReader.
|
612
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
613
|
+
info = instanceReader.getFeeInfo(productNftId);
|
695
614
|
}
|
696
615
|
|
697
616
|
|
698
617
|
/// @dev Based on the provided component address required type the component
|
699
618
|
/// and related instance contract this function reverts iff:
|
700
|
-
/// - the
|
701
|
-
/// - the component
|
702
|
-
/// - the component type does not match with the required type
|
619
|
+
/// - the component parent does not match with the required parent
|
620
|
+
/// - the component release does not match with the service release
|
703
621
|
/// - the component has already been registered
|
704
622
|
function _getAndVerifyRegisterableComponent(
|
705
|
-
IRegistry registry,
|
706
623
|
address componentAddress,
|
707
|
-
|
624
|
+
NftId requiredParent
|
708
625
|
)
|
709
626
|
internal
|
710
627
|
view
|
711
628
|
returns (
|
712
|
-
NftId instanceNftId,
|
713
|
-
IInstance instance,
|
714
|
-
NftId parentNftId,
|
715
629
|
IInstanceLinkedComponent component,
|
716
|
-
|
630
|
+
IRegistry.ObjectInfo memory info
|
717
631
|
)
|
718
632
|
{
|
719
|
-
|
720
|
-
|
721
|
-
if (senderInfo.nftId.eqz()) {
|
722
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
723
|
-
}
|
633
|
+
component = IInstanceLinkedComponent(componentAddress);
|
634
|
+
info = component.getInitialInfo();
|
724
635
|
|
725
|
-
//
|
726
|
-
|
727
|
-
|
728
|
-
|
636
|
+
// check component parent
|
637
|
+
if(info.parentNftId != requiredParent) {
|
638
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
639
|
+
}
|
729
640
|
|
730
|
-
// check component
|
731
|
-
component
|
732
|
-
|
733
|
-
if(info.objectType != requiredType) {
|
734
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
641
|
+
// check component release (must match with service release)
|
642
|
+
if(component.getRelease() != getRelease()) {
|
643
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
735
644
|
}
|
736
645
|
|
737
646
|
// check component has not already been registered
|
738
647
|
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
739
|
-
revert
|
648
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
740
649
|
}
|
650
|
+
}
|
741
651
|
|
742
|
-
// check release matches
|
743
|
-
address parentAddress = registry.getObjectAddress(parentNftId);
|
744
|
-
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
745
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
746
|
-
}
|
747
652
|
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
752
|
-
}
|
653
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
654
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
655
|
+
}
|
753
656
|
|
754
|
-
// verify parent is registered instance
|
755
|
-
if (requiredType == PRODUCT()) {
|
756
|
-
if (senderInfo.objectType != INSTANCE()) {
|
757
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
758
|
-
}
|
759
657
|
|
760
|
-
|
761
|
-
|
658
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
659
|
+
internal
|
660
|
+
view
|
661
|
+
returns (
|
662
|
+
NftId componentNftId,
|
663
|
+
IInstance instance
|
664
|
+
)
|
665
|
+
{
|
666
|
+
IRegistry.ObjectInfo memory info;
|
667
|
+
address instanceAddress;
|
668
|
+
|
669
|
+
if (expectedType != COMPONENT()) {
|
670
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
671
|
+
getRegistry(),
|
672
|
+
msg.sender, // caller
|
673
|
+
expectedType,
|
674
|
+
isActive);
|
762
675
|
} else {
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
instanceNftId = senderInfo.parentNftId;
|
676
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
677
|
+
getRegistry(),
|
678
|
+
msg.sender,
|
679
|
+
isActive);
|
768
680
|
}
|
769
681
|
|
770
|
-
// get
|
771
|
-
|
772
|
-
instance =
|
682
|
+
// get component nft id and instance
|
683
|
+
componentNftId = info.nftId;
|
684
|
+
instance = IInstance(instanceAddress);
|
773
685
|
}
|
774
686
|
|
775
687
|
|