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