@etherisc/gif-next 0.0.2-750c7cb-311 → 0.0.2-754ba48-078
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +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 +495 -254
- 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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -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 +391 -199
- 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 +177 -373
- 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 +115 -295
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +378 -355
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +133 -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 +248 -122
- 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 +2032 -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 +1523 -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 +2432 -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 +218 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +140 -95
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +236 -126
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +733 -323
- 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 +1040 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +168 -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 +707 -438
- 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 +127 -323
- 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 +103 -283
- 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 +121 -301
- 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 +158 -418
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -136
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -142
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +123 -162
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +305 -288
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +121 -312
- 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 +420 -546
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -114
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +194 -178
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +100 -90
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +238 -357
- 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 +403 -246
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +137 -115
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +248 -83
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -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} +88 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +316 -318
- 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 +120 -106
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -313
- 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 +236 -355
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -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 +639 -367
- 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 +1954 -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 +423 -245
- 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 +89 -240
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +473 -653
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +131 -139
- 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 +597 -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 +102 -282
- 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 +544 -18
- 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 +196 -122
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +148 -16
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +286 -360
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- 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 +125 -102
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +31 -63
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +201 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +185 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +65 -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 +125 -7
- 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 +26 -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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/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 +338 -225
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +350 -203
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +69 -35
- 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 +152 -103
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +31 -25
- 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 +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +85 -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 +63 -44
- package/contracts/instance/IInstanceService.sol +22 -30
- package/contracts/instance/Instance.sol +113 -71
- package/contracts/instance/InstanceAdmin.sol +287 -103
- package/contracts/instance/InstanceAuthorizationV3.sol +92 -61
- package/contracts/instance/InstanceReader.sol +281 -39
- package/contracts/instance/InstanceService.sol +208 -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 +10 -1
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +13 -8
- package/contracts/instance/module/IDistribution.sol +5 -2
- package/contracts/instance/module/IPolicy.sol +25 -24
- 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 +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +93 -148
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +16 -36
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +86 -70
- package/contracts/pool/Pool.sol +139 -122
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +499 -301
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +87 -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 +364 -156
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +9 -2
- package/contracts/product/IClaimService.sol +43 -8
- package/contracts/product/IPolicyService.sol +44 -34
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
- package/contracts/product/PolicyService.sol +408 -300
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +71 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +154 -96
- package/contracts/product/RiskService.sol +154 -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 +162 -269
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +272 -240
- package/contracts/registry/ServiceAuthorizationV3.sol +183 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -128
- package/contracts/shared/ComponentService.sol +425 -386
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +281 -0
- package/contracts/shared/IComponent.sol +8 -18
- package/contracts/shared/IComponentService.sol +40 -38
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
- 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 +309 -29
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +19 -11
- package/contracts/staking/IStakingService.sol +16 -4
- package/contracts/staking/Staking.sol +102 -72
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +18 -21
- package/contracts/staking/StakingService.sol +82 -25
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +2 -1
- 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 +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +0 -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 +5 -4
- 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/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- 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,115 +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
|
-
|
133
|
-
|
196
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
197
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
198
|
+
componentNftId,
|
199
|
+
componentOwner,
|
200
|
+
address(tokenHandler.TOKEN()),
|
201
|
+
withdrawnAmount);
|
202
|
+
|
203
|
+
// interactions
|
204
|
+
// transfer amount to component owner
|
205
|
+
tokenHandler.pushFeeToken(
|
206
|
+
componentOwner,
|
207
|
+
withdrawnAmount);
|
134
208
|
}
|
135
209
|
|
136
210
|
|
137
211
|
//-------- product ------------------------------------------------------//
|
138
212
|
|
139
|
-
function registerProduct()
|
213
|
+
function registerProduct(address productAddress)
|
140
214
|
external
|
141
215
|
virtual
|
216
|
+
nonReentrant()
|
217
|
+
onlyComponent(productAddress)
|
218
|
+
returns (NftId productNftId)
|
142
219
|
{
|
143
|
-
address contractAddress = msg.sender;
|
144
|
-
|
145
220
|
// register/create component setup
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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());
|
162
245
|
}
|
163
246
|
|
164
247
|
|
@@ -168,68 +251,62 @@ contract ComponentService is
|
|
168
251
|
)
|
169
252
|
external
|
170
253
|
virtual
|
254
|
+
nonReentrant()
|
171
255
|
{
|
172
|
-
(NftId productNftId
|
173
|
-
IComponents.
|
256
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
257
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
174
258
|
bool feesChanged = false;
|
175
259
|
|
176
260
|
// update product fee if required
|
177
|
-
if(!FeeLib.eq(
|
178
|
-
_logUpdateFee(productNftId, "ProductFee",
|
179
|
-
|
261
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
262
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
263
|
+
feeInfo.productFee = productFee;
|
180
264
|
feesChanged = true;
|
181
265
|
}
|
182
266
|
|
183
267
|
// update processing fee if required
|
184
|
-
if(!FeeLib.eq(
|
185
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
186
|
-
|
268
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
269
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
270
|
+
feeInfo.processingFee = processingFee;
|
187
271
|
feesChanged = true;
|
188
272
|
}
|
189
273
|
|
190
274
|
if(feesChanged) {
|
191
|
-
instance.getInstanceStore().
|
275
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
192
276
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
193
277
|
}
|
194
278
|
}
|
195
279
|
|
196
|
-
function increaseProductFees(
|
197
|
-
InstanceStore instanceStore,
|
198
|
-
NftId productNftId,
|
199
|
-
Amount feeAmount
|
200
|
-
)
|
201
|
-
external
|
202
|
-
virtual
|
203
|
-
// TODO re-enable once role granting is stable and fixed
|
204
|
-
// restricted()
|
205
|
-
{
|
206
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
207
|
-
}
|
208
|
-
|
209
|
-
|
210
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
211
|
-
external
|
212
|
-
virtual
|
213
|
-
// TODO re-enable once role granting is stable and fixed
|
214
|
-
// restricted()
|
215
|
-
{
|
216
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
217
|
-
}
|
218
|
-
|
219
280
|
//-------- distribution -------------------------------------------------//
|
220
281
|
|
221
282
|
/// @dev registers the sending component as a distribution component
|
222
|
-
function
|
223
|
-
|
283
|
+
function _registerDistribution(address distributioAddress)
|
284
|
+
internal
|
224
285
|
virtual
|
286
|
+
nonReentrant()
|
287
|
+
returns (NftId distributionNftId)
|
225
288
|
{
|
226
|
-
address contractAddress = msg.sender;
|
227
|
-
|
228
289
|
// register/create component info
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
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());
|
233
310
|
}
|
234
311
|
|
235
312
|
|
@@ -240,132 +317,95 @@ contract ComponentService is
|
|
240
317
|
external
|
241
318
|
virtual
|
242
319
|
{
|
243
|
-
(NftId distributionNftId
|
244
|
-
(NftId productNftId, IComponents.
|
320
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
321
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
245
322
|
instance.getInstanceReader(), distributionNftId);
|
246
323
|
bool feesChanged = false;
|
247
324
|
|
248
325
|
// update distributino fee if required
|
249
|
-
if(!FeeLib.eq(
|
250
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
251
|
-
|
326
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
327
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
328
|
+
feeInfo.distributionFee = distributionFee;
|
252
329
|
feesChanged = true;
|
253
330
|
}
|
254
331
|
|
255
332
|
// update min distribution owner fee if required
|
256
|
-
if(!FeeLib.eq(
|
257
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
258
|
-
|
333
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
334
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
335
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
259
336
|
feesChanged = true;
|
260
337
|
}
|
261
338
|
|
262
339
|
if(feesChanged) {
|
263
|
-
instance.getInstanceStore().
|
340
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
264
341
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
265
342
|
}
|
266
343
|
}
|
267
344
|
|
268
|
-
function increaseDistributionBalance(
|
269
|
-
InstanceStore instanceStore,
|
270
|
-
NftId distributionNftId,
|
271
|
-
Amount amount,
|
272
|
-
Amount feeAmount
|
273
|
-
)
|
274
|
-
external
|
275
|
-
virtual
|
276
|
-
// TODO re-enable once role granting is stable and fixed
|
277
|
-
// restricted()
|
278
|
-
{
|
279
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
280
|
-
}
|
281
|
-
|
282
|
-
|
283
|
-
function decreaseDistributionBalance(
|
284
|
-
InstanceStore instanceStore,
|
285
|
-
NftId distributionNftId,
|
286
|
-
Amount amount,
|
287
|
-
Amount feeAmount
|
288
|
-
)
|
289
|
-
external
|
290
|
-
virtual
|
291
|
-
// TODO re-enable once role granting is stable and fixed
|
292
|
-
// restricted()
|
293
|
-
{
|
294
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
295
|
-
}
|
296
|
-
|
297
|
-
//-------- distributor -------------------------------------------------------//
|
298
|
-
|
299
|
-
function increaseDistributorBalance(
|
300
|
-
InstanceStore instanceStore,
|
301
|
-
NftId distributorNftId,
|
302
|
-
Amount amount,
|
303
|
-
Amount feeAmount
|
304
|
-
)
|
305
|
-
external
|
306
|
-
virtual
|
307
|
-
// TODO re-enable once role granting is stable and fixed
|
308
|
-
// restricted()
|
309
|
-
{
|
310
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
311
|
-
}
|
312
|
-
|
313
|
-
function decreaseDistributorBalance(
|
314
|
-
InstanceStore instanceStore,
|
315
|
-
NftId distributorNftId,
|
316
|
-
Amount amount,
|
317
|
-
Amount feeAmount
|
318
|
-
)
|
319
|
-
external
|
320
|
-
virtual
|
321
|
-
// TODO re-enable once role granting is stable and fixed
|
322
|
-
// restricted()
|
323
|
-
{
|
324
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
325
|
-
}
|
326
|
-
|
327
345
|
//-------- oracle -------------------------------------------------------//
|
328
346
|
|
329
|
-
function
|
330
|
-
|
347
|
+
function _registerOracle(address oracleAddress)
|
348
|
+
internal
|
331
349
|
virtual
|
350
|
+
returns (NftId oracleNftId)
|
332
351
|
{
|
333
|
-
address contractAddress = msg.sender;
|
334
|
-
|
335
352
|
// register/create component setup
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
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());
|
344
375
|
}
|
345
376
|
|
346
377
|
//-------- pool ---------------------------------------------------------//
|
347
378
|
|
348
|
-
function
|
349
|
-
|
379
|
+
function _registerPool(address poolAddress)
|
380
|
+
internal
|
350
381
|
virtual
|
382
|
+
returns (NftId poolNftId)
|
351
383
|
{
|
352
|
-
address contractAddress = msg.sender;
|
353
|
-
|
354
384
|
// register/create component setup
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
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
|
+
}
|
363
399
|
|
364
400
|
// create info
|
401
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
365
402
|
instanceStore.createPool(
|
366
|
-
|
367
|
-
|
368
|
-
|
403
|
+
poolNftId,
|
404
|
+
pool.getInitialPoolInfo());
|
405
|
+
|
406
|
+
// update pool in product info
|
407
|
+
productInfo.poolNftId = poolNftId;
|
408
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
369
409
|
}
|
370
410
|
|
371
411
|
|
@@ -377,188 +417,108 @@ contract ComponentService is
|
|
377
417
|
external
|
378
418
|
virtual
|
379
419
|
{
|
380
|
-
(NftId poolNftId
|
381
|
-
|
420
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
421
|
+
|
422
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
382
423
|
instance.getInstanceReader(), poolNftId);
|
383
424
|
bool feesChanged = false;
|
384
425
|
|
385
426
|
// update pool fee if required
|
386
|
-
if(!FeeLib.eq(
|
387
|
-
_logUpdateFee(productNftId, "PoolFee",
|
388
|
-
|
427
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
428
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
429
|
+
feeInfo.poolFee = poolFee;
|
389
430
|
feesChanged = true;
|
390
431
|
}
|
391
432
|
|
392
433
|
// update staking fee if required
|
393
|
-
if(!FeeLib.eq(
|
394
|
-
_logUpdateFee(productNftId, "StakingFee",
|
395
|
-
|
434
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
435
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
436
|
+
feeInfo.stakingFee = stakingFee;
|
396
437
|
feesChanged = true;
|
397
438
|
}
|
398
439
|
|
399
440
|
// update performance fee if required
|
400
|
-
if(!FeeLib.eq(
|
401
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
402
|
-
|
441
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
442
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
443
|
+
feeInfo.performanceFee = performanceFee;
|
403
444
|
feesChanged = true;
|
404
445
|
}
|
405
446
|
|
406
447
|
if(feesChanged) {
|
407
|
-
instance.getInstanceStore().
|
448
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
408
449
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
409
450
|
}
|
410
451
|
}
|
411
452
|
|
412
|
-
|
413
|
-
InstanceStore instanceStore,
|
414
|
-
NftId poolNftId,
|
415
|
-
Amount amount,
|
416
|
-
Amount feeAmount
|
417
|
-
)
|
418
|
-
public
|
419
|
-
virtual
|
420
|
-
// TODO re-enable once role granting is stable and fixed
|
421
|
-
// restricted()
|
422
|
-
{
|
423
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
424
|
-
}
|
425
|
-
|
426
|
-
function decreasePoolBalance(
|
427
|
-
InstanceStore instanceStore,
|
428
|
-
NftId poolNftId,
|
429
|
-
Amount amount,
|
430
|
-
Amount feeAmount
|
431
|
-
)
|
432
|
-
public
|
433
|
-
virtual
|
434
|
-
// TODO re-enable once role granting is stable and fixed
|
435
|
-
// restricted()
|
436
|
-
{
|
437
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
438
|
-
}
|
439
|
-
|
440
|
-
//-------- bundle -------------------------------------------------------//
|
441
|
-
|
442
|
-
function increaseBundleBalance(
|
443
|
-
InstanceStore instanceStore,
|
444
|
-
NftId bundleNftId,
|
445
|
-
Amount amount,
|
446
|
-
Amount feeAmount
|
447
|
-
)
|
448
|
-
external
|
449
|
-
virtual
|
450
|
-
// TODO re-enable once role granting is stable and fixed
|
451
|
-
// restricted()
|
452
|
-
{
|
453
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
454
|
-
}
|
455
|
-
|
456
|
-
function decreaseBundleBalance(
|
457
|
-
InstanceStore instanceStore,
|
458
|
-
NftId bundleNftId,
|
459
|
-
Amount amount,
|
460
|
-
Amount feeAmount
|
461
|
-
)
|
462
|
-
external
|
463
|
-
virtual
|
464
|
-
// TODO re-enable once role granting is stable and fixed
|
465
|
-
// restricted()
|
466
|
-
{
|
467
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
468
|
-
}
|
469
|
-
|
470
|
-
|
471
|
-
//-------- internal functions ------------------------------------------//
|
472
|
-
|
473
|
-
function _changeTargetBalance(
|
474
|
-
bool increase,
|
475
|
-
InstanceStore instanceStore,
|
476
|
-
NftId targetNftId,
|
477
|
-
Amount amount,
|
478
|
-
Amount feeAmount
|
479
|
-
)
|
480
|
-
internal
|
481
|
-
virtual
|
482
|
-
{
|
483
|
-
Amount totalAmount = amount + feeAmount;
|
484
|
-
|
485
|
-
if(increase) {
|
486
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
487
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
488
|
-
} else {
|
489
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
490
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
491
|
-
}
|
492
|
-
}
|
493
|
-
|
494
|
-
/// @dev registers the component represented by the provided address
|
453
|
+
/// @dev Registers the component represented by the provided address.
|
495
454
|
function _register(
|
496
455
|
address componentAddress, // address of component to register
|
497
|
-
ObjectType requiredType
|
498
|
-
RoleId requiredRole // role required for comonent owner for registration
|
456
|
+
ObjectType requiredType // required type for component for registration
|
499
457
|
)
|
500
458
|
internal
|
501
459
|
virtual
|
502
460
|
returns (
|
503
461
|
InstanceReader instanceReader,
|
462
|
+
InstanceAdmin instanceAdmin,
|
504
463
|
InstanceStore instanceStore,
|
464
|
+
NftId parentNftId,
|
505
465
|
NftId componentNftId
|
506
466
|
)
|
507
467
|
{
|
468
|
+
NftId instanceNftId;
|
469
|
+
IInstance instance;
|
470
|
+
IInstanceLinkedComponent component;
|
471
|
+
address initialOwner;
|
472
|
+
|
508
473
|
(
|
509
|
-
|
510
|
-
|
511
|
-
|
474
|
+
instanceNftId,
|
475
|
+
instance,
|
476
|
+
parentNftId,
|
477
|
+
component,
|
478
|
+
initialOwner
|
512
479
|
) = _getAndVerifyRegisterableComponent(
|
480
|
+
getRegistry(),
|
513
481
|
componentAddress,
|
514
|
-
requiredType
|
515
|
-
requiredRole);
|
516
|
-
|
517
|
-
// register component with registry
|
518
|
-
componentNftId = _registryService.registerComponent(
|
519
|
-
component,
|
520
|
-
requiredType,
|
521
|
-
owner).nftId;
|
522
|
-
|
523
|
-
component.linkToRegisteredNftId();
|
524
|
-
|
525
|
-
// setup initial component authorization
|
526
|
-
_instanceService.initializeAuthorization(
|
527
|
-
instance.getNftId(),
|
528
|
-
component);
|
482
|
+
requiredType);
|
529
483
|
|
530
|
-
//
|
484
|
+
// get instance supporting contracts (as function return values)
|
531
485
|
instanceReader = instance.getInstanceReader();
|
486
|
+
instanceAdmin = instance.getInstanceAdmin();
|
532
487
|
instanceStore = instance.getInstanceStore();
|
533
488
|
|
534
|
-
|
535
|
-
|
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
|
+
}
|
536
497
|
|
537
|
-
|
538
|
-
|
539
|
-
|
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
|
+
}
|
540
514
|
|
541
|
-
//
|
542
|
-
|
515
|
+
// link component contract to nft id
|
516
|
+
component.linkToRegisteredNftId();
|
543
517
|
|
518
|
+
// authorize
|
519
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, requiredType);
|
544
520
|
|
545
|
-
|
546
|
-
function _linkToProduct(
|
547
|
-
InstanceReader instanceReader,
|
548
|
-
InstanceStore instanceStore,
|
549
|
-
NftId componentNftId,
|
550
|
-
NftId productNftId
|
551
|
-
)
|
552
|
-
internal
|
553
|
-
{
|
554
|
-
// only link components that are registered
|
555
|
-
if(componentNftId.eqz()) {
|
556
|
-
return;
|
557
|
-
}
|
558
|
-
|
559
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
560
|
-
componentInfo.productNftId = productNftId;
|
561
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
521
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, componentAddress, token, initialOwner);
|
562
522
|
}
|
563
523
|
|
564
524
|
|
@@ -577,13 +537,7 @@ contract ComponentService is
|
|
577
537
|
}
|
578
538
|
|
579
539
|
|
580
|
-
function
|
581
|
-
selectors = new bytes4[](1);
|
582
|
-
selectors[0] = selector;
|
583
|
-
}
|
584
|
-
|
585
|
-
|
586
|
-
function _getLinkedProductInfo(
|
540
|
+
function _getLinkedFeeInfo(
|
587
541
|
InstanceReader instanceReader,
|
588
542
|
NftId componentNftId
|
589
543
|
)
|
@@ -591,60 +545,145 @@ contract ComponentService is
|
|
591
545
|
view
|
592
546
|
returns(
|
593
547
|
NftId productNftId,
|
594
|
-
IComponents.
|
548
|
+
IComponents.FeeInfo memory info
|
595
549
|
)
|
596
550
|
{
|
597
|
-
productNftId =
|
598
|
-
info = instanceReader.
|
551
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
552
|
+
info = instanceReader.getFeeInfo(productNftId);
|
599
553
|
}
|
600
554
|
|
601
555
|
|
602
|
-
/// @dev
|
603
|
-
///
|
604
|
-
/// - 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
|
605
559
|
/// - the component contract does not support IInstanceLinkedComponent
|
606
560
|
/// - the component type does not match with the required type
|
607
|
-
/// - the
|
561
|
+
/// - the component has already been registered
|
608
562
|
function _getAndVerifyRegisterableComponent(
|
563
|
+
IRegistry registry,
|
609
564
|
address componentAddress,
|
610
|
-
ObjectType requiredType
|
611
|
-
RoleId requiredRole
|
565
|
+
ObjectType requiredType
|
612
566
|
)
|
613
567
|
internal
|
614
568
|
view
|
615
569
|
returns (
|
570
|
+
NftId instanceNftId,
|
616
571
|
IInstance instance,
|
572
|
+
NftId parentNftId,
|
617
573
|
IInstanceLinkedComponent component,
|
618
|
-
address
|
574
|
+
address initialOwner
|
619
575
|
)
|
620
576
|
{
|
621
|
-
// check
|
622
|
-
|
623
|
-
if(
|
624
|
-
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);
|
625
581
|
}
|
626
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
|
+
|
627
588
|
// check component is of required type
|
589
|
+
component = IInstanceLinkedComponent(componentAddress);
|
628
590
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
629
591
|
if(info.objectType != requiredType) {
|
630
592
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
631
593
|
}
|
632
594
|
|
633
595
|
// check component has not already been registered
|
634
|
-
if (getRegistry().
|
596
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
635
597
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
636
598
|
}
|
637
599
|
|
638
|
-
//
|
639
|
-
|
640
|
-
|
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
|
+
}
|
641
608
|
|
642
|
-
|
643
|
-
|
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);
|
644
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
|
+
}
|
650
|
+
|
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);
|
673
|
+
}
|
674
|
+
|
675
|
+
// get component nft id and instance
|
676
|
+
componentNftId = info.nftId;
|
677
|
+
instance = IInstance(instanceAddress);
|
645
678
|
}
|
646
679
|
|
647
680
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
648
681
|
return COMPONENT();
|
649
682
|
}
|
683
|
+
|
684
|
+
function _checkSupportsInterface(address component) internal view {
|
685
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
686
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
687
|
+
}
|
688
|
+
}
|
650
689
|
}
|