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