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