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