@etherisc/gif-next 0.0.2-e83e4a5-207 → 0.0.2-e876b87-961
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 +32 -3
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -31
- 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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +59 -37
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +34 -89
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +63 -130
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +167 -140
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -98
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -136
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +82 -247
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -243
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +164 -280
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +96 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +142 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +143 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +155 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +322 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
- 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 +549 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +285 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +546 -248
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- 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 +29 -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 +29 -0
- 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 +98 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- 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 +58 -89
- 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 +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +174 -291
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +177 -131
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
- 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 +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +6 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +28 -26
- package/contracts/distribution/DistributionService.sol +128 -75
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +9 -5
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +14 -34
- package/contracts/instance/IInstanceService.sol +5 -25
- package/contracts/instance/Instance.sol +32 -54
- package/contracts/instance/InstanceAdmin.sol +47 -34
- package/contracts/instance/InstanceAuthorizationV3.sol +24 -32
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +75 -105
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -11
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +11 -3
- package/contracts/pool/BundleService.sol +267 -70
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +73 -49
- package/contracts/pool/PoolService.sol +256 -164
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +70 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +9 -38
- package/contracts/product/BasicProductAuthorization.sol +2 -0
- package/contracts/product/ClaimService.sol +316 -146
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +24 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +419 -203
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +134 -71
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +69 -19
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +354 -215
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +39 -64
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +52 -62
- package/contracts/shared/ComponentService.sol +299 -179
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +39 -20
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +85 -23
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +23 -22
- package/contracts/shared/TokenHandler.sol +144 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +29 -45
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +25 -29
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- 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 -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/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- 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/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/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/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,53 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
+
import {ComponentServiceHelperLib} from "./ComponentServiceHelperLib.sol";
|
5
8
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
9
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
6
10
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
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} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
16
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
12
|
import {IComponentService} from "./IComponentService.sol";
|
18
13
|
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
14
|
+
import {IInstance} from "../instance/IInstance.sol";
|
15
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
16
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
17
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
19
19
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
20
21
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
22
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
-
import {
|
23
|
-
import {
|
24
|
-
import {
|
23
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
24
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
25
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
26
|
+
import {NftId} from "../type/NftId.sol";
|
27
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {RoleId} from "../type/RoleId.sol";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
25
31
|
|
26
32
|
contract ComponentService is
|
27
33
|
ComponentVerifyingService,
|
28
34
|
IComponentService
|
29
35
|
{
|
30
36
|
|
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
37
|
bool private constant INCREASE = true;
|
41
38
|
bool private constant DECREASE = false;
|
42
39
|
|
43
40
|
IRegistryService private _registryService;
|
44
41
|
IInstanceService private _instanceService;
|
45
42
|
|
43
|
+
modifier onlyComponent(address component) {
|
44
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
45
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
46
|
+
}
|
47
|
+
_;
|
48
|
+
}
|
49
|
+
|
50
|
+
|
46
51
|
function _initialize(
|
47
52
|
address owner,
|
48
53
|
bytes memory data
|
@@ -51,22 +56,46 @@ contract ComponentService is
|
|
51
56
|
virtual override
|
52
57
|
initializer()
|
53
58
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
59
|
+
(
|
60
|
+
address registryAddress,
|
61
|
+
address authority
|
62
|
+
) = abi.decode(data, (address, address));
|
58
63
|
|
59
|
-
|
64
|
+
_initializeService(registryAddress, authority, owner);
|
60
65
|
|
61
66
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
67
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
68
|
|
64
|
-
|
69
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
70
|
}
|
66
71
|
|
67
72
|
//-------- component ----------------------------------------------------//
|
68
73
|
|
74
|
+
function registerComponent(address component)
|
75
|
+
external
|
76
|
+
virtual
|
77
|
+
onlyComponent(component)
|
78
|
+
returns (NftId componentNftId)
|
79
|
+
{
|
80
|
+
// type specific registration
|
81
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
82
|
+
if (componentType == POOL()) {
|
83
|
+
return _registerPool(component);
|
84
|
+
}
|
85
|
+
if (componentType == DISTRIBUTION()) {
|
86
|
+
return _registerDistribution(component);
|
87
|
+
}
|
88
|
+
if (componentType == ORACLE()) {
|
89
|
+
return _registerOracle(component);
|
90
|
+
}
|
91
|
+
|
92
|
+
// fail
|
93
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
94
|
+
}
|
95
|
+
|
96
|
+
|
69
97
|
function setWallet(address newWallet) external virtual {
|
98
|
+
// checks
|
70
99
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
71
100
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
72
101
|
address currentWallet = info.wallet;
|
@@ -83,9 +112,32 @@ contract ComponentService is
|
|
83
112
|
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
84
113
|
}
|
85
114
|
|
115
|
+
uint256 currentBalance = info.token.balanceOf(currentWallet);
|
116
|
+
|
117
|
+
// effects
|
86
118
|
info.wallet = newWallet;
|
87
119
|
instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
|
120
|
+
|
88
121
|
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
122
|
+
|
123
|
+
// interactions
|
124
|
+
info.tokenHandler.addAllowedTarget(newWallet);
|
125
|
+
|
126
|
+
// FIXME: transfer tokens to new wallet in case of instance linked component too?
|
127
|
+
// if (currentBalance > 0) {
|
128
|
+
// // move tokens from old to new wallet
|
129
|
+
// emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
|
130
|
+
|
131
|
+
// if (currentWallet == address(this)) {
|
132
|
+
// // transfer from the component requires an allowance
|
133
|
+
// info.tokenHandler.distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
134
|
+
// } else {
|
135
|
+
// info.tokenHandler.collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
136
|
+
// }
|
137
|
+
// }
|
138
|
+
|
139
|
+
// this breaks the cei pattern, but right now i don't see a way how to change this
|
140
|
+
info.tokenHandler.removeAllowedTarget(currentWallet);
|
89
141
|
}
|
90
142
|
|
91
143
|
// TODO implement
|
@@ -94,32 +146,63 @@ contract ComponentService is
|
|
94
146
|
// TODO implement
|
95
147
|
function unlock() external virtual {}
|
96
148
|
|
149
|
+
function withdrawFees(Amount amount)
|
150
|
+
external
|
151
|
+
virtual
|
152
|
+
returns (Amount withdrawnAmount)
|
153
|
+
{
|
154
|
+
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
155
|
+
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
156
|
+
address componentWallet = info.wallet;
|
157
|
+
|
158
|
+
// determine withdrawn amount
|
159
|
+
withdrawnAmount = amount;
|
160
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
161
|
+
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
162
|
+
} else if (withdrawnAmount.eqz()) {
|
163
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
164
|
+
} else {
|
165
|
+
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
166
|
+
if (withdrawnAmount.gt(withdrawLimit)) {
|
167
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
// decrease fee counters by withdrawnAmount
|
172
|
+
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
173
|
+
|
174
|
+
// transfer amount to component owner
|
175
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
176
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
177
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
178
|
+
}
|
179
|
+
|
97
180
|
|
98
181
|
//-------- product ------------------------------------------------------//
|
99
182
|
|
100
|
-
function registerProduct()
|
183
|
+
function registerProduct(address productAddress)
|
101
184
|
external
|
102
185
|
virtual
|
186
|
+
onlyComponent(productAddress)
|
187
|
+
returns (NftId productNftId)
|
103
188
|
{
|
104
|
-
address contractAddress = msg.sender;
|
105
|
-
|
106
189
|
// register/create component setup
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
// create
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
190
|
+
InstanceAdmin instanceAdmin;
|
191
|
+
InstanceStore instanceStore;
|
192
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
193
|
+
productAddress,
|
194
|
+
PRODUCT());
|
195
|
+
|
196
|
+
// get product
|
197
|
+
IProductComponent product = IProductComponent(productAddress);
|
198
|
+
|
199
|
+
// create info
|
200
|
+
instanceStore.createProduct(
|
201
|
+
productNftId,
|
202
|
+
product.getInitialProductInfo());
|
203
|
+
|
204
|
+
// authorize
|
205
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
123
206
|
}
|
124
207
|
|
125
208
|
|
@@ -164,6 +247,7 @@ contract ComponentService is
|
|
164
247
|
// TODO re-enable once role granting is stable and fixed
|
165
248
|
// restricted()
|
166
249
|
{
|
250
|
+
_checkNftType(productNftId, PRODUCT());
|
167
251
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
168
252
|
}
|
169
253
|
|
@@ -174,23 +258,47 @@ contract ComponentService is
|
|
174
258
|
// TODO re-enable once role granting is stable and fixed
|
175
259
|
// restricted()
|
176
260
|
{
|
261
|
+
_checkNftType(productNftId, PRODUCT());
|
177
262
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
178
263
|
}
|
179
264
|
|
180
265
|
//-------- distribution -------------------------------------------------//
|
181
266
|
|
182
267
|
/// @dev registers the sending component as a distribution component
|
183
|
-
function
|
184
|
-
|
268
|
+
function _registerDistribution(address distributioAddress)
|
269
|
+
internal
|
185
270
|
virtual
|
271
|
+
returns (NftId distributionNftId)
|
186
272
|
{
|
187
|
-
address contractAddress = msg.sender;
|
188
|
-
|
189
273
|
// register/create component info
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
274
|
+
InstanceReader instanceReader;
|
275
|
+
InstanceAdmin instanceAdmin;
|
276
|
+
InstanceStore instanceStore;
|
277
|
+
NftId productNftId;
|
278
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
279
|
+
distributioAddress,
|
280
|
+
DISTRIBUTION());
|
281
|
+
|
282
|
+
// check product is still expecting a distribution registration
|
283
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
284
|
+
if (!productInfo.hasDistribution) {
|
285
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
286
|
+
}
|
287
|
+
if (productInfo.distributionNftId.gtz()) {
|
288
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
289
|
+
}
|
290
|
+
|
291
|
+
// set distribution in product info
|
292
|
+
productInfo.distributionNftId = distributionNftId;
|
293
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
294
|
+
|
295
|
+
// authorize
|
296
|
+
instanceAdmin.initializeComponentAuthorization(
|
297
|
+
IInstanceLinkedComponent(distributioAddress));
|
298
|
+
|
299
|
+
IDistributionComponent distribution = IDistributionComponent(distributioAddress);
|
300
|
+
IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
|
301
|
+
productComponentInfo.tokenHandler.addAllowedTarget(distribution.getWallet());
|
194
302
|
}
|
195
303
|
|
196
304
|
|
@@ -237,6 +345,7 @@ contract ComponentService is
|
|
237
345
|
// TODO re-enable once role granting is stable and fixed
|
238
346
|
// restricted()
|
239
347
|
{
|
348
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
240
349
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
241
350
|
}
|
242
351
|
|
@@ -252,51 +361,116 @@ contract ComponentService is
|
|
252
361
|
// TODO re-enable once role granting is stable and fixed
|
253
362
|
// restricted()
|
254
363
|
{
|
364
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
255
365
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
256
366
|
}
|
257
367
|
|
258
|
-
//--------
|
368
|
+
//-------- distributor -------------------------------------------------------//
|
369
|
+
|
370
|
+
function increaseDistributorBalance(
|
371
|
+
InstanceStore instanceStore,
|
372
|
+
NftId distributorNftId,
|
373
|
+
Amount amount,
|
374
|
+
Amount feeAmount
|
375
|
+
)
|
376
|
+
external
|
377
|
+
virtual
|
378
|
+
// TODO re-enable once role granting is stable and fixed
|
379
|
+
// restricted()
|
380
|
+
{
|
381
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
382
|
+
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
383
|
+
}
|
259
384
|
|
260
|
-
function
|
385
|
+
function decreaseDistributorBalance(
|
386
|
+
InstanceStore instanceStore,
|
387
|
+
NftId distributorNftId,
|
388
|
+
Amount amount,
|
389
|
+
Amount feeAmount
|
390
|
+
)
|
261
391
|
external
|
262
392
|
virtual
|
393
|
+
// TODO re-enable once role granting is stable and fixed
|
394
|
+
// restricted()
|
263
395
|
{
|
264
|
-
|
396
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
397
|
+
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
398
|
+
}
|
399
|
+
|
400
|
+
//-------- oracle -------------------------------------------------------//
|
265
401
|
|
402
|
+
function _registerOracle(address oracleAddress)
|
403
|
+
internal
|
404
|
+
virtual
|
405
|
+
returns (NftId oracleNftId)
|
406
|
+
{
|
266
407
|
// register/create component setup
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
408
|
+
InstanceReader instanceReader;
|
409
|
+
InstanceAdmin instanceAdmin;
|
410
|
+
InstanceStore instanceStore;
|
411
|
+
NftId productNftId;
|
412
|
+
|
413
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
414
|
+
oracleAddress,
|
415
|
+
ORACLE());
|
416
|
+
|
417
|
+
// check product is still expecting an oracle registration
|
418
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
419
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
420
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
421
|
+
}
|
422
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
423
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
424
|
+
}
|
425
|
+
|
426
|
+
// update/add oracle to product info
|
427
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
428
|
+
productInfo.numberOfOracles++;
|
429
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
430
|
+
|
431
|
+
// authorize
|
432
|
+
instanceAdmin.initializeComponentAuthorization(
|
433
|
+
IInstanceLinkedComponent(oracleAddress));
|
275
434
|
}
|
276
435
|
|
277
436
|
//-------- pool ---------------------------------------------------------//
|
278
437
|
|
279
|
-
function
|
280
|
-
|
438
|
+
function _registerPool(address poolAddress)
|
439
|
+
internal
|
281
440
|
virtual
|
441
|
+
returns (NftId poolNftId)
|
282
442
|
{
|
283
|
-
address contractAddress = msg.sender;
|
284
|
-
|
285
443
|
// register/create component setup
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
444
|
+
InstanceReader instanceReader;
|
445
|
+
InstanceAdmin instanceAdmin;
|
446
|
+
InstanceStore instanceStore;
|
447
|
+
NftId productNftId;
|
448
|
+
|
449
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
450
|
+
poolAddress,
|
451
|
+
POOL());
|
452
|
+
|
453
|
+
// check product is still expecting a pool registration
|
454
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
455
|
+
if (productInfo.poolNftId.gtz()) {
|
456
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
457
|
+
}
|
294
458
|
|
295
459
|
// create info
|
460
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
296
461
|
instanceStore.createPool(
|
297
|
-
|
298
|
-
|
299
|
-
|
462
|
+
poolNftId,
|
463
|
+
pool.getInitialPoolInfo());
|
464
|
+
|
465
|
+
// update pool in product info
|
466
|
+
productInfo.poolNftId = poolNftId;
|
467
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
468
|
+
|
469
|
+
// authorize
|
470
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
471
|
+
|
472
|
+
IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
|
473
|
+
productComponentInfo.tokenHandler.addAllowedTarget(pool.getWallet());
|
300
474
|
}
|
301
475
|
|
302
476
|
|
@@ -351,6 +525,7 @@ contract ComponentService is
|
|
351
525
|
// TODO re-enable once role granting is stable and fixed
|
352
526
|
// restricted()
|
353
527
|
{
|
528
|
+
_checkNftType(poolNftId, POOL());
|
354
529
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
355
530
|
}
|
356
531
|
|
@@ -365,6 +540,7 @@ contract ComponentService is
|
|
365
540
|
// TODO re-enable once role granting is stable and fixed
|
366
541
|
// restricted()
|
367
542
|
{
|
543
|
+
_checkNftType(poolNftId, POOL());
|
368
544
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
369
545
|
}
|
370
546
|
|
@@ -381,6 +557,7 @@ contract ComponentService is
|
|
381
557
|
// TODO re-enable once role granting is stable and fixed
|
382
558
|
// restricted()
|
383
559
|
{
|
560
|
+
_checkNftType(bundleNftId, BUNDLE());
|
384
561
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
385
562
|
}
|
386
563
|
|
@@ -395,6 +572,7 @@ contract ComponentService is
|
|
395
572
|
// TODO re-enable once role granting is stable and fixed
|
396
573
|
// restricted()
|
397
574
|
{
|
575
|
+
_checkNftType(bundleNftId, BUNDLE());
|
398
576
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
399
577
|
}
|
400
578
|
|
@@ -422,74 +600,68 @@ contract ComponentService is
|
|
422
600
|
}
|
423
601
|
}
|
424
602
|
|
425
|
-
/// @dev
|
603
|
+
/// @dev Registers the component represented by the provided address.
|
426
604
|
function _register(
|
427
605
|
address componentAddress, // address of component to register
|
428
|
-
ObjectType requiredType
|
429
|
-
RoleId requiredRole // role required for comonent owner for registration
|
606
|
+
ObjectType requiredType // required type for component for registration
|
430
607
|
)
|
431
608
|
internal
|
432
609
|
virtual
|
433
610
|
returns (
|
434
611
|
InstanceReader instanceReader,
|
612
|
+
InstanceAdmin instanceAdmin,
|
435
613
|
InstanceStore instanceStore,
|
614
|
+
NftId parentNftId,
|
436
615
|
NftId componentNftId
|
437
616
|
)
|
438
617
|
{
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
) = _getAndVerifyRegisterableComponent(
|
444
|
-
componentAddress,
|
445
|
-
requiredType,
|
446
|
-
requiredRole);
|
618
|
+
NftId instanceNftId;
|
619
|
+
IInstance instance;
|
620
|
+
IInstanceLinkedComponent component;
|
621
|
+
address initialOwner;
|
447
622
|
|
448
|
-
|
449
|
-
|
623
|
+
(
|
624
|
+
instanceNftId,
|
625
|
+
instance,
|
626
|
+
parentNftId,
|
450
627
|
component,
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
// setup initial component authorization
|
457
|
-
_instanceService.initializeAuthorization(
|
458
|
-
instance.getNftId(),
|
459
|
-
component);
|
628
|
+
initialOwner
|
629
|
+
) = ComponentServiceHelperLib.getAndVerifyRegisterableComponent(
|
630
|
+
getRegistry(),
|
631
|
+
componentAddress,
|
632
|
+
requiredType);
|
460
633
|
|
461
|
-
//
|
634
|
+
// get instance supporting contracts (as function return values)
|
462
635
|
instanceReader = instance.getInstanceReader();
|
636
|
+
instanceAdmin = instance.getInstanceAdmin();
|
463
637
|
instanceStore = instance.getInstanceStore();
|
464
638
|
|
465
|
-
|
466
|
-
|
639
|
+
// register with registry
|
640
|
+
if (requiredType == PRODUCT()) {
|
641
|
+
componentNftId = _registryService.registerProduct(
|
642
|
+
component, initialOwner).nftId;
|
643
|
+
} else {
|
644
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
645
|
+
component, requiredType, initialOwner).nftId;
|
646
|
+
}
|
647
|
+
|
648
|
+
// deploy and wire token handler
|
649
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
650
|
+
IERC20Metadata token = componentInfo.token;
|
651
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
652
|
+
address(token),
|
653
|
+
address(instanceAdmin.authority()),
|
654
|
+
componentInfo.wallet);
|
467
655
|
|
656
|
+
// register component with instance
|
468
657
|
instanceStore.createComponent(
|
469
|
-
|
658
|
+
componentNftId,
|
470
659
|
componentInfo);
|
471
660
|
|
472
|
-
//
|
473
|
-
|
474
|
-
|
661
|
+
// link component contract to nft id
|
662
|
+
component.linkToRegisteredNftId();
|
475
663
|
|
476
|
-
|
477
|
-
function _linkToProduct(
|
478
|
-
InstanceReader instanceReader,
|
479
|
-
InstanceStore instanceStore,
|
480
|
-
NftId componentNftId,
|
481
|
-
NftId productNftId
|
482
|
-
)
|
483
|
-
internal
|
484
|
-
{
|
485
|
-
// only link components that are registered
|
486
|
-
if(componentNftId.eqz()) {
|
487
|
-
return;
|
488
|
-
}
|
489
|
-
|
490
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
491
|
-
componentInfo.productNftId = productNftId;
|
492
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
664
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
493
665
|
}
|
494
666
|
|
495
667
|
|
@@ -508,12 +680,6 @@ contract ComponentService is
|
|
508
680
|
}
|
509
681
|
|
510
682
|
|
511
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
512
|
-
selectors = new bytes4[](1);
|
513
|
-
selectors[0] = selector;
|
514
|
-
}
|
515
|
-
|
516
|
-
|
517
683
|
function _getLinkedProductInfo(
|
518
684
|
InstanceReader instanceReader,
|
519
685
|
NftId componentNftId
|
@@ -525,56 +691,10 @@ contract ComponentService is
|
|
525
691
|
IComponents.ProductInfo memory info
|
526
692
|
)
|
527
693
|
{
|
528
|
-
productNftId =
|
694
|
+
productNftId = _getProductNftId(componentNftId);
|
529
695
|
info = instanceReader.getProductInfo(productNftId);
|
530
696
|
}
|
531
697
|
|
532
|
-
|
533
|
-
/// @dev based on the provided component address required type and role returns the component and related instance contract
|
534
|
-
/// the function reverts iff:
|
535
|
-
/// - the component has already been registered
|
536
|
-
/// - the component contract does not support IInstanceLinkedComponent
|
537
|
-
/// - the component type does not match with the required type
|
538
|
-
/// - the initial component owner misses the required role (with the instance access manager)
|
539
|
-
function _getAndVerifyRegisterableComponent(
|
540
|
-
address componentAddress,
|
541
|
-
ObjectType requiredType,
|
542
|
-
RoleId requiredRole
|
543
|
-
)
|
544
|
-
internal
|
545
|
-
view
|
546
|
-
returns (
|
547
|
-
IInstance instance,
|
548
|
-
IInstanceLinkedComponent component,
|
549
|
-
address owner
|
550
|
-
)
|
551
|
-
{
|
552
|
-
// check this is a component
|
553
|
-
component = IInstanceLinkedComponent(componentAddress);
|
554
|
-
if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
|
555
|
-
revert ErrorComponentServiceNotComponent(componentAddress);
|
556
|
-
}
|
557
|
-
|
558
|
-
// check component is of required type
|
559
|
-
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
560
|
-
if(info.objectType != requiredType) {
|
561
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
562
|
-
}
|
563
|
-
|
564
|
-
// check component has not already been registered
|
565
|
-
if (getRegistry().getNftId(componentAddress).gtz()) {
|
566
|
-
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
567
|
-
}
|
568
|
-
|
569
|
-
// check instance has assigned required role to inital owner
|
570
|
-
instance = _getInstance(info.parentNftId);
|
571
|
-
owner = info.initialOwner;
|
572
|
-
|
573
|
-
if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
|
574
|
-
revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
|
575
|
-
}
|
576
|
-
}
|
577
|
-
|
578
698
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
579
699
|
return COMPONENT();
|
580
700
|
}
|