@etherisc/gif-next 0.0.2-a714036-117 → 0.0.2-a755cba-731
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/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
- 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 +156 -412
- 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 +96 -344
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +229 -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 +84 -142
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +101 -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 +1441 -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 +1991 -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 +1429 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2329 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +116 -48
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +141 -141
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -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 +746 -134
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +118 -260
- 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 +339 -140
- 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 +109 -365
- 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 +72 -130
- 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 +85 -333
- 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 +108 -356
- 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 +160 -334
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -131
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +60 -65
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -163
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +277 -205
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +105 -364
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +385 -418
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +120 -100
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +124 -181
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +89 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +147 -349
- 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 +433 -193
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +141 -105
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +68 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +292 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +281 -142
- 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 +131 -143
- 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 +351 -338
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +126 -98
- 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 +145 -347
- 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 +69 -288
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +471 -593
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -127
- 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 +61 -90
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +72 -130
- 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 +84 -332
- 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 +106 -127
- 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 +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 +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/accounting/AccountingService.sol +263 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- 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 +8 -7
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +33 -41
- package/contracts/distribution/DistributionService.sol +109 -89
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +14 -11
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +436 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +366 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +16 -31
- package/contracts/instance/IInstanceService.sol +7 -29
- package/contracts/instance/Instance.sol +44 -59
- package/contracts/instance/InstanceAdmin.sol +76 -54
- package/contracts/instance/InstanceAuthorizationV3.sol +53 -34
- package/contracts/instance/InstanceReader.sol +203 -27
- package/contracts/instance/InstanceService.sol +97 -148
- 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 +10 -4
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +11 -8
- package/contracts/instance/module/IPolicy.sol +26 -25
- 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 +35 -26
- package/contracts/pool/BasicPoolAuthorization.sol +14 -4
- package/contracts/pool/BundleService.sol +105 -118
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +8 -20
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +52 -48
- package/contracts/pool/Pool.sol +145 -128
- package/contracts/pool/PoolService.sol +295 -208
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +71 -42
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +9 -12
- package/contracts/product/BasicProductAuthorization.sol +1 -3
- package/contracts/product/ClaimService.sol +393 -127
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -7
- package/contracts/product/IPolicyService.sol +44 -38
- 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 +501 -294
- 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 +133 -93
- 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 +147 -55
- 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 +59 -52
- package/contracts/shared/Component.sol +60 -121
- package/contracts/shared/ComponentService.sol +390 -345
- 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 +6 -14
- package/contracts/shared/IComponentService.sol +45 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- 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 +72 -47
- 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 +358 -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 +49 -50
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +65 -36
- 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 +26 -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/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
@@ -4,44 +4,72 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
-
import {
|
7
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
8
8
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
9
|
+
import {IAccountingService} from "../accounting/IAccountingService.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";
|
16
19
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
20
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
21
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
18
22
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
23
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
24
|
+
|
25
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
26
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
27
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
20
28
|
import {KEEP_STATE} from "../type/StateId.sol";
|
21
29
|
import {NftId} from "../type/NftId.sol";
|
22
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
23
|
-
import {
|
24
|
-
import {TokenHandler} from "
|
30
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
31
|
+
import {Service} from "../shared/Service.sol";
|
32
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
33
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
34
|
+
import {VersionPart} from "../type/Version.sol";
|
35
|
+
|
25
36
|
|
26
37
|
contract ComponentService is
|
27
|
-
|
38
|
+
Service,
|
28
39
|
IComponentService
|
29
40
|
{
|
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
|
-
|
39
41
|
bool private constant INCREASE = true;
|
40
42
|
bool private constant DECREASE = false;
|
41
43
|
|
44
|
+
IAccountingService private _accountingService;
|
42
45
|
IRegistryService private _registryService;
|
43
46
|
IInstanceService private _instanceService;
|
44
47
|
|
48
|
+
modifier onlyComponent(address component) {
|
49
|
+
_checkSupportsInterface(component);
|
50
|
+
_;
|
51
|
+
}
|
52
|
+
|
53
|
+
modifier onlyInstance() {
|
54
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
55
|
+
if (instanceNftId.eqz()) {
|
56
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
57
|
+
}
|
58
|
+
|
59
|
+
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
60
|
+
if (objectType != INSTANCE()) {
|
61
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
62
|
+
}
|
63
|
+
|
64
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
65
|
+
if (instanceVersion != getVersion().toMajorPart()) {
|
66
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
67
|
+
}
|
68
|
+
|
69
|
+
_;
|
70
|
+
}
|
71
|
+
|
72
|
+
|
45
73
|
function _initialize(
|
46
74
|
address owner,
|
47
75
|
bytes memory data
|
@@ -50,57 +78,122 @@ contract ComponentService is
|
|
50
78
|
virtual override
|
51
79
|
initializer()
|
52
80
|
{
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
81
|
+
(
|
82
|
+
address registryAddress,
|
83
|
+
address authority
|
84
|
+
) = abi.decode(data, (address, address));
|
57
85
|
|
58
|
-
|
86
|
+
_initializeService(registryAddress, authority, owner);
|
59
87
|
|
88
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
60
89
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
61
90
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
91
|
|
63
|
-
|
92
|
+
_registerInterface(type(IComponentService).interfaceId);
|
64
93
|
}
|
65
94
|
|
66
95
|
//-------- component ----------------------------------------------------//
|
67
96
|
|
68
|
-
function
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
97
|
+
function registerComponent(address component)
|
98
|
+
external
|
99
|
+
virtual
|
100
|
+
onlyComponent(component)
|
101
|
+
returns (NftId componentNftId)
|
102
|
+
{
|
103
|
+
// type specific registration
|
104
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
105
|
+
if (componentType == POOL()) {
|
106
|
+
return _registerPool(component);
|
75
107
|
}
|
76
|
-
|
77
|
-
|
78
|
-
revert ErrorComponentServiceWalletAddressZero();
|
108
|
+
if (componentType == DISTRIBUTION()) {
|
109
|
+
return _registerDistribution(component);
|
79
110
|
}
|
80
|
-
|
81
|
-
|
82
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
111
|
+
if (componentType == ORACLE()) {
|
112
|
+
return _registerOracle(component);
|
83
113
|
}
|
84
114
|
|
85
|
-
|
86
|
-
|
87
|
-
|
115
|
+
// fail
|
116
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
117
|
+
}
|
118
|
+
|
119
|
+
function approveTokenHandler(
|
120
|
+
IERC20Metadata token,
|
121
|
+
Amount amount
|
122
|
+
)
|
123
|
+
external
|
124
|
+
virtual
|
125
|
+
{
|
126
|
+
// checks
|
127
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
128
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
129
|
+
componentNftId).tokenHandler;
|
130
|
+
|
131
|
+
// effects
|
132
|
+
tokenHandler.approve(token, amount);
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
function approveStakingTokenHandler(
|
137
|
+
IERC20Metadata token,
|
138
|
+
Amount amount
|
139
|
+
)
|
140
|
+
external
|
141
|
+
virtual
|
142
|
+
{
|
143
|
+
// checks
|
144
|
+
ContractLib.getAndVerifyStaking(
|
145
|
+
getRegistry(),
|
146
|
+
msg.sender); // only active
|
147
|
+
|
148
|
+
// effects
|
149
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
150
|
+
tokenHandler.approve(token, amount);
|
151
|
+
}
|
152
|
+
|
153
|
+
|
154
|
+
function setWallet(address newWallet)
|
155
|
+
external
|
156
|
+
virtual
|
157
|
+
{
|
158
|
+
// checks
|
159
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
160
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
161
|
+
componentNftId).tokenHandler;
|
162
|
+
|
163
|
+
// effects
|
164
|
+
tokenHandler.setWallet(newWallet);
|
88
165
|
}
|
89
166
|
|
90
|
-
|
91
|
-
function
|
167
|
+
/// @inheritdoc IComponentService
|
168
|
+
function setLockedFromInstance(address componentAddress, bool locked)
|
169
|
+
external
|
170
|
+
virtual
|
171
|
+
onlyInstance()
|
172
|
+
{
|
173
|
+
address instanceAddress = msg.sender;
|
174
|
+
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
175
|
+
IInstance instance = IInstance(instanceAddress);
|
176
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
177
|
+
}
|
92
178
|
|
93
|
-
|
94
|
-
function
|
179
|
+
/// @inheritdoc IComponentService
|
180
|
+
function setLockedFromComponent(address componentAddress, bool locked)
|
181
|
+
external
|
182
|
+
virtual
|
183
|
+
onlyComponent(msg.sender)
|
184
|
+
{
|
185
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
186
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
187
|
+
}
|
95
188
|
|
96
189
|
function withdrawFees(Amount amount)
|
97
190
|
external
|
98
191
|
virtual
|
99
192
|
returns (Amount withdrawnAmount)
|
100
193
|
{
|
101
|
-
(NftId componentNftId
|
194
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
102
195
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
103
|
-
address componentWallet = info.
|
196
|
+
address componentWallet = info.tokenHandler.getWallet();
|
104
197
|
|
105
198
|
// determine withdrawn amount
|
106
199
|
withdrawnAmount = amount;
|
@@ -115,51 +208,42 @@ contract ComponentService is
|
|
115
208
|
}
|
116
209
|
}
|
117
210
|
|
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
211
|
// decrease fee counters by withdrawnAmount
|
127
|
-
|
212
|
+
_accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
|
128
213
|
|
129
214
|
// transfer amount to component owner
|
130
215
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
131
|
-
|
132
|
-
tokenHandler.
|
133
|
-
|
134
|
-
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
216
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
217
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
135
218
|
}
|
136
219
|
|
137
220
|
|
138
221
|
//-------- product ------------------------------------------------------//
|
139
222
|
|
140
|
-
function registerProduct()
|
223
|
+
function registerProduct(address productAddress)
|
141
224
|
external
|
142
225
|
virtual
|
226
|
+
nonReentrant()
|
227
|
+
onlyComponent(productAddress)
|
228
|
+
returns (NftId productNftId)
|
143
229
|
{
|
144
|
-
address contractAddress = msg.sender;
|
145
|
-
|
146
230
|
// register/create component setup
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
// create
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
231
|
+
InstanceAdmin instanceAdmin;
|
232
|
+
InstanceStore instanceStore;
|
233
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
234
|
+
productAddress,
|
235
|
+
PRODUCT());
|
236
|
+
|
237
|
+
// get product
|
238
|
+
IProductComponent product = IProductComponent(productAddress);
|
239
|
+
|
240
|
+
// create info
|
241
|
+
instanceStore.createProduct(
|
242
|
+
productNftId,
|
243
|
+
product.getInitialProductInfo());
|
244
|
+
|
245
|
+
// authorize
|
246
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
163
247
|
}
|
164
248
|
|
165
249
|
|
@@ -169,8 +253,9 @@ contract ComponentService is
|
|
169
253
|
)
|
170
254
|
external
|
171
255
|
virtual
|
256
|
+
nonReentrant()
|
172
257
|
{
|
173
|
-
(NftId productNftId
|
258
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
174
259
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
175
260
|
bool feesChanged = false;
|
176
261
|
|
@@ -194,43 +279,40 @@ contract ComponentService is
|
|
194
279
|
}
|
195
280
|
}
|
196
281
|
|
197
|
-
function increaseProductFees(
|
198
|
-
InstanceStore instanceStore,
|
199
|
-
NftId productNftId,
|
200
|
-
Amount feeAmount
|
201
|
-
)
|
202
|
-
external
|
203
|
-
virtual
|
204
|
-
// TODO re-enable once role granting is stable and fixed
|
205
|
-
// restricted()
|
206
|
-
{
|
207
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
208
|
-
}
|
209
|
-
|
210
|
-
|
211
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
212
|
-
external
|
213
|
-
virtual
|
214
|
-
// TODO re-enable once role granting is stable and fixed
|
215
|
-
// restricted()
|
216
|
-
{
|
217
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
218
|
-
}
|
219
|
-
|
220
282
|
//-------- distribution -------------------------------------------------//
|
221
283
|
|
222
284
|
/// @dev registers the sending component as a distribution component
|
223
|
-
function
|
224
|
-
|
285
|
+
function _registerDistribution(address distributioAddress)
|
286
|
+
internal
|
225
287
|
virtual
|
288
|
+
nonReentrant()
|
289
|
+
returns (NftId distributionNftId)
|
226
290
|
{
|
227
|
-
address contractAddress = msg.sender;
|
228
|
-
|
229
291
|
// register/create component info
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
292
|
+
InstanceReader instanceReader;
|
293
|
+
InstanceAdmin instanceAdmin;
|
294
|
+
InstanceStore instanceStore;
|
295
|
+
NftId productNftId;
|
296
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
297
|
+
distributioAddress,
|
298
|
+
DISTRIBUTION());
|
299
|
+
|
300
|
+
// check product is still expecting a distribution registration
|
301
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
302
|
+
if (!productInfo.hasDistribution) {
|
303
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
304
|
+
}
|
305
|
+
if (productInfo.distributionNftId.gtz()) {
|
306
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
307
|
+
}
|
308
|
+
|
309
|
+
// set distribution in product info
|
310
|
+
productInfo.distributionNftId = distributionNftId;
|
311
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
312
|
+
|
313
|
+
// authorize
|
314
|
+
instanceAdmin.initializeComponentAuthorization(
|
315
|
+
IInstanceLinkedComponent(distributioAddress));
|
234
316
|
}
|
235
317
|
|
236
318
|
|
@@ -241,7 +323,7 @@ contract ComponentService is
|
|
241
323
|
external
|
242
324
|
virtual
|
243
325
|
{
|
244
|
-
(NftId distributionNftId
|
326
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
245
327
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
246
328
|
instance.getInstanceReader(), distributionNftId);
|
247
329
|
bool feesChanged = false;
|
@@ -266,107 +348,77 @@ contract ComponentService is
|
|
266
348
|
}
|
267
349
|
}
|
268
350
|
|
269
|
-
function increaseDistributionBalance(
|
270
|
-
InstanceStore instanceStore,
|
271
|
-
NftId distributionNftId,
|
272
|
-
Amount amount,
|
273
|
-
Amount feeAmount
|
274
|
-
)
|
275
|
-
external
|
276
|
-
virtual
|
277
|
-
// TODO re-enable once role granting is stable and fixed
|
278
|
-
// restricted()
|
279
|
-
{
|
280
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
281
|
-
}
|
282
|
-
|
283
|
-
|
284
|
-
function decreaseDistributionBalance(
|
285
|
-
InstanceStore instanceStore,
|
286
|
-
NftId distributionNftId,
|
287
|
-
Amount amount,
|
288
|
-
Amount feeAmount
|
289
|
-
)
|
290
|
-
external
|
291
|
-
virtual
|
292
|
-
// TODO re-enable once role granting is stable and fixed
|
293
|
-
// restricted()
|
294
|
-
{
|
295
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
296
|
-
}
|
297
|
-
|
298
|
-
//-------- distributor -------------------------------------------------------//
|
299
|
-
|
300
|
-
function increaseDistributorBalance(
|
301
|
-
InstanceStore instanceStore,
|
302
|
-
NftId distributorNftId,
|
303
|
-
Amount amount,
|
304
|
-
Amount feeAmount
|
305
|
-
)
|
306
|
-
external
|
307
|
-
virtual
|
308
|
-
// TODO re-enable once role granting is stable and fixed
|
309
|
-
// restricted()
|
310
|
-
{
|
311
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
312
|
-
}
|
313
|
-
|
314
|
-
function decreaseDistributorBalance(
|
315
|
-
InstanceStore instanceStore,
|
316
|
-
NftId distributorNftId,
|
317
|
-
Amount amount,
|
318
|
-
Amount feeAmount
|
319
|
-
)
|
320
|
-
external
|
321
|
-
virtual
|
322
|
-
// TODO re-enable once role granting is stable and fixed
|
323
|
-
// restricted()
|
324
|
-
{
|
325
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
326
|
-
}
|
327
|
-
|
328
351
|
//-------- oracle -------------------------------------------------------//
|
329
352
|
|
330
|
-
function
|
331
|
-
|
353
|
+
function _registerOracle(address oracleAddress)
|
354
|
+
internal
|
332
355
|
virtual
|
356
|
+
returns (NftId oracleNftId)
|
333
357
|
{
|
334
|
-
address contractAddress = msg.sender;
|
335
|
-
|
336
358
|
// register/create component setup
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
359
|
+
InstanceReader instanceReader;
|
360
|
+
InstanceAdmin instanceAdmin;
|
361
|
+
InstanceStore instanceStore;
|
362
|
+
NftId productNftId;
|
363
|
+
|
364
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
365
|
+
oracleAddress,
|
366
|
+
ORACLE());
|
367
|
+
|
368
|
+
// check product is still expecting an oracle registration
|
369
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
370
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
371
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
372
|
+
}
|
373
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
374
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
375
|
+
}
|
376
|
+
|
377
|
+
// update/add oracle to product info
|
378
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
379
|
+
productInfo.numberOfOracles++;
|
380
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
381
|
+
|
382
|
+
// authorize
|
383
|
+
instanceAdmin.initializeComponentAuthorization(
|
384
|
+
IInstanceLinkedComponent(oracleAddress));
|
345
385
|
}
|
346
386
|
|
347
387
|
//-------- pool ---------------------------------------------------------//
|
348
388
|
|
349
|
-
function
|
350
|
-
|
389
|
+
function _registerPool(address poolAddress)
|
390
|
+
internal
|
351
391
|
virtual
|
392
|
+
returns (NftId poolNftId)
|
352
393
|
{
|
353
|
-
address contractAddress = msg.sender;
|
354
|
-
|
355
394
|
// register/create component setup
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
395
|
+
InstanceReader instanceReader;
|
396
|
+
InstanceAdmin instanceAdmin;
|
397
|
+
InstanceStore instanceStore;
|
398
|
+
NftId productNftId;
|
399
|
+
|
400
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
401
|
+
poolAddress,
|
402
|
+
POOL());
|
403
|
+
|
404
|
+
// check product is still expecting a pool registration
|
405
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
406
|
+
if (productInfo.poolNftId.gtz()) {
|
407
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
408
|
+
}
|
364
409
|
|
365
410
|
// create info
|
411
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
366
412
|
instanceStore.createPool(
|
367
|
-
|
368
|
-
|
369
|
-
|
413
|
+
poolNftId,
|
414
|
+
pool.getInitialPoolInfo());
|
415
|
+
|
416
|
+
// update pool in product info
|
417
|
+
productInfo.poolNftId = poolNftId;
|
418
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
419
|
+
|
420
|
+
// authorize
|
421
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
370
422
|
}
|
371
423
|
|
372
424
|
|
@@ -378,7 +430,8 @@ contract ComponentService is
|
|
378
430
|
external
|
379
431
|
virtual
|
380
432
|
{
|
381
|
-
(NftId poolNftId
|
433
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
434
|
+
|
382
435
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
383
436
|
instance.getInstanceReader(), poolNftId);
|
384
437
|
bool feesChanged = false;
|
@@ -410,156 +463,72 @@ contract ComponentService is
|
|
410
463
|
}
|
411
464
|
}
|
412
465
|
|
413
|
-
|
414
|
-
InstanceStore instanceStore,
|
415
|
-
NftId poolNftId,
|
416
|
-
Amount amount,
|
417
|
-
Amount feeAmount
|
418
|
-
)
|
419
|
-
public
|
420
|
-
virtual
|
421
|
-
// TODO re-enable once role granting is stable and fixed
|
422
|
-
// restricted()
|
423
|
-
{
|
424
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
425
|
-
}
|
426
|
-
|
427
|
-
function decreasePoolBalance(
|
428
|
-
InstanceStore instanceStore,
|
429
|
-
NftId poolNftId,
|
430
|
-
Amount amount,
|
431
|
-
Amount feeAmount
|
432
|
-
)
|
433
|
-
public
|
434
|
-
virtual
|
435
|
-
// TODO re-enable once role granting is stable and fixed
|
436
|
-
// restricted()
|
437
|
-
{
|
438
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
439
|
-
}
|
440
|
-
|
441
|
-
//-------- bundle -------------------------------------------------------//
|
442
|
-
|
443
|
-
function increaseBundleBalance(
|
444
|
-
InstanceStore instanceStore,
|
445
|
-
NftId bundleNftId,
|
446
|
-
Amount amount,
|
447
|
-
Amount feeAmount
|
448
|
-
)
|
449
|
-
external
|
450
|
-
virtual
|
451
|
-
// TODO re-enable once role granting is stable and fixed
|
452
|
-
// restricted()
|
453
|
-
{
|
454
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
455
|
-
}
|
456
|
-
|
457
|
-
function decreaseBundleBalance(
|
458
|
-
InstanceStore instanceStore,
|
459
|
-
NftId bundleNftId,
|
460
|
-
Amount amount,
|
461
|
-
Amount feeAmount
|
462
|
-
)
|
463
|
-
external
|
464
|
-
virtual
|
465
|
-
// TODO re-enable once role granting is stable and fixed
|
466
|
-
// restricted()
|
467
|
-
{
|
468
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
469
|
-
}
|
470
|
-
|
471
|
-
|
472
|
-
//-------- internal functions ------------------------------------------//
|
473
|
-
|
474
|
-
function _changeTargetBalance(
|
475
|
-
bool increase,
|
476
|
-
InstanceStore instanceStore,
|
477
|
-
NftId targetNftId,
|
478
|
-
Amount amount,
|
479
|
-
Amount feeAmount
|
480
|
-
)
|
481
|
-
internal
|
482
|
-
virtual
|
483
|
-
{
|
484
|
-
Amount totalAmount = amount + feeAmount;
|
485
|
-
|
486
|
-
if(increase) {
|
487
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
488
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
489
|
-
} else {
|
490
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
491
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
492
|
-
}
|
493
|
-
}
|
494
|
-
|
495
|
-
/// @dev registers the component represented by the provided address
|
466
|
+
/// @dev Registers the component represented by the provided address.
|
496
467
|
function _register(
|
497
468
|
address componentAddress, // address of component to register
|
498
|
-
ObjectType requiredType
|
499
|
-
RoleId requiredRole // role required for comonent owner for registration
|
469
|
+
ObjectType requiredType // required type for component for registration
|
500
470
|
)
|
501
471
|
internal
|
502
472
|
virtual
|
503
473
|
returns (
|
504
474
|
InstanceReader instanceReader,
|
475
|
+
InstanceAdmin instanceAdmin,
|
505
476
|
InstanceStore instanceStore,
|
477
|
+
NftId parentNftId,
|
506
478
|
NftId componentNftId
|
507
479
|
)
|
508
480
|
{
|
481
|
+
NftId instanceNftId;
|
482
|
+
IInstance instance;
|
483
|
+
IInstanceLinkedComponent component;
|
484
|
+
address initialOwner;
|
485
|
+
|
509
486
|
(
|
510
|
-
|
511
|
-
|
512
|
-
|
487
|
+
instanceNftId,
|
488
|
+
instance,
|
489
|
+
parentNftId,
|
490
|
+
component,
|
491
|
+
initialOwner
|
513
492
|
) = _getAndVerifyRegisterableComponent(
|
493
|
+
getRegistry(),
|
514
494
|
componentAddress,
|
515
|
-
requiredType
|
516
|
-
requiredRole);
|
495
|
+
requiredType);
|
517
496
|
|
518
|
-
//
|
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);
|
530
|
-
|
531
|
-
// save amended component info with instance
|
497
|
+
// get instance supporting contracts (as function return values)
|
532
498
|
instanceReader = instance.getInstanceReader();
|
499
|
+
instanceAdmin = instance.getInstanceAdmin();
|
533
500
|
instanceStore = instance.getInstanceStore();
|
534
501
|
|
535
|
-
|
536
|
-
|
502
|
+
// register with registry
|
503
|
+
if (requiredType == PRODUCT()) {
|
504
|
+
componentNftId = _registryService.registerProduct(
|
505
|
+
component, initialOwner).nftId;
|
506
|
+
} else {
|
507
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
508
|
+
component, requiredType, initialOwner).nftId;
|
509
|
+
}
|
510
|
+
|
511
|
+
// deploy and wire token handler
|
512
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
513
|
+
IERC20Metadata token = componentInfo.token;
|
514
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
515
|
+
address(getRegistry()),
|
516
|
+
address(component), // initially, component is its own wallet
|
517
|
+
address(token),
|
518
|
+
address(instanceAdmin.authority()));
|
519
|
+
|
520
|
+
// set token handler allowance to max
|
521
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
537
522
|
|
523
|
+
// register component with instance
|
538
524
|
instanceStore.createComponent(
|
539
|
-
|
525
|
+
componentNftId,
|
540
526
|
componentInfo);
|
541
527
|
|
542
|
-
//
|
543
|
-
|
544
|
-
|
528
|
+
// link component contract to nft id
|
529
|
+
component.linkToRegisteredNftId();
|
545
530
|
|
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());
|
531
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
563
532
|
}
|
564
533
|
|
565
534
|
|
@@ -578,12 +547,6 @@ contract ComponentService is
|
|
578
547
|
}
|
579
548
|
|
580
549
|
|
581
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
582
|
-
selectors = new bytes4[](1);
|
583
|
-
selectors[0] = selector;
|
584
|
-
}
|
585
|
-
|
586
|
-
|
587
550
|
function _getLinkedProductInfo(
|
588
551
|
InstanceReader instanceReader,
|
589
552
|
NftId componentNftId
|
@@ -595,57 +558,139 @@ contract ComponentService is
|
|
595
558
|
IComponents.ProductInfo memory info
|
596
559
|
)
|
597
560
|
{
|
598
|
-
productNftId =
|
561
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
599
562
|
info = instanceReader.getProductInfo(productNftId);
|
600
563
|
}
|
601
564
|
|
602
565
|
|
603
|
-
/// @dev
|
604
|
-
///
|
605
|
-
/// - the
|
566
|
+
/// @dev Based on the provided component address required type the component
|
567
|
+
/// and related instance contract this function reverts iff:
|
568
|
+
/// - the sender is not registered
|
606
569
|
/// - the component contract does not support IInstanceLinkedComponent
|
607
570
|
/// - the component type does not match with the required type
|
608
|
-
/// - the
|
571
|
+
/// - the component has already been registered
|
609
572
|
function _getAndVerifyRegisterableComponent(
|
573
|
+
IRegistry registry,
|
610
574
|
address componentAddress,
|
611
|
-
ObjectType requiredType
|
612
|
-
RoleId requiredRole
|
575
|
+
ObjectType requiredType
|
613
576
|
)
|
614
577
|
internal
|
615
578
|
view
|
616
579
|
returns (
|
580
|
+
NftId instanceNftId,
|
617
581
|
IInstance instance,
|
582
|
+
NftId parentNftId,
|
618
583
|
IInstanceLinkedComponent component,
|
619
|
-
address
|
584
|
+
address initialOwner
|
620
585
|
)
|
621
586
|
{
|
622
|
-
// check
|
623
|
-
|
624
|
-
if(
|
625
|
-
revert
|
587
|
+
// check sender (instance or product) is registered
|
588
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
589
|
+
if (senderInfo.nftId.eqz()) {
|
590
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
626
591
|
}
|
627
592
|
|
593
|
+
// the sender is the parent of the component to be registered
|
594
|
+
// an instance caller wanting to register a product - or -
|
595
|
+
// a product caller wantint go register a distribution, oracle or pool
|
596
|
+
parentNftId = senderInfo.nftId;
|
597
|
+
|
628
598
|
// check component is of required type
|
599
|
+
component = IInstanceLinkedComponent(componentAddress);
|
629
600
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
630
601
|
if(info.objectType != requiredType) {
|
631
602
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
632
603
|
}
|
633
604
|
|
634
605
|
// check component has not already been registered
|
635
|
-
if (getRegistry().
|
606
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
636
607
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
637
608
|
}
|
638
609
|
|
639
|
-
// check
|
640
|
-
|
641
|
-
|
610
|
+
// check release matches
|
611
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
612
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
613
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
614
|
+
}
|
642
615
|
|
643
|
-
|
644
|
-
|
616
|
+
// check component belongs to same product cluster
|
617
|
+
// parent of product must be instance, parent of other componet types must be product
|
618
|
+
if (info.parentNftId != senderInfo.nftId) {
|
619
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
645
620
|
}
|
621
|
+
|
622
|
+
// verify parent is registered instance
|
623
|
+
if (requiredType == PRODUCT()) {
|
624
|
+
if (senderInfo.objectType != INSTANCE()) {
|
625
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
626
|
+
}
|
627
|
+
|
628
|
+
instanceNftId = senderInfo.nftId;
|
629
|
+
// verify parent is registered product
|
630
|
+
} else {
|
631
|
+
if (senderInfo.objectType != PRODUCT()) {
|
632
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
633
|
+
}
|
634
|
+
|
635
|
+
instanceNftId = senderInfo.parentNftId;
|
636
|
+
}
|
637
|
+
|
638
|
+
// get initial owner and instance
|
639
|
+
initialOwner = info.initialOwner;
|
640
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
641
|
+
}
|
642
|
+
|
643
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
644
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
645
|
+
}
|
646
|
+
|
647
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
648
|
+
internal
|
649
|
+
view
|
650
|
+
returns (
|
651
|
+
NftId componentNftId,
|
652
|
+
IInstance instance
|
653
|
+
)
|
654
|
+
{
|
655
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
656
|
+
}
|
657
|
+
|
658
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
659
|
+
internal
|
660
|
+
view
|
661
|
+
returns (
|
662
|
+
NftId componentNftId,
|
663
|
+
IInstance instance
|
664
|
+
)
|
665
|
+
{
|
666
|
+
IRegistry.ObjectInfo memory info;
|
667
|
+
address instanceAddress;
|
668
|
+
|
669
|
+
if (expectedType != COMPONENT()) {
|
670
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
671
|
+
getRegistry(),
|
672
|
+
msg.sender, // caller
|
673
|
+
expectedType,
|
674
|
+
isActive);
|
675
|
+
} else {
|
676
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
677
|
+
getRegistry(),
|
678
|
+
msg.sender,
|
679
|
+
isActive);
|
680
|
+
}
|
681
|
+
|
682
|
+
// get component nft id and instance
|
683
|
+
componentNftId = info.nftId;
|
684
|
+
instance = IInstance(instanceAddress);
|
646
685
|
}
|
647
686
|
|
648
687
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
649
688
|
return COMPONENT();
|
650
689
|
}
|
690
|
+
|
691
|
+
function _checkSupportsInterface(address component) internal view {
|
692
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
693
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
694
|
+
}
|
695
|
+
}
|
651
696
|
}
|