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