@etherisc/gif-next 0.0.2-d16f92c-416 → 0.0.2-d18e1c5-511
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 +130 -8
- 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 +790 -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 +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +525 -342
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -616
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +754 -323
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -282
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +535 -78
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- 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 +805 -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 +805 -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 +805 -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 +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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} +59 -195
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- 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 +580 -80
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -75
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +590 -218
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1760 -840
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +392 -274
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -127
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1298 -1857
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -139
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -423
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +569 -265
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -406
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -694
- 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 +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -271
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
- 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 +196 -108
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +316 -606
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +796 -537
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +523 -27
- 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 +86 -287
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +609 -569
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -131
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -103
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -139
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -376
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- 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 +1635 -465
- 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 +191 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1637 -801
- 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 +184 -76
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -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 +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
- 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 +61 -9
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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 +4 -4
- package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -91
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +112 -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/StateId.sol/StateIdLib.json +15 -2
- 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 +56 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
- 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 +120 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
- 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 +780 -0
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +158 -0
- package/contracts/authorization/Authorization.sol +169 -0
- package/contracts/authorization/IAccess.sol +67 -0
- package/contracts/authorization/IAccessAdmin.sol +144 -0
- package/contracts/authorization/IAuthorization.sol +26 -0
- package/contracts/authorization/IServiceAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +320 -0
- package/contracts/distribution/BasicDistribution.sol +140 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
- package/contracts/distribution/Distribution.sol +125 -141
- package/contracts/distribution/DistributionService.sol +284 -133
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +21 -42
- package/contracts/distribution/IDistributionService.sol +60 -26
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/flight/FlightLib.sol +279 -0
- package/contracts/examples/flight/FlightOracle.sol +167 -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 +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +118 -49
- package/contracts/instance/IInstanceService.sol +68 -46
- package/contracts/instance/Instance.sol +221 -133
- package/contracts/instance/InstanceAdmin.sol +297 -249
- package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
- package/contracts/instance/InstanceReader.sol +498 -256
- package/contracts/instance/InstanceService.sol +340 -265
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +163 -109
- 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 +109 -0
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -21
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +44 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
- package/contracts/oracle/IOracle.sol +25 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +14 -13
- package/contracts/oracle/Oracle.sol +60 -53
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +161 -0
- package/contracts/pool/BasicPoolAuthorization.sol +81 -0
- package/contracts/pool/BundleService.sol +222 -132
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +43 -33
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +196 -164
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +419 -257
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +154 -81
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +48 -0
- package/contracts/product/BasicProductAuthorization.sol +64 -0
- package/contracts/product/ClaimService.sol +391 -207
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +48 -11
- package/contracts/product/IPolicyService.sol +61 -37
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +445 -275
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +261 -147
- package/contracts/product/RiskService.sol +189 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +84 -36
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +378 -224
- package/contracts/registry/RegistryAdmin.sol +119 -261
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +42 -67
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +32 -0
- package/contracts/registry/ReleaseRegistry.sol +525 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +213 -71
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +71 -142
- package/contracts/shared/ComponentService.sol +459 -385
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +50 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +145 -57
- package/contracts/shared/Lifecycle.sol +30 -72
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +33 -11
- package/contracts/shared/PolicyHolder.sol +20 -59
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +22 -38
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +272 -73
- package/contracts/staking/IStakingService.sol +48 -74
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +534 -250
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingManager.sol +14 -15
- package/contracts/staking/StakingReader.sol +72 -88
- package/contracts/staking/StakingService.sol +62 -152
- package/contracts/staking/StakingServiceManager.sol +9 -7
- package/contracts/staking/StakingStore.sol +1096 -341
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +31 -5
- package/contracts/type/Blocknumber.sol +22 -16
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/ClaimId.sol +6 -1
- 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 +7 -0
- package/contracts/type/ObjectType.sol +91 -54
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +7 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +93 -114
- package/contracts/type/Seconds.sol +44 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +24 -8
- package/contracts/type/UFixed.sol +62 -125
- package/contracts/type/Version.sol +57 -6
- package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
- package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
- package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
- package/package.json +9 -6
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +0 -129
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -571
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -80
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/IServiceAuthorization.sol +0 -35
- package/contracts/registry/ReleaseManager.sol +0 -527
- package/contracts/registry/ServiceAuthorization.sol +0 -86
- package/contracts/shared/AccessAdmin.sol +0 -759
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/IAccessAdmin.sol +0 -168
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/IKeyValueStore.sol +0 -53
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/KeyValueStore.sol +0 -127
- package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
- package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -1,47 +1,47 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
7
|
-
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IAccess} from "../instance/module/IAccess.sol";
|
12
|
-
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
|
-
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
16
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
8
|
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {
|
19
|
-
import {
|
20
|
-
import {
|
21
|
-
import {IProductComponent} from "../product/IProductComponent.sol";
|
9
|
+
import {IInstance} from "../instance/IInstance.sol";
|
10
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
11
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
22
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
23
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
24
|
-
import {
|
14
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
16
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
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";
|
26
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
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";
|
31
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
32
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
33
|
+
|
25
34
|
|
26
35
|
contract ComponentService is
|
27
|
-
|
36
|
+
Service,
|
28
37
|
IComponentService
|
29
38
|
{
|
30
|
-
|
31
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
|
-
error ErrorComponentServiceNotComponent(address component);
|
33
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
34
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
35
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
36
|
-
error ErrorComponentServiceComponentLocked(address component);
|
37
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
38
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
39
|
-
|
40
39
|
bool private constant INCREASE = true;
|
41
40
|
bool private constant DECREASE = false;
|
42
41
|
|
42
|
+
IAccountingService private _accountingService;
|
43
43
|
IRegistryService private _registryService;
|
44
|
-
|
44
|
+
IStaking private _staking;
|
45
45
|
|
46
46
|
function _initialize(
|
47
47
|
address owner,
|
@@ -51,166 +51,296 @@ contract ComponentService is
|
|
51
51
|
virtual override
|
52
52
|
initializer()
|
53
53
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
(
|
55
|
+
address authority,
|
56
|
+
address registry
|
57
|
+
) = abi.decode(data, (address, address));
|
58
58
|
|
59
|
-
|
59
|
+
__Service_init(authority, registry, owner);
|
60
60
|
|
61
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
61
62
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
|
-
|
63
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
63
64
|
|
64
|
-
|
65
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
66
|
}
|
66
67
|
|
67
68
|
//-------- component ----------------------------------------------------//
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
/// @inheritdoc IComponentService
|
71
|
+
function registerComponent(address componentAddress)
|
72
|
+
external
|
73
|
+
virtual
|
74
|
+
restricted()
|
75
|
+
returns (NftId componentNftId)
|
76
|
+
{
|
77
|
+
// checks
|
78
|
+
// check sender is registered product
|
79
|
+
IRegistry registry = getRegistry();
|
80
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
81
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
76
82
|
}
|
77
83
|
|
78
|
-
|
79
|
-
|
84
|
+
// check provided address is product contract
|
85
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
86
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
80
87
|
}
|
81
88
|
|
82
|
-
|
83
|
-
|
84
|
-
|
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
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
/// @inheritdoc IComponentService
|
103
|
+
function approveTokenHandler(
|
104
|
+
IERC20Metadata token,
|
105
|
+
Amount amount
|
106
|
+
)
|
107
|
+
external
|
108
|
+
virtual
|
109
|
+
restricted()
|
110
|
+
{
|
111
|
+
// checks
|
112
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
113
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
114
|
+
componentNftId);
|
85
115
|
|
86
|
-
|
87
|
-
|
88
|
-
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
116
|
+
// effects
|
117
|
+
tokenHandler.approve(token, amount);
|
89
118
|
}
|
90
119
|
|
91
|
-
// TODO implement
|
92
|
-
function lock() external virtual {}
|
93
120
|
|
94
|
-
|
95
|
-
function
|
121
|
+
/// @inheritdoc IComponentService
|
122
|
+
function setWallet(address newWallet)
|
123
|
+
external
|
124
|
+
virtual
|
125
|
+
restricted()
|
126
|
+
{
|
127
|
+
// checks
|
128
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
129
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
130
|
+
componentNftId);
|
131
|
+
|
132
|
+
// effects
|
133
|
+
tokenHandler.setWallet(newWallet);
|
134
|
+
}
|
135
|
+
|
136
|
+
/// @inheritdoc IComponentService
|
137
|
+
function setLocked(bool locked)
|
138
|
+
external
|
139
|
+
virtual
|
140
|
+
restricted()
|
141
|
+
{
|
142
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
143
|
+
|
144
|
+
address component = msg.sender;
|
145
|
+
instance.getInstanceAdmin().setComponentLocked(
|
146
|
+
component,
|
147
|
+
locked);
|
148
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
149
|
+
}
|
150
|
+
|
151
|
+
|
152
|
+
/// @inheritdoc IComponentService
|
153
|
+
function withdrawFees(Amount amount)
|
154
|
+
external
|
155
|
+
virtual
|
156
|
+
restricted()
|
157
|
+
returns (Amount withdrawnAmount)
|
158
|
+
{
|
159
|
+
// checks
|
160
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
161
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
162
|
+
|
163
|
+
// determine withdrawn amount
|
164
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
165
|
+
withdrawnAmount = amount;
|
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()) {
|
174
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
175
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
176
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
177
|
+
}
|
178
|
+
|
179
|
+
// effects
|
180
|
+
// decrease fee counters by withdrawnAmount
|
181
|
+
_accountingService.decreaseComponentFees(
|
182
|
+
instance.getInstanceStore(),
|
183
|
+
componentNftId,
|
184
|
+
withdrawnAmount);
|
185
|
+
|
186
|
+
// transfer amount to component owner
|
187
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
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);
|
200
|
+
}
|
96
201
|
|
97
202
|
|
98
203
|
//-------- product ------------------------------------------------------//
|
99
204
|
|
100
|
-
|
205
|
+
/// @inheritdoc IComponentService
|
206
|
+
function registerProduct(address productAddress, address token)
|
101
207
|
external
|
102
208
|
virtual
|
209
|
+
restricted()
|
210
|
+
nonReentrant()
|
211
|
+
returns (NftId productNftId)
|
103
212
|
{
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
+
}
|
107
219
|
|
108
|
-
//
|
109
|
-
|
110
|
-
|
220
|
+
// check provided address is product contract
|
221
|
+
if (!_isProduct(productAddress)) {
|
222
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
223
|
+
}
|
111
224
|
|
112
|
-
|
113
|
-
(
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
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);
|
131
255
|
}
|
132
256
|
|
133
257
|
|
258
|
+
/// @inheritdoc IComponentService
|
134
259
|
function setProductFees(
|
135
260
|
Fee memory productFee, // product fee on net premium
|
136
261
|
Fee memory processingFee // product fee on payout amounts
|
137
262
|
)
|
138
263
|
external
|
139
264
|
virtual
|
265
|
+
restricted()
|
266
|
+
nonReentrant()
|
140
267
|
{
|
141
|
-
(NftId productNftId
|
142
|
-
IComponents.
|
268
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
269
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
143
270
|
bool feesChanged = false;
|
144
271
|
|
145
272
|
// update product fee if required
|
146
|
-
if(!FeeLib.eq(
|
147
|
-
_logUpdateFee(productNftId, "ProductFee",
|
148
|
-
|
273
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
274
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
275
|
+
feeInfo.productFee = productFee;
|
149
276
|
feesChanged = true;
|
150
277
|
}
|
151
278
|
|
152
279
|
// update processing fee if required
|
153
|
-
if(!FeeLib.eq(
|
154
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
155
|
-
|
280
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
281
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
282
|
+
feeInfo.processingFee = processingFee;
|
156
283
|
feesChanged = true;
|
157
284
|
}
|
158
285
|
|
159
286
|
if(feesChanged) {
|
160
|
-
instance.
|
287
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
161
288
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
162
289
|
}
|
163
290
|
}
|
164
291
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
// restricted()
|
292
|
+
|
293
|
+
function _createProduct(
|
294
|
+
ProductStore productStore,
|
295
|
+
NftId productNftId,
|
296
|
+
address productAddress
|
297
|
+
)
|
298
|
+
internal
|
299
|
+
virtual
|
174
300
|
{
|
175
|
-
|
176
|
-
|
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);
|
177
309
|
|
310
|
+
// create info
|
311
|
+
productStore.createProduct(
|
312
|
+
productNftId,
|
313
|
+
initialProductInfo);
|
178
314
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
// TODO re-enable once role granting is stable and fixed
|
183
|
-
// restricted()
|
184
|
-
{
|
185
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
315
|
+
productStore.createFee(
|
316
|
+
productNftId,
|
317
|
+
product.getInitialFeeInfo());
|
186
318
|
}
|
187
319
|
|
188
320
|
//-------- distribution -------------------------------------------------//
|
189
321
|
|
190
322
|
/// @dev registers the sending component as a distribution component
|
191
|
-
function
|
192
|
-
|
323
|
+
function _createDistribution(
|
324
|
+
ProductStore productStore,
|
325
|
+
NftId productNftId,
|
326
|
+
NftId distributionNftId,
|
327
|
+
IComponents.ProductInfo memory productInfo
|
328
|
+
)
|
329
|
+
internal
|
193
330
|
virtual
|
331
|
+
nonReentrant()
|
194
332
|
{
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
//
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
// register/create component info
|
208
|
-
_register(
|
209
|
-
contractAddress,
|
210
|
-
DISTRIBUTION(),
|
211
|
-
DISTRIBUTION_OWNER_ROLE(),
|
212
|
-
roles,
|
213
|
-
selectors);
|
333
|
+
// check product is still expecting a distribution registration
|
334
|
+
if (!productInfo.hasDistribution) {
|
335
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
336
|
+
}
|
337
|
+
if (productInfo.distributionNftId.gtz()) {
|
338
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
339
|
+
}
|
340
|
+
|
341
|
+
// set distribution in product info
|
342
|
+
productInfo.distributionNftId = distributionNftId;
|
343
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
214
344
|
}
|
215
345
|
|
216
346
|
|
@@ -220,118 +350,86 @@ contract ComponentService is
|
|
220
350
|
)
|
221
351
|
external
|
222
352
|
virtual
|
353
|
+
restricted()
|
223
354
|
{
|
224
|
-
(NftId distributionNftId
|
225
|
-
(NftId productNftId, IComponents.
|
355
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
356
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
226
357
|
instance.getInstanceReader(), distributionNftId);
|
227
358
|
bool feesChanged = false;
|
228
359
|
|
229
360
|
// update distributino fee if required
|
230
|
-
if(!FeeLib.eq(
|
231
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
232
|
-
|
361
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
362
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
363
|
+
feeInfo.distributionFee = distributionFee;
|
233
364
|
feesChanged = true;
|
234
365
|
}
|
235
366
|
|
236
367
|
// update min distribution owner fee if required
|
237
|
-
if(!FeeLib.eq(
|
238
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
239
|
-
|
368
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
369
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
370
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
240
371
|
feesChanged = true;
|
241
372
|
}
|
242
373
|
|
243
374
|
if(feesChanged) {
|
244
|
-
instance.
|
375
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
245
376
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
246
377
|
}
|
247
378
|
}
|
248
379
|
|
249
|
-
function increaseDistributionBalance(
|
250
|
-
InstanceStore instanceStore,
|
251
|
-
NftId distributionNftId,
|
252
|
-
Amount amount,
|
253
|
-
Amount feeAmount
|
254
|
-
)
|
255
|
-
external
|
256
|
-
virtual
|
257
|
-
// TODO re-enable once role granting is stable and fixed
|
258
|
-
// restricted()
|
259
|
-
{
|
260
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
261
|
-
}
|
262
|
-
|
263
|
-
|
264
|
-
function decreaseDistributionBalance(
|
265
|
-
InstanceStore instanceStore,
|
266
|
-
NftId distributionNftId,
|
267
|
-
Amount amount,
|
268
|
-
Amount feeAmount
|
269
|
-
)
|
270
|
-
external
|
271
|
-
virtual
|
272
|
-
// TODO re-enable once role granting is stable and fixed
|
273
|
-
// restricted()
|
274
|
-
{
|
275
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
276
|
-
}
|
277
|
-
|
278
380
|
//-------- oracle -------------------------------------------------------//
|
279
381
|
|
280
|
-
function
|
281
|
-
|
382
|
+
function _createOracle(
|
383
|
+
ProductStore productStore,
|
384
|
+
NftId productNftId,
|
385
|
+
NftId oracleNftId,
|
386
|
+
IComponents.ProductInfo memory productInfo
|
387
|
+
)
|
388
|
+
internal
|
282
389
|
virtual
|
283
390
|
{
|
284
|
-
|
285
|
-
|
286
|
-
|
391
|
+
// check product is still expecting an oracle registration
|
392
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
393
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
394
|
+
}
|
395
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
396
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
397
|
+
}
|
287
398
|
|
288
|
-
//
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
NftId componentNftId
|
293
|
-
) = _register(
|
294
|
-
contractAddress,
|
295
|
-
ORACLE(),
|
296
|
-
ORACLE_OWNER_ROLE(),
|
297
|
-
roles,
|
298
|
-
selectors);
|
399
|
+
// update/add oracle to product info
|
400
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
401
|
+
productInfo.numberOfOracles++;
|
402
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
299
403
|
}
|
300
404
|
|
301
405
|
//-------- pool ---------------------------------------------------------//
|
302
406
|
|
303
|
-
function
|
304
|
-
|
407
|
+
function _createPool(
|
408
|
+
InstanceStore instanceStore,
|
409
|
+
ProductStore productStore,
|
410
|
+
NftId productNftId,
|
411
|
+
NftId poolNftId,
|
412
|
+
address componentAddress,
|
413
|
+
IComponents.ProductInfo memory productInfo
|
414
|
+
)
|
415
|
+
internal
|
305
416
|
virtual
|
306
417
|
{
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
roles[0] = POOL_OWNER_ROLE();
|
313
|
-
selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
|
314
|
-
|
315
|
-
// authorizaion for product service
|
316
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
317
|
-
selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
|
318
|
-
|
319
|
-
// register/create component setup
|
320
|
-
(
|
321
|
-
, // instance reader
|
322
|
-
InstanceStore instanceStore,
|
323
|
-
NftId componentNftId
|
324
|
-
) = _register(
|
325
|
-
contractAddress,
|
326
|
-
POOL(),
|
327
|
-
POOL_OWNER_ROLE(),
|
328
|
-
roles,
|
329
|
-
selectors);
|
418
|
+
// check product is still expecting a pool registration
|
419
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
420
|
+
if (productInfo.poolNftId.gtz()) {
|
421
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
422
|
+
}
|
330
423
|
|
331
424
|
// create info
|
425
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
332
426
|
instanceStore.createPool(
|
333
|
-
|
334
|
-
|
427
|
+
poolNftId,
|
428
|
+
pool.getInitialPoolInfo());
|
429
|
+
|
430
|
+
// update pool in product info
|
431
|
+
productInfo.poolNftId = poolNftId;
|
432
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
335
433
|
}
|
336
434
|
|
337
435
|
|
@@ -342,189 +440,146 @@ contract ComponentService is
|
|
342
440
|
)
|
343
441
|
external
|
344
442
|
virtual
|
443
|
+
restricted()
|
345
444
|
{
|
346
|
-
(NftId poolNftId
|
347
|
-
|
445
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
446
|
+
|
447
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
348
448
|
instance.getInstanceReader(), poolNftId);
|
349
449
|
bool feesChanged = false;
|
350
450
|
|
351
451
|
// update pool fee if required
|
352
|
-
if(!FeeLib.eq(
|
353
|
-
_logUpdateFee(productNftId, "PoolFee",
|
354
|
-
|
452
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
453
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
454
|
+
feeInfo.poolFee = poolFee;
|
355
455
|
feesChanged = true;
|
356
456
|
}
|
357
457
|
|
358
458
|
// update staking fee if required
|
359
|
-
if(!FeeLib.eq(
|
360
|
-
_logUpdateFee(productNftId, "StakingFee",
|
361
|
-
|
459
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
460
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
461
|
+
feeInfo.stakingFee = stakingFee;
|
362
462
|
feesChanged = true;
|
363
463
|
}
|
364
464
|
|
365
465
|
// update performance fee if required
|
366
|
-
if(!FeeLib.eq(
|
367
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
368
|
-
|
466
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
467
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
468
|
+
feeInfo.performanceFee = performanceFee;
|
369
469
|
feesChanged = true;
|
370
470
|
}
|
371
471
|
|
372
472
|
if(feesChanged) {
|
373
|
-
instance.
|
473
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
374
474
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
375
475
|
}
|
376
476
|
}
|
377
477
|
|
378
|
-
function increasePoolBalance(
|
379
|
-
InstanceStore instanceStore,
|
380
|
-
NftId poolNftId,
|
381
|
-
Amount amount,
|
382
|
-
Amount feeAmount
|
383
|
-
)
|
384
|
-
public
|
385
|
-
virtual
|
386
|
-
// TODO re-enable once role granting is stable and fixed
|
387
|
-
// restricted()
|
388
|
-
{
|
389
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
390
|
-
}
|
391
|
-
|
392
|
-
function decreasePoolBalance(
|
393
|
-
InstanceStore instanceStore,
|
394
|
-
NftId poolNftId,
|
395
|
-
Amount amount,
|
396
|
-
Amount feeAmount
|
397
|
-
)
|
398
|
-
public
|
399
|
-
virtual
|
400
|
-
// TODO re-enable once role granting is stable and fixed
|
401
|
-
// restricted()
|
402
|
-
{
|
403
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
404
|
-
}
|
405
|
-
|
406
|
-
//-------- bundle -------------------------------------------------------//
|
407
|
-
|
408
|
-
function increaseBundleBalance(
|
409
|
-
InstanceStore instanceStore,
|
410
|
-
NftId bundleNftId,
|
411
|
-
Amount amount,
|
412
|
-
Amount feeAmount
|
413
|
-
)
|
414
|
-
external
|
415
|
-
virtual
|
416
|
-
// TODO re-enable once role granting is stable and fixed
|
417
|
-
// restricted()
|
418
|
-
{
|
419
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
420
|
-
}
|
421
478
|
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
479
|
+
/// @dev Registers the component represented by the provided address.
|
480
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
481
|
+
function _verifyAndRegister(
|
482
|
+
IInstance instance,
|
483
|
+
address componentAddress,
|
484
|
+
NftId parentNftId,
|
485
|
+
address token
|
427
486
|
)
|
428
|
-
|
487
|
+
internal
|
429
488
|
virtual
|
430
|
-
|
431
|
-
// restricted()
|
489
|
+
returns (NftId componentNftId)
|
432
490
|
{
|
433
|
-
|
434
|
-
|
435
|
-
|
491
|
+
(
|
492
|
+
IInstanceLinkedComponent component,
|
493
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
494
|
+
) = _getAndVerifyRegisterableComponent(
|
495
|
+
componentAddress,
|
496
|
+
parentNftId);
|
436
497
|
|
437
|
-
|
498
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
438
500
|
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
Amount feeAmount
|
445
|
-
)
|
446
|
-
internal
|
447
|
-
virtual
|
448
|
-
{
|
449
|
-
Amount totalAmount = amount + feeAmount;
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
503
|
+
componentNftId = _registryService.registerProduct(
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
450
506
|
|
451
|
-
|
452
|
-
|
453
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instance.getProductStore(), componentNftId, componentAddress);
|
454
509
|
} else {
|
455
|
-
|
456
|
-
|
510
|
+
// register non product component with registry
|
511
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
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());
|
457
533
|
}
|
458
|
-
}
|
459
534
|
|
460
|
-
|
461
|
-
function _register(
|
462
|
-
address componentAddress, // address of component to register
|
463
|
-
ObjectType requiredType, // required type for component for registration
|
464
|
-
RoleId requiredRole, // role required for comonent owner for registration
|
465
|
-
RoleId[] memory roles, // roles with write access to component
|
466
|
-
bytes4[][] memory selectors // authorized functions per role with write access
|
467
|
-
)
|
468
|
-
internal
|
469
|
-
virtual
|
470
|
-
returns (
|
471
|
-
InstanceReader instanceReader,
|
472
|
-
InstanceStore instanceStore,
|
473
|
-
NftId componentNftId
|
474
|
-
)
|
475
|
-
{
|
476
|
-
(
|
477
|
-
IInstance instance,
|
478
|
-
IInstanceLinkedComponent component,
|
479
|
-
address owner
|
480
|
-
) = _getAndVerifyRegisterableComponent(
|
481
|
-
componentAddress,
|
482
|
-
requiredType,
|
483
|
-
requiredRole);
|
535
|
+
_checkToken(instance, token);
|
484
536
|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
537
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
538
|
+
|
539
|
+
// deploy and wire token handler
|
540
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
541
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
542
|
+
address(getRegistry()),
|
543
|
+
address(component), // initially, component is its own wallet
|
544
|
+
token,
|
545
|
+
instanceAdmin.authority());
|
546
|
+
|
547
|
+
// register component with instance
|
548
|
+
instanceStore.createComponent(
|
549
|
+
componentNftId,
|
550
|
+
componentInfo);
|
490
551
|
|
552
|
+
// link component contract to nft id
|
491
553
|
component.linkToRegisteredNftId();
|
492
554
|
|
493
|
-
//
|
494
|
-
|
495
|
-
instanceStore = instance.getInstanceStore();
|
496
|
-
|
497
|
-
IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
|
498
|
-
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
499
|
-
instanceStore.createComponent(component.getNftId(), componentInfo);
|
555
|
+
// authorize
|
556
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
500
557
|
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
component
|
506
|
-
|
507
|
-
|
558
|
+
emit LogComponentServiceRegistered(
|
559
|
+
instance.getNftId(),
|
560
|
+
componentNftId,
|
561
|
+
componentType,
|
562
|
+
address(component),
|
563
|
+
token,
|
564
|
+
objectInfo.initialOwner);
|
508
565
|
}
|
509
566
|
|
510
567
|
|
511
|
-
|
512
|
-
function _linkToProduct(
|
513
|
-
InstanceReader instanceReader,
|
514
|
-
InstanceStore instanceStore,
|
515
|
-
NftId componentNftId,
|
516
|
-
NftId productNftId
|
517
|
-
)
|
568
|
+
function _checkToken(IInstance instance, address token)
|
518
569
|
internal
|
570
|
+
view
|
519
571
|
{
|
520
|
-
|
521
|
-
|
522
|
-
|
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
|
+
}
|
523
582
|
}
|
524
|
-
|
525
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
526
|
-
componentInfo.productNftId = productNftId;
|
527
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
528
583
|
}
|
529
584
|
|
530
585
|
|
@@ -543,13 +598,7 @@ contract ComponentService is
|
|
543
598
|
}
|
544
599
|
|
545
600
|
|
546
|
-
function
|
547
|
-
selectors = new bytes4[](1);
|
548
|
-
selectors[0] = selector;
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
|
-
function _getLinkedProductInfo(
|
601
|
+
function _getLinkedFeeInfo(
|
553
602
|
InstanceReader instanceReader,
|
554
603
|
NftId componentNftId
|
555
604
|
)
|
@@ -557,60 +606,85 @@ contract ComponentService is
|
|
557
606
|
view
|
558
607
|
returns(
|
559
608
|
NftId productNftId,
|
560
|
-
IComponents.
|
609
|
+
IComponents.FeeInfo memory info
|
561
610
|
)
|
562
611
|
{
|
563
|
-
productNftId =
|
564
|
-
info = instanceReader.
|
612
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
613
|
+
info = instanceReader.getFeeInfo(productNftId);
|
565
614
|
}
|
566
615
|
|
567
616
|
|
568
|
-
/// @dev
|
569
|
-
///
|
617
|
+
/// @dev Based on the provided component address required type the component
|
618
|
+
/// and related instance contract this function reverts iff:
|
619
|
+
/// - the component parent does not match with the required parent
|
620
|
+
/// - the component release does not match with the service release
|
570
621
|
/// - the component has already been registered
|
571
|
-
/// - the component contract does not support IInstanceLinkedComponent
|
572
|
-
/// - the component type does not match with the required type
|
573
|
-
/// - the initial component owner misses the required role (with the instance access manager)
|
574
622
|
function _getAndVerifyRegisterableComponent(
|
575
623
|
address componentAddress,
|
576
|
-
|
577
|
-
RoleId requiredRole
|
624
|
+
NftId requiredParent
|
578
625
|
)
|
579
626
|
internal
|
580
627
|
view
|
581
628
|
returns (
|
582
|
-
IInstance instance,
|
583
629
|
IInstanceLinkedComponent component,
|
584
|
-
|
630
|
+
IRegistry.ObjectInfo memory info
|
585
631
|
)
|
586
632
|
{
|
587
|
-
// check this is a component
|
588
633
|
component = IInstanceLinkedComponent(componentAddress);
|
589
|
-
|
590
|
-
|
634
|
+
info = component.getInitialInfo();
|
635
|
+
|
636
|
+
// check component parent
|
637
|
+
if(info.parentNftId != requiredParent) {
|
638
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
591
639
|
}
|
592
640
|
|
593
|
-
// check component
|
594
|
-
|
595
|
-
|
596
|
-
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());
|
597
644
|
}
|
598
645
|
|
599
646
|
// check component has not already been registered
|
600
|
-
if (getRegistry().
|
601
|
-
revert
|
647
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
648
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
602
649
|
}
|
650
|
+
}
|
651
|
+
|
652
|
+
|
653
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
654
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
655
|
+
}
|
603
656
|
|
604
|
-
// check instance has assigned required role to inital owner
|
605
|
-
instance = _getInstance(info.parentNftId);
|
606
|
-
owner = info.initialOwner;
|
607
657
|
|
608
|
-
|
609
|
-
|
610
|
-
|
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);
|
675
|
+
} else {
|
676
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
677
|
+
getRegistry(),
|
678
|
+
msg.sender,
|
679
|
+
isActive);
|
611
680
|
}
|
681
|
+
|
682
|
+
// get component nft id and instance
|
683
|
+
componentNftId = info.nftId;
|
684
|
+
instance = IInstance(instanceAddress);
|
612
685
|
}
|
613
686
|
|
687
|
+
|
614
688
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
615
689
|
return COMPONENT();
|
616
690
|
}
|