@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71b939f-497
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 -8
- 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/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- 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 +159 -353
- 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 +99 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +227 -290
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +89 -115
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +101 -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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +98 -30
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +123 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +179 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +726 -133
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +118 -247
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +337 -138
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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/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 +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +111 -305
- 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 +77 -103
- 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 +87 -265
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +147 -191
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +119 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -284
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +146 -307
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -119
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -135
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +283 -180
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +106 -295
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +382 -407
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +123 -99
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +119 -165
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +93 -85
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +149 -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 +282 -229
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -108
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +179 -35
- 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 +136 -116
- 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 +281 -323
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +123 -119
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +147 -279
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +310 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- 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 +516 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -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 +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
- 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 +76 -239
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +413 -329
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -118
- 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 +488 -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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -103
- 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 +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +87 -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 +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +674 -49
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +111 -114
- 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 +64 -94
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -368
- 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 +117 -110
- 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 +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +170 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
- 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 +33 -9
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +3 -3
- 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 +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 +99 -5
- 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 +26 -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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +83 -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 +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +12 -23
- package/contracts/distribution/DistributionService.sol +97 -66
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +13 -8
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +16 -30
- package/contracts/instance/IInstanceService.sol +7 -25
- package/contracts/instance/Instance.sol +43 -56
- package/contracts/instance/InstanceAdmin.sol +64 -49
- package/contracts/instance/InstanceAuthorizationV3.sol +40 -27
- package/contracts/instance/InstanceReader.sol +193 -20
- package/contracts/instance/InstanceService.sol +58 -100
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +25 -24
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +112 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +69 -83
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +3 -14
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +48 -42
- package/contracts/pool/Pool.sol +144 -127
- package/contracts/pool/PoolService.sol +277 -189
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +34 -25
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +9 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +312 -115
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +31 -25
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
- package/contracts/product/PolicyService.sol +396 -263
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +49 -53
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +101 -87
- package/contracts/product/{ProductService.sol → RiskService.sol} +21 -13
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +57 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +350 -201
- package/contracts/registry/RegistryAdmin.sol +140 -54
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +207 -206
- package/contracts/registry/ServiceAuthorizationV3.sol +22 -47
- package/contracts/shared/Component.sol +52 -116
- package/contracts/shared/ComponentService.sol +335 -166
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +224 -0
- package/contracts/shared/IComponent.sol +10 -14
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -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/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +71 -38
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +357 -30
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +11 -5
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +39 -50
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +58 -25
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- 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 +18 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +30 -4
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +13 -119
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/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/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/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,46 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IComponent} from "../shared/IComponent.sol";
|
7
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
8
|
import {IComponentService} from "./IComponentService.sol";
|
9
9
|
import {IInstance} from "../instance/IInstance.sol";
|
10
10
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
11
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
14
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
15
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
16
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
17
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
19
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
20
|
+
|
21
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
23
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
24
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
25
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {
|
22
|
-
import {TokenHandler} from "
|
23
|
-
import {
|
26
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} 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
|
+
|
24
31
|
|
25
32
|
contract ComponentService is
|
26
|
-
|
33
|
+
Service,
|
27
34
|
IComponentService
|
28
35
|
{
|
29
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
30
|
-
error ErrorComponentServiceNotComponent(address component);
|
31
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
32
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
33
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
34
|
-
error ErrorComponentServiceComponentLocked(address component);
|
35
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
36
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
37
|
-
|
38
36
|
bool private constant INCREASE = true;
|
39
37
|
bool private constant DECREASE = false;
|
40
38
|
|
41
39
|
IRegistryService private _registryService;
|
42
40
|
IInstanceService private _instanceService;
|
43
41
|
|
42
|
+
modifier onlyComponent(address component) {
|
43
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
44
50
|
function _initialize(
|
45
51
|
address owner,
|
46
52
|
bytes memory data
|
@@ -49,41 +55,89 @@ contract ComponentService is
|
|
49
55
|
virtual override
|
50
56
|
initializer()
|
51
57
|
{
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
58
|
+
(
|
59
|
+
address registryAddress,
|
60
|
+
address authority
|
61
|
+
) = abi.decode(data, (address, address));
|
56
62
|
|
57
|
-
|
63
|
+
_initializeService(registryAddress, authority, owner);
|
58
64
|
|
59
65
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
60
66
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
61
67
|
|
62
|
-
|
68
|
+
_registerInterface(type(IComponentService).interfaceId);
|
63
69
|
}
|
64
70
|
|
65
71
|
//-------- component ----------------------------------------------------//
|
66
72
|
|
67
|
-
function
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
73
|
+
function registerComponent(address component)
|
74
|
+
external
|
75
|
+
virtual
|
76
|
+
onlyComponent(component)
|
77
|
+
returns (NftId componentNftId)
|
78
|
+
{
|
79
|
+
// type specific registration
|
80
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
81
|
+
if (componentType == POOL()) {
|
82
|
+
return _registerPool(component);
|
74
83
|
}
|
75
|
-
|
76
|
-
|
77
|
-
revert ErrorComponentServiceWalletAddressZero();
|
84
|
+
if (componentType == DISTRIBUTION()) {
|
85
|
+
return _registerDistribution(component);
|
78
86
|
}
|
79
|
-
|
80
|
-
|
81
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
87
|
+
if (componentType == ORACLE()) {
|
88
|
+
return _registerOracle(component);
|
82
89
|
}
|
83
90
|
|
84
|
-
|
85
|
-
|
86
|
-
|
91
|
+
// fail
|
92
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
93
|
+
}
|
94
|
+
|
95
|
+
function approveTokenHandler(
|
96
|
+
IERC20Metadata token,
|
97
|
+
Amount amount
|
98
|
+
)
|
99
|
+
external
|
100
|
+
virtual
|
101
|
+
{
|
102
|
+
// checks
|
103
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
104
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
105
|
+
componentNftId).tokenHandler;
|
106
|
+
|
107
|
+
// effects
|
108
|
+
tokenHandler.approve(token, amount);
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
function approveStakingTokenHandler(
|
113
|
+
IERC20Metadata token,
|
114
|
+
Amount amount
|
115
|
+
)
|
116
|
+
external
|
117
|
+
virtual
|
118
|
+
{
|
119
|
+
// checks
|
120
|
+
ContractLib.getAndVerifyStaking(
|
121
|
+
getRegistry(),
|
122
|
+
msg.sender); // only active
|
123
|
+
|
124
|
+
// effects
|
125
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
126
|
+
tokenHandler.approve(token, amount);
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
function setWallet(address newWallet)
|
131
|
+
external
|
132
|
+
virtual
|
133
|
+
{
|
134
|
+
// checks
|
135
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
136
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
137
|
+
componentNftId).tokenHandler;
|
138
|
+
|
139
|
+
// effects
|
140
|
+
tokenHandler.setWallet(newWallet);
|
87
141
|
}
|
88
142
|
|
89
143
|
// TODO implement
|
@@ -97,9 +151,9 @@ contract ComponentService is
|
|
97
151
|
virtual
|
98
152
|
returns (Amount withdrawnAmount)
|
99
153
|
{
|
100
|
-
(NftId componentNftId
|
154
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
101
155
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
102
|
-
address componentWallet = info.
|
156
|
+
address componentWallet = info.tokenHandler.getWallet();
|
103
157
|
|
104
158
|
// determine withdrawn amount
|
105
159
|
withdrawnAmount = amount;
|
@@ -120,35 +174,36 @@ contract ComponentService is
|
|
120
174
|
// transfer amount to component owner
|
121
175
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
122
176
|
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
123
|
-
|
177
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
124
178
|
}
|
125
179
|
|
126
180
|
|
127
181
|
//-------- product ------------------------------------------------------//
|
128
182
|
|
129
|
-
function registerProduct()
|
183
|
+
function registerProduct(address productAddress)
|
130
184
|
external
|
131
185
|
virtual
|
186
|
+
nonReentrant()
|
187
|
+
onlyComponent(productAddress)
|
188
|
+
returns (NftId productNftId)
|
132
189
|
{
|
133
|
-
address contractAddress = msg.sender;
|
134
|
-
|
135
190
|
// register/create component setup
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
// create
|
146
|
-
|
147
|
-
|
191
|
+
InstanceAdmin instanceAdmin;
|
192
|
+
InstanceStore instanceStore;
|
193
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
194
|
+
productAddress,
|
195
|
+
PRODUCT());
|
196
|
+
|
197
|
+
// get product
|
198
|
+
IProductComponent product = IProductComponent(productAddress);
|
199
|
+
|
200
|
+
// create info
|
201
|
+
instanceStore.createProduct(
|
202
|
+
productNftId,
|
203
|
+
product.getInitialProductInfo());
|
148
204
|
|
149
|
-
//
|
150
|
-
|
151
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
|
205
|
+
// authorize
|
206
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
152
207
|
}
|
153
208
|
|
154
209
|
|
@@ -158,8 +213,9 @@ contract ComponentService is
|
|
158
213
|
)
|
159
214
|
external
|
160
215
|
virtual
|
216
|
+
nonReentrant()
|
161
217
|
{
|
162
|
-
(NftId productNftId
|
218
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
163
219
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
164
220
|
bool feesChanged = false;
|
165
221
|
|
@@ -193,6 +249,7 @@ contract ComponentService is
|
|
193
249
|
// TODO re-enable once role granting is stable and fixed
|
194
250
|
// restricted()
|
195
251
|
{
|
252
|
+
_checkNftType(productNftId, PRODUCT());
|
196
253
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
197
254
|
}
|
198
255
|
|
@@ -203,23 +260,44 @@ contract ComponentService is
|
|
203
260
|
// TODO re-enable once role granting is stable and fixed
|
204
261
|
// restricted()
|
205
262
|
{
|
263
|
+
_checkNftType(productNftId, PRODUCT());
|
206
264
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
207
265
|
}
|
208
266
|
|
209
267
|
//-------- distribution -------------------------------------------------//
|
210
268
|
|
211
269
|
/// @dev registers the sending component as a distribution component
|
212
|
-
function
|
213
|
-
|
270
|
+
function _registerDistribution(address distributioAddress)
|
271
|
+
internal
|
214
272
|
virtual
|
273
|
+
nonReentrant()
|
274
|
+
returns (NftId distributionNftId)
|
215
275
|
{
|
216
|
-
address contractAddress = msg.sender;
|
217
|
-
|
218
276
|
// register/create component info
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
277
|
+
InstanceReader instanceReader;
|
278
|
+
InstanceAdmin instanceAdmin;
|
279
|
+
InstanceStore instanceStore;
|
280
|
+
NftId productNftId;
|
281
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
282
|
+
distributioAddress,
|
283
|
+
DISTRIBUTION());
|
284
|
+
|
285
|
+
// check product is still expecting a distribution registration
|
286
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
287
|
+
if (!productInfo.hasDistribution) {
|
288
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
289
|
+
}
|
290
|
+
if (productInfo.distributionNftId.gtz()) {
|
291
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
292
|
+
}
|
293
|
+
|
294
|
+
// set distribution in product info
|
295
|
+
productInfo.distributionNftId = distributionNftId;
|
296
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
297
|
+
|
298
|
+
// authorize
|
299
|
+
instanceAdmin.initializeComponentAuthorization(
|
300
|
+
IInstanceLinkedComponent(distributioAddress));
|
223
301
|
}
|
224
302
|
|
225
303
|
|
@@ -230,7 +308,7 @@ contract ComponentService is
|
|
230
308
|
external
|
231
309
|
virtual
|
232
310
|
{
|
233
|
-
(NftId distributionNftId
|
311
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
234
312
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
235
313
|
instance.getInstanceReader(), distributionNftId);
|
236
314
|
bool feesChanged = false;
|
@@ -266,6 +344,7 @@ contract ComponentService is
|
|
266
344
|
// TODO re-enable once role granting is stable and fixed
|
267
345
|
// restricted()
|
268
346
|
{
|
347
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
269
348
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
270
349
|
}
|
271
350
|
|
@@ -281,6 +360,7 @@ contract ComponentService is
|
|
281
360
|
// TODO re-enable once role granting is stable and fixed
|
282
361
|
// restricted()
|
283
362
|
{
|
363
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
284
364
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
285
365
|
}
|
286
366
|
|
@@ -297,6 +377,7 @@ contract ComponentService is
|
|
297
377
|
// TODO re-enable once role granting is stable and fixed
|
298
378
|
// restricted()
|
299
379
|
{
|
380
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
300
381
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
301
382
|
}
|
302
383
|
|
@@ -311,51 +392,81 @@ contract ComponentService is
|
|
311
392
|
// TODO re-enable once role granting is stable and fixed
|
312
393
|
// restricted()
|
313
394
|
{
|
395
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
314
396
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
315
397
|
}
|
316
398
|
|
317
399
|
//-------- oracle -------------------------------------------------------//
|
318
400
|
|
319
|
-
function
|
320
|
-
|
401
|
+
function _registerOracle(address oracleAddress)
|
402
|
+
internal
|
321
403
|
virtual
|
404
|
+
returns (NftId oracleNftId)
|
322
405
|
{
|
323
|
-
address contractAddress = msg.sender;
|
324
|
-
|
325
406
|
// register/create component setup
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
407
|
+
InstanceReader instanceReader;
|
408
|
+
InstanceAdmin instanceAdmin;
|
409
|
+
InstanceStore instanceStore;
|
410
|
+
NftId productNftId;
|
411
|
+
|
412
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
413
|
+
oracleAddress,
|
414
|
+
ORACLE());
|
415
|
+
|
416
|
+
// check product is still expecting an oracle registration
|
417
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
418
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
419
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
420
|
+
}
|
421
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
422
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
423
|
+
}
|
424
|
+
|
425
|
+
// update/add oracle to product info
|
426
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
427
|
+
productInfo.numberOfOracles++;
|
428
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
429
|
+
|
430
|
+
// authorize
|
431
|
+
instanceAdmin.initializeComponentAuthorization(
|
432
|
+
IInstanceLinkedComponent(oracleAddress));
|
334
433
|
}
|
335
434
|
|
336
435
|
//-------- pool ---------------------------------------------------------//
|
337
436
|
|
338
|
-
function
|
339
|
-
|
437
|
+
function _registerPool(address poolAddress)
|
438
|
+
internal
|
340
439
|
virtual
|
440
|
+
returns (NftId poolNftId)
|
341
441
|
{
|
342
|
-
address contractAddress = msg.sender;
|
343
|
-
|
344
442
|
// register/create component setup
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
443
|
+
InstanceReader instanceReader;
|
444
|
+
InstanceAdmin instanceAdmin;
|
445
|
+
InstanceStore instanceStore;
|
446
|
+
NftId productNftId;
|
447
|
+
|
448
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
449
|
+
poolAddress,
|
450
|
+
POOL());
|
451
|
+
|
452
|
+
// check product is still expecting a pool registration
|
453
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
454
|
+
if (productInfo.poolNftId.gtz()) {
|
455
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
456
|
+
}
|
353
457
|
|
354
458
|
// create info
|
459
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
355
460
|
instanceStore.createPool(
|
356
|
-
|
357
|
-
|
358
|
-
|
461
|
+
poolNftId,
|
462
|
+
pool.getInitialPoolInfo());
|
463
|
+
|
464
|
+
// update pool in product info
|
465
|
+
productInfo.poolNftId = poolNftId;
|
466
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
467
|
+
|
468
|
+
// authorize
|
469
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
359
470
|
}
|
360
471
|
|
361
472
|
|
@@ -367,7 +478,8 @@ contract ComponentService is
|
|
367
478
|
external
|
368
479
|
virtual
|
369
480
|
{
|
370
|
-
(NftId poolNftId
|
481
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
482
|
+
|
371
483
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
372
484
|
instance.getInstanceReader(), poolNftId);
|
373
485
|
bool feesChanged = false;
|
@@ -410,6 +522,7 @@ contract ComponentService is
|
|
410
522
|
// TODO re-enable once role granting is stable and fixed
|
411
523
|
// restricted()
|
412
524
|
{
|
525
|
+
_checkNftType(poolNftId, POOL());
|
413
526
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
414
527
|
}
|
415
528
|
|
@@ -424,6 +537,7 @@ contract ComponentService is
|
|
424
537
|
// TODO re-enable once role granting is stable and fixed
|
425
538
|
// restricted()
|
426
539
|
{
|
540
|
+
_checkNftType(poolNftId, POOL());
|
427
541
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
428
542
|
}
|
429
543
|
|
@@ -440,6 +554,7 @@ contract ComponentService is
|
|
440
554
|
// TODO re-enable once role granting is stable and fixed
|
441
555
|
// restricted()
|
442
556
|
{
|
557
|
+
_checkNftType(bundleNftId, BUNDLE());
|
443
558
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
444
559
|
}
|
445
560
|
|
@@ -454,6 +569,7 @@ contract ComponentService is
|
|
454
569
|
// TODO re-enable once role granting is stable and fixed
|
455
570
|
// restricted()
|
456
571
|
{
|
572
|
+
_checkNftType(bundleNftId, BUNDLE());
|
457
573
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
458
574
|
}
|
459
575
|
|
@@ -481,74 +597,72 @@ contract ComponentService is
|
|
481
597
|
}
|
482
598
|
}
|
483
599
|
|
484
|
-
/// @dev
|
600
|
+
/// @dev Registers the component represented by the provided address.
|
485
601
|
function _register(
|
486
602
|
address componentAddress, // address of component to register
|
487
|
-
ObjectType requiredType
|
488
|
-
RoleId requiredRole // role required for comonent owner for registration
|
603
|
+
ObjectType requiredType // required type for component for registration
|
489
604
|
)
|
490
605
|
internal
|
491
606
|
virtual
|
492
607
|
returns (
|
493
608
|
InstanceReader instanceReader,
|
609
|
+
InstanceAdmin instanceAdmin,
|
494
610
|
InstanceStore instanceStore,
|
611
|
+
NftId parentNftId,
|
495
612
|
NftId componentNftId
|
496
613
|
)
|
497
614
|
{
|
615
|
+
NftId instanceNftId;
|
616
|
+
IInstance instance;
|
617
|
+
IInstanceLinkedComponent component;
|
618
|
+
address initialOwner;
|
619
|
+
|
498
620
|
(
|
499
|
-
|
500
|
-
|
501
|
-
|
621
|
+
instanceNftId,
|
622
|
+
instance,
|
623
|
+
parentNftId,
|
624
|
+
component,
|
625
|
+
initialOwner
|
502
626
|
) = _getAndVerifyRegisterableComponent(
|
627
|
+
getRegistry(),
|
503
628
|
componentAddress,
|
504
|
-
requiredType
|
505
|
-
requiredRole);
|
506
|
-
|
507
|
-
// register component with registry
|
508
|
-
componentNftId = _registryService.registerComponent(
|
509
|
-
component,
|
510
|
-
requiredType,
|
511
|
-
owner).nftId;
|
512
|
-
|
513
|
-
component.linkToRegisteredNftId();
|
514
|
-
|
515
|
-
// setup initial component authorization
|
516
|
-
_instanceService.initializeAuthorization(
|
517
|
-
instance.getNftId(),
|
518
|
-
component);
|
629
|
+
requiredType);
|
519
630
|
|
520
|
-
//
|
631
|
+
// get instance supporting contracts (as function return values)
|
521
632
|
instanceReader = instance.getInstanceReader();
|
633
|
+
instanceAdmin = instance.getInstanceAdmin();
|
522
634
|
instanceStore = instance.getInstanceStore();
|
523
635
|
|
636
|
+
// register with registry
|
637
|
+
if (requiredType == PRODUCT()) {
|
638
|
+
componentNftId = _registryService.registerProduct(
|
639
|
+
component, initialOwner).nftId;
|
640
|
+
} else {
|
641
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
642
|
+
component, requiredType, initialOwner).nftId;
|
643
|
+
}
|
644
|
+
|
645
|
+
// deploy and wire token handler
|
524
646
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
525
|
-
|
647
|
+
IERC20Metadata token = componentInfo.token;
|
648
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
649
|
+
address(getRegistry()),
|
650
|
+
address(component), // initially, component is its own wallet
|
651
|
+
address(token),
|
652
|
+
address(instanceAdmin.authority()));
|
653
|
+
|
654
|
+
// set token handler allowance to max
|
655
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
526
656
|
|
657
|
+
// register component with instance
|
527
658
|
instanceStore.createComponent(
|
528
|
-
|
659
|
+
componentNftId,
|
529
660
|
componentInfo);
|
530
661
|
|
531
|
-
//
|
532
|
-
|
533
|
-
|
662
|
+
// link component contract to nft id
|
663
|
+
component.linkToRegisteredNftId();
|
534
664
|
|
535
|
-
|
536
|
-
function _linkToProduct(
|
537
|
-
InstanceReader instanceReader,
|
538
|
-
InstanceStore instanceStore,
|
539
|
-
NftId componentNftId,
|
540
|
-
NftId productNftId
|
541
|
-
)
|
542
|
-
internal
|
543
|
-
{
|
544
|
-
// only link components that are registered
|
545
|
-
if(componentNftId.eqz()) {
|
546
|
-
return;
|
547
|
-
}
|
548
|
-
|
549
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
550
|
-
componentInfo.productNftId = productNftId;
|
551
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
665
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
552
666
|
}
|
553
667
|
|
554
668
|
|
@@ -567,12 +681,6 @@ contract ComponentService is
|
|
567
681
|
}
|
568
682
|
|
569
683
|
|
570
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
571
|
-
selectors = new bytes4[](1);
|
572
|
-
selectors[0] = selector;
|
573
|
-
}
|
574
|
-
|
575
|
-
|
576
684
|
function _getLinkedProductInfo(
|
577
685
|
InstanceReader instanceReader,
|
578
686
|
NftId componentNftId
|
@@ -584,54 +692,115 @@ contract ComponentService is
|
|
584
692
|
IComponents.ProductInfo memory info
|
585
693
|
)
|
586
694
|
{
|
587
|
-
productNftId =
|
695
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
588
696
|
info = instanceReader.getProductInfo(productNftId);
|
589
697
|
}
|
590
698
|
|
591
699
|
|
592
|
-
/// @dev
|
593
|
-
///
|
594
|
-
/// - the
|
700
|
+
/// @dev Based on the provided component address required type the component
|
701
|
+
/// and related instance contract this function reverts iff:
|
702
|
+
/// - the sender is not registered
|
595
703
|
/// - the component contract does not support IInstanceLinkedComponent
|
596
704
|
/// - the component type does not match with the required type
|
597
|
-
/// - the
|
705
|
+
/// - the component has already been registered
|
598
706
|
function _getAndVerifyRegisterableComponent(
|
707
|
+
IRegistry registry,
|
599
708
|
address componentAddress,
|
600
|
-
ObjectType requiredType
|
601
|
-
RoleId requiredRole
|
709
|
+
ObjectType requiredType
|
602
710
|
)
|
603
711
|
internal
|
604
712
|
view
|
605
713
|
returns (
|
714
|
+
NftId instanceNftId,
|
606
715
|
IInstance instance,
|
716
|
+
NftId parentNftId,
|
607
717
|
IInstanceLinkedComponent component,
|
608
|
-
address
|
718
|
+
address initialOwner
|
609
719
|
)
|
610
720
|
{
|
611
|
-
// check
|
612
|
-
|
613
|
-
if(
|
614
|
-
revert
|
721
|
+
// check sender (instance or product) is registered
|
722
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
723
|
+
if (senderInfo.nftId.eqz()) {
|
724
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
615
725
|
}
|
616
726
|
|
727
|
+
// the sender is the parent of the component to be registered
|
728
|
+
// an instance caller wanting to register a product - or -
|
729
|
+
// a product caller wantint go register a distribution, oracle or pool
|
730
|
+
parentNftId = senderInfo.nftId;
|
731
|
+
|
617
732
|
// check component is of required type
|
733
|
+
component = IInstanceLinkedComponent(componentAddress);
|
618
734
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
619
735
|
if(info.objectType != requiredType) {
|
620
736
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
621
737
|
}
|
622
738
|
|
623
739
|
// check component has not already been registered
|
624
|
-
if (getRegistry().
|
740
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
625
741
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
626
742
|
}
|
627
743
|
|
628
|
-
// check
|
629
|
-
|
630
|
-
|
744
|
+
// check release matches
|
745
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
746
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
747
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
748
|
+
}
|
749
|
+
|
750
|
+
// check component belongs to same product cluster
|
751
|
+
// parent of product must be instance, parent of other componet types must be product
|
752
|
+
if (info.parentNftId != senderInfo.nftId) {
|
753
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
754
|
+
}
|
755
|
+
|
756
|
+
// verify parent is registered instance
|
757
|
+
if (requiredType == PRODUCT()) {
|
758
|
+
if (senderInfo.objectType != INSTANCE()) {
|
759
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
760
|
+
}
|
761
|
+
|
762
|
+
instanceNftId = senderInfo.nftId;
|
763
|
+
// verify parent is registered product
|
764
|
+
} else {
|
765
|
+
if (senderInfo.objectType != PRODUCT()) {
|
766
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
767
|
+
}
|
768
|
+
|
769
|
+
instanceNftId = senderInfo.parentNftId;
|
770
|
+
}
|
631
771
|
|
632
|
-
|
633
|
-
|
772
|
+
// get initial owner and instance
|
773
|
+
initialOwner = info.initialOwner;
|
774
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
775
|
+
}
|
776
|
+
|
777
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
778
|
+
internal
|
779
|
+
view
|
780
|
+
returns (
|
781
|
+
NftId componentNftId,
|
782
|
+
IInstance instance
|
783
|
+
)
|
784
|
+
{
|
785
|
+
IRegistry.ObjectInfo memory info;
|
786
|
+
address instanceAddress;
|
787
|
+
|
788
|
+
if (expectedType != COMPONENT()) {
|
789
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
790
|
+
getRegistry(),
|
791
|
+
msg.sender, // caller
|
792
|
+
expectedType,
|
793
|
+
true); // only active
|
794
|
+
} else {
|
795
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
796
|
+
getRegistry(),
|
797
|
+
msg.sender,
|
798
|
+
true); // only active
|
634
799
|
}
|
800
|
+
|
801
|
+
// get component nft id and instance
|
802
|
+
componentNftId = info.nftId;
|
803
|
+
instance = IInstance(instanceAddress);
|
635
804
|
}
|
636
805
|
|
637
806
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|