@etherisc/gif-next 0.0.2-a3c2eef-755 → 0.0.2-a4051e9-983
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 +34 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +152 -281
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +133 -501
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +300 -239
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +108 -104
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -210
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +181 -47
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +59 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +43 -110
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +74 -202
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1211 -266
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +511 -154
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -316
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -111
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -260
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- 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 +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +109 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +119 -358
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +125 -319
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +165 -632
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +154 -137
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +168 -434
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +311 -55
- 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 +537 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +381 -396
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- 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 +101 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +517 -260
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -118
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- 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 +111 -318
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- 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 +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -164
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- 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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -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 +55 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- 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/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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/String.sol/StrLib.json +2 -2
- 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 +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +190 -353
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +26 -57
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +140 -116
- package/contracts/distribution/DistributionService.sol +137 -79
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +26 -40
- package/contracts/distribution/IDistributionService.sol +23 -3
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +418 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +17 -38
- package/contracts/instance/IInstanceService.sol +9 -34
- package/contracts/instance/Instance.sol +84 -115
- package/contracts/instance/InstanceAdmin.sol +216 -270
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +137 -34
- package/contracts/instance/InstanceService.sol +98 -126
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +23 -5
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -11
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +64 -53
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +154 -0
- package/contracts/pool/BasicPoolAuthorization.sol +57 -0
- package/contracts/pool/BundleService.sol +254 -70
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -68
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +184 -148
- package/contracts/pool/PoolService.sol +256 -164
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +68 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +308 -146
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +26 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -196
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +50 -53
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +211 -133
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +69 -22
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +354 -219
- package/contracts/registry/RegistryAdmin.sol +244 -129
- package/contracts/registry/RegistryService.sol +39 -64
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +23 -29
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +47 -63
- package/contracts/shared/ComponentService.sol +304 -186
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +24 -15
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +38 -20
- package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +3 -2
- 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 +106 -37
- package/contracts/shared/KeyValueStore.sol +7 -3
- package/contracts/shared/Lifecycle.sol +30 -72
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +23 -22
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +29 -45
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +11 -29
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +15 -23
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +53 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +55 -94
- 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 +38 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- 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/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- 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/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- 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/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -527
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,50 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
7
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
6
9
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
7
|
-
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IAccess} from "../instance/module/IAccess.sol";
|
12
|
-
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
|
-
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
16
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
11
|
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {
|
12
|
+
import {IInstance} from "../instance/IInstance.sol";
|
13
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
14
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
15
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
19
17
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
20
19
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
20
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
-
import {
|
23
|
-
import {
|
24
|
-
import {
|
21
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
22
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
23
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
|
+
import {NftId} from "../type/NftId.sol";
|
25
|
+
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
26
|
+
import {RoleId} from "../type/RoleId.sol";
|
27
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
25
28
|
|
26
29
|
contract ComponentService is
|
27
30
|
ComponentVerifyingService,
|
28
31
|
IComponentService
|
29
32
|
{
|
30
33
|
|
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
34
|
bool private constant INCREASE = true;
|
41
35
|
bool private constant DECREASE = false;
|
42
36
|
|
43
37
|
IRegistryService private _registryService;
|
44
38
|
IInstanceService private _instanceService;
|
45
39
|
|
40
|
+
modifier onlyComponent(address component) {
|
41
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
42
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
43
|
+
}
|
44
|
+
_;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
46
48
|
function _initialize(
|
47
49
|
address owner,
|
48
50
|
bytes memory data
|
@@ -51,21 +53,44 @@ contract ComponentService is
|
|
51
53
|
virtual override
|
52
54
|
initializer()
|
53
55
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
(
|
57
|
+
address registryAddress,
|
58
|
+
address authority
|
59
|
+
) = abi.decode(data, (address, address));
|
58
60
|
|
59
|
-
|
61
|
+
_initializeService(registryAddress, authority, owner);
|
60
62
|
|
61
63
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
64
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
65
|
|
64
|
-
|
66
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
67
|
}
|
66
68
|
|
67
69
|
//-------- component ----------------------------------------------------//
|
68
70
|
|
71
|
+
function registerComponent(address component)
|
72
|
+
external
|
73
|
+
virtual
|
74
|
+
onlyComponent(component)
|
75
|
+
returns (NftId componentNftId)
|
76
|
+
{
|
77
|
+
// type specific registration
|
78
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
79
|
+
if (componentType == POOL()) {
|
80
|
+
return _registerPool(component);
|
81
|
+
}
|
82
|
+
if (componentType == DISTRIBUTION()) {
|
83
|
+
return _registerDistribution(component);
|
84
|
+
}
|
85
|
+
if (componentType == ORACLE()) {
|
86
|
+
return _registerOracle(component);
|
87
|
+
}
|
88
|
+
|
89
|
+
// fail
|
90
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
91
|
+
}
|
92
|
+
|
93
|
+
|
69
94
|
function setWallet(address newWallet) external virtual {
|
70
95
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
71
96
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
@@ -94,40 +119,63 @@ contract ComponentService is
|
|
94
119
|
// TODO implement
|
95
120
|
function unlock() external virtual {}
|
96
121
|
|
122
|
+
function withdrawFees(Amount amount)
|
123
|
+
external
|
124
|
+
virtual
|
125
|
+
returns (Amount withdrawnAmount)
|
126
|
+
{
|
127
|
+
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
128
|
+
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
129
|
+
address componentWallet = info.wallet;
|
130
|
+
|
131
|
+
// determine withdrawn amount
|
132
|
+
withdrawnAmount = amount;
|
133
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
134
|
+
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
135
|
+
} else if (withdrawnAmount.eqz()) {
|
136
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
137
|
+
} else {
|
138
|
+
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
139
|
+
if (withdrawnAmount.gt(withdrawLimit)) {
|
140
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
// decrease fee counters by withdrawnAmount
|
145
|
+
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
146
|
+
|
147
|
+
// transfer amount to component owner
|
148
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
149
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
150
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
151
|
+
}
|
152
|
+
|
97
153
|
|
98
154
|
//-------- product ------------------------------------------------------//
|
99
155
|
|
100
|
-
function registerProduct()
|
156
|
+
function registerProduct(address productAddress)
|
101
157
|
external
|
102
158
|
virtual
|
159
|
+
onlyComponent(productAddress)
|
160
|
+
returns (NftId productNftId)
|
103
161
|
{
|
104
|
-
|
105
|
-
|
106
|
-
|
162
|
+
// register/create component setup
|
163
|
+
InstanceAdmin instanceAdmin;
|
164
|
+
InstanceStore instanceStore;
|
165
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
166
|
+
productAddress,
|
167
|
+
PRODUCT());
|
107
168
|
|
108
|
-
//
|
109
|
-
|
110
|
-
selectors[0] = _createSelectors(IProductComponent.setFees.selector);
|
169
|
+
// get product
|
170
|
+
IProductComponent product = IProductComponent(productAddress);
|
111
171
|
|
112
|
-
//
|
113
|
-
(
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
PRODUCT(),
|
120
|
-
PRODUCT_OWNER_ROLE(),
|
121
|
-
roles,
|
122
|
-
selectors);
|
123
|
-
|
124
|
-
// create product info
|
125
|
-
IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
|
126
|
-
instanceStore.createProduct(productNftId, productInfo);
|
127
|
-
|
128
|
-
// link distribution and pool to product
|
129
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.distributionNftId, productNftId);
|
130
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
|
172
|
+
// create info
|
173
|
+
instanceStore.createProduct(
|
174
|
+
productNftId,
|
175
|
+
product.getInitialProductInfo());
|
176
|
+
|
177
|
+
// authorize
|
178
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
131
179
|
}
|
132
180
|
|
133
181
|
|
@@ -188,29 +236,36 @@ contract ComponentService is
|
|
188
236
|
//-------- distribution -------------------------------------------------//
|
189
237
|
|
190
238
|
/// @dev registers the sending component as a distribution component
|
191
|
-
function
|
192
|
-
|
239
|
+
function _registerDistribution(address distributioAddress)
|
240
|
+
internal
|
193
241
|
virtual
|
242
|
+
returns (NftId distributionNftId)
|
194
243
|
{
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
244
|
+
// register/create component info
|
245
|
+
InstanceReader instanceReader;
|
246
|
+
InstanceAdmin instanceAdmin;
|
247
|
+
InstanceStore instanceStore;
|
248
|
+
NftId productNftId;
|
249
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
250
|
+
distributioAddress,
|
251
|
+
DISTRIBUTION());
|
252
|
+
|
253
|
+
// check product is still expecting a distribution registration
|
254
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
255
|
+
if (!productInfo.hasDistribution) {
|
256
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
257
|
+
}
|
258
|
+
if (productInfo.distributionNftId.gtz()) {
|
259
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
260
|
+
}
|
202
261
|
|
203
|
-
//
|
204
|
-
|
205
|
-
|
262
|
+
// set distribution in product info
|
263
|
+
productInfo.distributionNftId = distributionNftId;
|
264
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
206
265
|
|
207
|
-
//
|
208
|
-
|
209
|
-
|
210
|
-
DISTRIBUTION(),
|
211
|
-
DISTRIBUTION_OWNER_ROLE(),
|
212
|
-
roles,
|
213
|
-
selectors);
|
266
|
+
// authorize
|
267
|
+
instanceAdmin.initializeComponentAuthorization(
|
268
|
+
IInstanceLinkedComponent(distributioAddress));
|
214
269
|
}
|
215
270
|
|
216
271
|
|
@@ -275,63 +330,107 @@ contract ComponentService is
|
|
275
330
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
276
331
|
}
|
277
332
|
|
278
|
-
//--------
|
333
|
+
//-------- distributor -------------------------------------------------------//
|
279
334
|
|
280
|
-
function
|
335
|
+
function increaseDistributorBalance(
|
336
|
+
InstanceStore instanceStore,
|
337
|
+
NftId distributorNftId,
|
338
|
+
Amount amount,
|
339
|
+
Amount feeAmount
|
340
|
+
)
|
281
341
|
external
|
282
342
|
virtual
|
343
|
+
// TODO re-enable once role granting is stable and fixed
|
344
|
+
// restricted()
|
283
345
|
{
|
284
|
-
|
285
|
-
|
286
|
-
bytes4[][] memory selectors = new bytes4[][](0);
|
346
|
+
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
347
|
+
}
|
287
348
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
349
|
+
function decreaseDistributorBalance(
|
350
|
+
InstanceStore instanceStore,
|
351
|
+
NftId distributorNftId,
|
352
|
+
Amount amount,
|
353
|
+
Amount feeAmount
|
354
|
+
)
|
355
|
+
external
|
356
|
+
virtual
|
357
|
+
// TODO re-enable once role granting is stable and fixed
|
358
|
+
// restricted()
|
359
|
+
{
|
360
|
+
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
299
361
|
}
|
300
362
|
|
301
|
-
//--------
|
363
|
+
//-------- oracle -------------------------------------------------------//
|
302
364
|
|
303
|
-
function
|
304
|
-
|
365
|
+
function _registerOracle(address oracleAddress)
|
366
|
+
internal
|
305
367
|
virtual
|
368
|
+
returns (NftId oracleNftId)
|
306
369
|
{
|
307
|
-
|
308
|
-
|
309
|
-
|
370
|
+
// register/create component setup
|
371
|
+
InstanceReader instanceReader;
|
372
|
+
InstanceAdmin instanceAdmin;
|
373
|
+
InstanceStore instanceStore;
|
374
|
+
NftId productNftId;
|
375
|
+
|
376
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
377
|
+
oracleAddress,
|
378
|
+
ORACLE());
|
379
|
+
|
380
|
+
// check product is still expecting an oracle registration
|
381
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
382
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
383
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
384
|
+
}
|
385
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
386
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
387
|
+
}
|
310
388
|
|
311
|
-
//
|
312
|
-
|
313
|
-
|
389
|
+
// update/add oracle to product info
|
390
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
391
|
+
productInfo.numberOfOracles++;
|
392
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
314
393
|
|
315
|
-
//
|
316
|
-
|
317
|
-
|
394
|
+
// authorize
|
395
|
+
instanceAdmin.initializeComponentAuthorization(
|
396
|
+
IInstanceLinkedComponent(oracleAddress));
|
397
|
+
}
|
318
398
|
|
399
|
+
//-------- pool ---------------------------------------------------------//
|
400
|
+
|
401
|
+
function _registerPool(address poolAddress)
|
402
|
+
internal
|
403
|
+
virtual
|
404
|
+
returns (NftId poolNftId)
|
405
|
+
{
|
319
406
|
// register/create component setup
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
407
|
+
InstanceReader instanceReader;
|
408
|
+
InstanceAdmin instanceAdmin;
|
409
|
+
InstanceStore instanceStore;
|
410
|
+
NftId productNftId;
|
411
|
+
|
412
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
413
|
+
poolAddress,
|
414
|
+
POOL());
|
415
|
+
|
416
|
+
// check product is still expecting a pool registration
|
417
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
418
|
+
if (productInfo.poolNftId.gtz()) {
|
419
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
420
|
+
}
|
330
421
|
|
331
422
|
// create info
|
423
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
332
424
|
instanceStore.createPool(
|
333
|
-
|
334
|
-
|
425
|
+
poolNftId,
|
426
|
+
pool.getInitialPoolInfo());
|
427
|
+
|
428
|
+
// update pool in product info
|
429
|
+
productInfo.poolNftId = poolNftId;
|
430
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
431
|
+
|
432
|
+
// authorize
|
433
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
335
434
|
}
|
336
435
|
|
337
436
|
|
@@ -457,74 +556,67 @@ contract ComponentService is
|
|
457
556
|
}
|
458
557
|
}
|
459
558
|
|
460
|
-
/// @dev
|
559
|
+
/// @dev Registers the component represented by the provided address.
|
461
560
|
function _register(
|
462
561
|
address componentAddress, // address of component to register
|
463
|
-
ObjectType requiredType
|
464
|
-
RoleId requiredRole, // role required for comonent owner for registration
|
465
|
-
RoleId[] memory roles, // roles with write access to component
|
466
|
-
bytes4[][] memory selectors // authorized functions per role with write access
|
562
|
+
ObjectType requiredType // required type for component for registration
|
467
563
|
)
|
468
564
|
internal
|
469
565
|
virtual
|
470
566
|
returns (
|
471
567
|
InstanceReader instanceReader,
|
568
|
+
InstanceAdmin instanceAdmin,
|
472
569
|
InstanceStore instanceStore,
|
570
|
+
NftId parentNftId,
|
473
571
|
NftId componentNftId
|
474
572
|
)
|
475
573
|
{
|
574
|
+
NftId instanceNftId;
|
575
|
+
IInstance instance;
|
576
|
+
IInstanceLinkedComponent component;
|
577
|
+
address initialOwner;
|
578
|
+
|
476
579
|
(
|
477
|
-
|
478
|
-
|
479
|
-
|
580
|
+
instanceNftId,
|
581
|
+
instance,
|
582
|
+
parentNftId,
|
583
|
+
component,
|
584
|
+
initialOwner
|
480
585
|
) = _getAndVerifyRegisterableComponent(
|
586
|
+
getRegistry(),
|
481
587
|
componentAddress,
|
482
|
-
requiredType
|
483
|
-
requiredRole);
|
588
|
+
requiredType);
|
484
589
|
|
485
|
-
//
|
486
|
-
componentNftId = _registryService.registerComponent(
|
487
|
-
component,
|
488
|
-
requiredType,
|
489
|
-
owner).nftId;
|
490
|
-
|
491
|
-
component.linkToRegisteredNftId();
|
492
|
-
|
493
|
-
// save amended component info with instance
|
590
|
+
// get instance supporting contracts (as function return values)
|
494
591
|
instanceReader = instance.getInstanceReader();
|
592
|
+
instanceAdmin = instance.getInstanceAdmin();
|
495
593
|
instanceStore = instance.getInstanceStore();
|
496
594
|
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
component.getName(),
|
506
|
-
selectors,
|
507
|
-
roles);
|
508
|
-
}
|
595
|
+
// register with registry
|
596
|
+
if (requiredType == PRODUCT()) {
|
597
|
+
componentNftId = _registryService.registerProduct(
|
598
|
+
component, initialOwner).nftId;
|
599
|
+
} else {
|
600
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
601
|
+
component, requiredType, initialOwner).nftId;
|
602
|
+
}
|
509
603
|
|
604
|
+
// deploy and wire token handler
|
605
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
606
|
+
IERC20Metadata token = componentInfo.token;
|
607
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
608
|
+
address(token),
|
609
|
+
address(instanceAdmin.authority()));
|
510
610
|
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
// only link components that are registered
|
521
|
-
if(componentNftId.eqz()) {
|
522
|
-
return;
|
523
|
-
}
|
524
|
-
|
525
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
526
|
-
componentInfo.productNftId = productNftId;
|
527
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
611
|
+
// register component with instance
|
612
|
+
instanceStore.createComponent(
|
613
|
+
componentNftId,
|
614
|
+
componentInfo);
|
615
|
+
|
616
|
+
// link component contract to nft id
|
617
|
+
component.linkToRegisteredNftId();
|
618
|
+
|
619
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
528
620
|
}
|
529
621
|
|
530
622
|
|
@@ -543,12 +635,6 @@ contract ComponentService is
|
|
543
635
|
}
|
544
636
|
|
545
637
|
|
546
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
547
|
-
selectors = new bytes4[](1);
|
548
|
-
selectors[0] = selector;
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
638
|
function _getLinkedProductInfo(
|
553
639
|
InstanceReader instanceReader,
|
554
640
|
NftId componentNftId
|
@@ -560,57 +646,89 @@ contract ComponentService is
|
|
560
646
|
IComponents.ProductInfo memory info
|
561
647
|
)
|
562
648
|
{
|
563
|
-
productNftId =
|
649
|
+
productNftId = _getProductNftId(componentNftId);
|
564
650
|
info = instanceReader.getProductInfo(productNftId);
|
565
651
|
}
|
566
652
|
|
567
653
|
|
568
|
-
/// @dev
|
569
|
-
///
|
570
|
-
/// - the
|
654
|
+
/// @dev Based on the provided component address required type the component
|
655
|
+
/// and related instance contract this function reverts iff:
|
656
|
+
/// - the sender is not registered
|
571
657
|
/// - the component contract does not support IInstanceLinkedComponent
|
572
658
|
/// - the component type does not match with the required type
|
573
|
-
/// - the
|
659
|
+
/// - the component has already been registered
|
574
660
|
function _getAndVerifyRegisterableComponent(
|
661
|
+
IRegistry registry,
|
575
662
|
address componentAddress,
|
576
|
-
ObjectType requiredType
|
577
|
-
RoleId requiredRole
|
663
|
+
ObjectType requiredType
|
578
664
|
)
|
579
665
|
internal
|
580
666
|
view
|
581
667
|
returns (
|
668
|
+
NftId instanceNftId,
|
582
669
|
IInstance instance,
|
670
|
+
NftId parentNftId,
|
583
671
|
IInstanceLinkedComponent component,
|
584
|
-
address
|
672
|
+
address initialOwner
|
585
673
|
)
|
586
674
|
{
|
587
|
-
// check
|
588
|
-
|
589
|
-
if(
|
590
|
-
revert
|
675
|
+
// check sender (instance or product) is registered
|
676
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
677
|
+
if (senderInfo.nftId.eqz()) {
|
678
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
591
679
|
}
|
592
680
|
|
681
|
+
// the sender is the parent of the component to be registered
|
682
|
+
// an instance caller wanting to register a product - or -
|
683
|
+
// a product caller wantint go register a distribution, oracle or pool
|
684
|
+
parentNftId = senderInfo.nftId;
|
685
|
+
|
593
686
|
// check component is of required type
|
687
|
+
component = IInstanceLinkedComponent(componentAddress);
|
594
688
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
595
689
|
if(info.objectType != requiredType) {
|
596
690
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
597
691
|
}
|
598
692
|
|
599
693
|
// check component has not already been registered
|
600
|
-
if (getRegistry().
|
694
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
601
695
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
602
696
|
}
|
603
697
|
|
604
|
-
// check
|
605
|
-
|
606
|
-
|
698
|
+
// check release matches
|
699
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
700
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
701
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
702
|
+
}
|
703
|
+
|
704
|
+
// check component belongs to same product cluster
|
705
|
+
// parent of product must be instance, parent of other componet types must be product
|
706
|
+
if (info.parentNftId != senderInfo.nftId) {
|
707
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
708
|
+
}
|
709
|
+
|
710
|
+
// verify parent is registered instance
|
711
|
+
if (requiredType == PRODUCT()) {
|
712
|
+
if (senderInfo.objectType != INSTANCE()) {
|
713
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
714
|
+
}
|
607
715
|
|
608
|
-
|
609
|
-
|
610
|
-
|
716
|
+
instanceNftId = senderInfo.nftId;
|
717
|
+
// verify parent is registered product
|
718
|
+
} else {
|
719
|
+
if (senderInfo.objectType != PRODUCT()) {
|
720
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
721
|
+
}
|
722
|
+
|
723
|
+
instanceNftId = senderInfo.parentNftId;
|
611
724
|
}
|
725
|
+
|
726
|
+
// get initial owner and instance
|
727
|
+
initialOwner = info.initialOwner;
|
728
|
+
instance = _getInstance(registry, instanceNftId);
|
612
729
|
}
|
613
730
|
|
731
|
+
|
614
732
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
615
733
|
return COMPONENT();
|
616
734
|
}
|