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