@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1e6957-384
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 +137 -333
- 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 +810 -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 +760 -278
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -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 +485 -26
- 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 +588 -220
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +227 -20
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +275 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +479 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -497
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +475 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -397
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +227 -131
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -201
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
- 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 +1474 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -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 +1429 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +55 -197
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/KeyValueStore.sol/KeyValueStore.json → instance/IBaseStore.sol/IBaseStore.json} +34 -227
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +587 -64
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +405 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +625 -182
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1154 -380
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +363 -92
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1645 -849
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +419 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +160 -102
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1300 -1842
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- 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 +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/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 +127 -365
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +473 -42
- 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 +103 -143
- 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 +103 -333
- 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 +195 -95
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -448
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +474 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +502 -364
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +212 -112
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -246
- 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 +129 -426
- 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 +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +246 -102
- 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 +177 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +266 -435
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +474 -40
- 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 +204 -120
- 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 +405 -102
- 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 +257 -236
- 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 +511 -303
- 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 +213 -105
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +177 -129
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +258 -427
- 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 +794 -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 +359 -48
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- 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 +565 -109
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +913 -404
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -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 +159 -87
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +495 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +511 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +86 -287
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +198 -128
- 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 -103
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -143
- 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 +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 +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -332
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +1513 -204
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -465
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +211 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +162 -94
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +180 -77
- 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 +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- 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 +94 -38
- 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 +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -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 +24 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +134 -79
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- 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 +401 -313
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +128 -4
- package/contracts/authorization/Authorization.sol +179 -207
- package/contracts/authorization/IAccess.sol +29 -11
- package/contracts/authorization/IAccessAdmin.sol +89 -83
- package/contracts/authorization/IAuthorization.sol +9 -37
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +235 -25
- package/contracts/distribution/BasicDistribution.sol +21 -19
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +46 -96
- package/contracts/distribution/DistributionService.sol +243 -132
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +47 -29
- 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/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +113 -43
- package/contracts/instance/IInstanceService.sol +61 -34
- package/contracts/instance/Instance.sol +201 -104
- package/contracts/instance/InstanceAdmin.sol +218 -177
- package/contracts/instance/InstanceAuthorizationV3.sol +154 -83
- package/contracts/instance/InstanceReader.sol +456 -255
- package/contracts/instance/InstanceService.sol +333 -262
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +153 -107
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +13 -10
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -20
- package/contracts/instance/module/IDistribution.sol +21 -8
- 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 +3 -7
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +11 -25
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +40 -43
- package/contracts/pool/BasicPoolAuthorization.sol +39 -13
- package/contracts/pool/BundleService.sol +200 -155
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +42 -46
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +145 -142
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +413 -233
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +144 -47
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +11 -15
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +394 -185
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +48 -11
- package/contracts/product/IPolicyService.sol +61 -39
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +434 -288
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +198 -108
- package/contracts/product/RiskService.sol +189 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +70 -32
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +367 -207
- package/contracts/registry/RegistryAdmin.sol +99 -291
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +199 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +279 -239
- package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +72 -142
- package/contracts/shared/ComponentService.sol +428 -388
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- 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 +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +74 -54
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -9
- package/contracts/shared/PolicyHolder.sol +18 -54
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +270 -71
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +526 -245
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingManager.sol +12 -9
- package/contracts/staking/StakingReader.sol +70 -82
- package/contracts/staking/StakingService.sol +62 -152
- package/contracts/staking/StakingServiceManager.sol +7 -5
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +19 -0
- package/contracts/type/Blocknumber.sol +24 -23
- package/contracts/type/ChainId.sol +101 -0
- 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 +73 -37
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +40 -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 +14 -7
- package/contracts/type/UFixed.sol +38 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +94 -46
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +8 -5
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.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/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakeManagerLib.sol +0 -231
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -3,57 +3,56 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 5 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 | 
            -
            import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            import {REGISTRY} from "../type/ObjectType.sol";
         | 
| 9 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 12 6 |  | 
| 13 7 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 14 8 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 15 | 
            -
            import { | 
| 16 | 
            -
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 9 | 
            +
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 17 10 |  | 
| 11 | 
            +
            import {ChainId, ChainIdLib} from "../type/ChainId.sol";
         | 
| 12 | 
            +
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 13 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 18 14 |  | 
| 19 | 
            -
            /// @ | 
| 15 | 
            +
            /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
         | 
| 16 | 
            +
            /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
         | 
| 20 17 | 
             
            contract TokenRegistry is
         | 
| 21 18 | 
             
                AccessManaged,
         | 
| 22 19 | 
             
                IRegistryLinked
         | 
| 23 20 | 
             
            {
         | 
| 24 | 
            -
                event LogTokenRegistryTokenRegistered( | 
| 25 | 
            -
                event LogTokenRegistryTokenGlobalStateSet( | 
| 26 | 
            -
                event LogTokenRegistryTokenStateSet( | 
| 21 | 
            +
                event LogTokenRegistryTokenRegistered(ChainId chainId, address token, uint256 decimals, string symbol);
         | 
| 22 | 
            +
                event LogTokenRegistryTokenGlobalStateSet(ChainId chainId, address token, bool active);
         | 
| 23 | 
            +
                event LogTokenRegistryTokenStateSet(ChainId chainId, address token, VersionPart release, bool active);
         | 
| 27 24 |  | 
| 28 25 | 
             
                error ErrorTokenRegistryChainIdZero();
         | 
| 29 26 | 
             
                error ErrorTokenRegistryTokenAddressZero();
         | 
| 30 27 |  | 
| 31 | 
            -
                error ErrorTokenRegistryNotRemoteToken( | 
| 32 | 
            -
                error ErrorTokenRegistryTokenAlreadyRegistered( | 
| 33 | 
            -
                error ErrorTokenRegistryTokenNotContract( | 
| 34 | 
            -
                error ErrorTokenRegistryTokenNotErc20( | 
| 28 | 
            +
                error ErrorTokenRegistryNotRemoteToken(ChainId chainId, address token);
         | 
| 29 | 
            +
                error ErrorTokenRegistryTokenAlreadyRegistered(ChainId chainId, address token);
         | 
| 30 | 
            +
                error ErrorTokenRegistryTokenNotContract(ChainId chainId, address token);
         | 
| 31 | 
            +
                error ErrorTokenRegistryTokenNotErc20(ChainId chainId, address token);
         | 
| 35 32 |  | 
| 36 | 
            -
                error ErrorTokenRegistryTokenNotRegistered( | 
| 37 | 
            -
                error ErrorTokenRegistryMajorVersionInvalid(VersionPart  | 
| 33 | 
            +
                error ErrorTokenRegistryTokenNotRegistered(ChainId chainId, address token);
         | 
| 34 | 
            +
                error ErrorTokenRegistryMajorVersionInvalid(VersionPart release);
         | 
| 38 35 |  | 
| 39 36 | 
             
                struct TokenInfo {
         | 
| 40 | 
            -
                     | 
| 41 | 
            -
                     | 
| 42 | 
            -
                     | 
| 43 | 
            -
                     | 
| 37 | 
            +
                    // slot 0
         | 
| 38 | 
            +
                    ChainId chainId; // 96
         | 
| 39 | 
            +
                    address token; // 20
         | 
| 40 | 
            +
                    uint8 decimals; // 8
         | 
| 44 41 | 
             
                    bool active;
         | 
| 42 | 
            +
                    // slot 1
         | 
| 43 | 
            +
                    string symbol;
         | 
| 45 44 | 
             
                }
         | 
| 46 45 |  | 
| 47 | 
            -
                mapping( | 
| 48 | 
            -
                mapping( | 
| 46 | 
            +
                mapping(ChainId chainId => mapping(address token => TokenInfo info)) internal _tokenInfo;
         | 
| 47 | 
            +
                mapping(ChainId chainId => mapping(address token => mapping(VersionPart release => bool isActive))) internal _active;
         | 
| 49 48 | 
             
                TokenInfo [] internal _token;
         | 
| 50 49 |  | 
| 51 50 | 
             
                IRegistry internal _registry;
         | 
| 52 | 
            -
                 | 
| 51 | 
            +
                ChainId internal _chainId = ChainIdLib.current();
         | 
| 53 52 | 
             
                IERC20Metadata internal _dipToken;
         | 
| 54 53 |  | 
| 55 54 | 
             
                /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
         | 
| 56 | 
            -
                modifier onlyRegisteredToken( | 
| 55 | 
            +
                modifier onlyRegisteredToken(ChainId chainId, address token) {
         | 
| 57 56 | 
             
                    if (!isRegistered(chainId, token)) {
         | 
| 58 57 | 
             
                        revert ErrorTokenRegistryTokenNotRegistered(chainId, token);
         | 
| 59 58 | 
             
                    }
         | 
| @@ -68,12 +67,13 @@ contract TokenRegistry is | |
| 68 67 | 
             
                    setAuthority(authority);
         | 
| 69 68 |  | 
| 70 69 | 
             
                    _registry = registry;
         | 
| 71 | 
            -
             | 
| 70 | 
            +
             | 
| 71 | 
            +
                    // TODO deal with chains without a dip token
         | 
| 72 | 
            +
                    _dipToken = _verifyOnchainToken(address(dipToken));
         | 
| 72 73 |  | 
| 73 74 | 
             
                    // register dip token
         | 
| 74 | 
            -
                    uint256 chainId = block.chainid;
         | 
| 75 75 | 
             
                    _registerToken(
         | 
| 76 | 
            -
                         | 
| 76 | 
            +
                        _chainId, 
         | 
| 77 77 | 
             
                        address(_dipToken), 
         | 
| 78 78 | 
             
                        _dipToken.decimals(), 
         | 
| 79 79 | 
             
                        _dipToken.symbol());
         | 
| @@ -87,15 +87,18 @@ contract TokenRegistry is | |
| 87 87 | 
             
                    external
         | 
| 88 88 | 
             
                    restricted()
         | 
| 89 89 | 
             
                {
         | 
| 90 | 
            +
                    // checks
         | 
| 90 91 | 
             
                    IERC20Metadata token = _verifyOnchainToken(tokenAddress);
         | 
| 91 | 
            -
             | 
| 92 | 
            +
             | 
| 93 | 
            +
                    // effects
         | 
| 94 | 
            +
                    _registerToken(_chainId, tokenAddress, token.decimals(), token.symbol());
         | 
| 92 95 | 
             
                }
         | 
| 93 96 |  | 
| 94 97 |  | 
| 95 98 | 
             
                /// @dev register the remote token with the provided attributes.
         | 
| 96 99 | 
             
                /// this function may not be used for tokens when chainId == block.chainid.
         | 
| 97 100 | 
             
                function registerRemoteToken(
         | 
| 98 | 
            -
                     | 
| 101 | 
            +
                    ChainId chainId,
         | 
| 99 102 | 
             
                    address token,
         | 
| 100 103 | 
             
                    uint8 decimals,
         | 
| 101 104 | 
             
                    string memory symbol
         | 
| @@ -103,7 +106,7 @@ contract TokenRegistry is | |
| 103 106 | 
             
                    external
         | 
| 104 107 | 
             
                    restricted()
         | 
| 105 108 | 
             
                {
         | 
| 106 | 
            -
                    if (chainId ==  | 
| 109 | 
            +
                    if (chainId == _chainId) {
         | 
| 107 110 | 
             
                        revert ErrorTokenRegistryNotRemoteToken(chainId, token);
         | 
| 108 111 | 
             
                    }
         | 
| 109 112 |  | 
| @@ -115,7 +118,7 @@ contract TokenRegistry is | |
| 115 118 | 
             
                /// when setting a token to active=false isActive will return false
         | 
| 116 119 | 
             
                /// regardless of release specific active value.
         | 
| 117 120 | 
             
                function setActive(
         | 
| 118 | 
            -
                     | 
| 121 | 
            +
                    ChainId chainId, 
         | 
| 119 122 | 
             
                    address token, 
         | 
| 120 123 | 
             
                    bool active
         | 
| 121 124 | 
             
                )
         | 
| @@ -128,32 +131,32 @@ contract TokenRegistry is | |
| 128 131 | 
             
                }
         | 
| 129 132 |  | 
| 130 133 |  | 
| 131 | 
            -
                /// @dev sets active state for specified token and major version.
         | 
| 134 | 
            +
                /// @dev sets active state for specified token and release (major version).
         | 
| 132 135 | 
             
                /// internally calls setActiveWithVersionCheck() with enforcing version check.
         | 
| 133 136 | 
             
                /// token state is informative, registry have no clue about used tokens
         | 
| 134 137 | 
             
                /// component owner is responsible for token selection and operations
         | 
| 135 138 | 
             
                /// service MUST deny registration of component with inactive token.
         | 
| 136 139 | 
             
                function setActiveForVersion(
         | 
| 137 | 
            -
                     | 
| 140 | 
            +
                    ChainId chainId, 
         | 
| 138 141 | 
             
                    address token, 
         | 
| 139 | 
            -
                    VersionPart  | 
| 142 | 
            +
                    VersionPart release, 
         | 
| 140 143 | 
             
                    bool active
         | 
| 141 144 | 
             
                )
         | 
| 142 145 | 
             
                    external
         | 
| 143 146 | 
             
                    restricted()
         | 
| 144 147 | 
             
                    onlyRegisteredToken(chainId, token)
         | 
| 145 148 | 
             
                {
         | 
| 146 | 
            -
                    _setActiveWithVersionCheck(chainId, token,  | 
| 149 | 
            +
                    _setActiveWithVersionCheck(chainId, token, release, active, true);
         | 
| 147 150 | 
             
                }
         | 
| 148 151 |  | 
| 149 152 |  | 
| 150 153 | 
             
                /// @dev as setActiveForVersion() with the option to skip the version check.
         | 
| 151 154 | 
             
                /// enforcing the version check checks if the provided major version with the release manager. 
         | 
| 152 | 
            -
                /// the function reverts if the provided  | 
| 155 | 
            +
                /// the function reverts if the provided release is unknown to the release manager.
         | 
| 153 156 | 
             
                function setActiveWithVersionCheck(
         | 
| 154 | 
            -
                     | 
| 157 | 
            +
                    ChainId chainId, 
         | 
| 155 158 | 
             
                    address token, 
         | 
| 156 | 
            -
                    VersionPart  | 
| 159 | 
            +
                    VersionPart release, 
         | 
| 157 160 | 
             
                    bool active,
         | 
| 158 161 | 
             
                    bool enforceVersionCheck
         | 
| 159 162 | 
             
                )
         | 
| @@ -161,14 +164,14 @@ contract TokenRegistry is | |
| 161 164 | 
             
                    restricted()
         | 
| 162 165 | 
             
                    onlyRegisteredToken(chainId, token)
         | 
| 163 166 | 
             
                {
         | 
| 164 | 
            -
                    _setActiveWithVersionCheck(chainId, token,  | 
| 167 | 
            +
                    _setActiveWithVersionCheck(chainId, token, release, active, enforceVersionCheck);
         | 
| 165 168 | 
             
                }
         | 
| 166 169 |  | 
| 167 170 |  | 
| 168 171 | 
             
                function _setActiveWithVersionCheck(
         | 
| 169 | 
            -
                     | 
| 172 | 
            +
                    ChainId chainId, 
         | 
| 170 173 | 
             
                    address token, 
         | 
| 171 | 
            -
                    VersionPart  | 
| 174 | 
            +
                    VersionPart release, 
         | 
| 172 175 | 
             
                    bool active,
         | 
| 173 176 | 
             
                    bool enforceVersionCheck
         | 
| 174 177 | 
             
                )
         | 
| @@ -176,15 +179,15 @@ contract TokenRegistry is | |
| 176 179 | 
             
                {
         | 
| 177 180 | 
             
                    // verify valid major version
         | 
| 178 181 | 
             
                    if(enforceVersionCheck) {
         | 
| 179 | 
            -
                        uint256 version =  | 
| 180 | 
            -
                        if (!getRegistry().isActiveRelease( | 
| 181 | 
            -
                            revert ErrorTokenRegistryMajorVersionInvalid( | 
| 182 | 
            +
                        uint256 version = release.toInt();
         | 
| 183 | 
            +
                        if (!getRegistry().isActiveRelease(release)) {
         | 
| 184 | 
            +
                            revert ErrorTokenRegistryMajorVersionInvalid(release);
         | 
| 182 185 | 
             
                        }
         | 
| 183 186 | 
             
                    }
         | 
| 184 187 |  | 
| 185 | 
            -
                    _active[chainId][token][ | 
| 188 | 
            +
                    _active[chainId][token][release] = active;
         | 
| 186 189 |  | 
| 187 | 
            -
                    emit LogTokenRegistryTokenStateSet(chainId, token,  | 
| 190 | 
            +
                    emit LogTokenRegistryTokenStateSet(chainId, token, release, active);
         | 
| 188 191 | 
             
                }
         | 
| 189 192 |  | 
| 190 193 | 
             
                /// @dev returns the dip token for this chain
         | 
| @@ -203,22 +206,22 @@ contract TokenRegistry is | |
| 203 206 | 
             
                }
         | 
| 204 207 |  | 
| 205 208 | 
             
                /// @dev returns the token info for the specified token coordinates.
         | 
| 206 | 
            -
                function getTokenInfo( | 
| 209 | 
            +
                function getTokenInfo(ChainId chainId, address token) external view returns (TokenInfo memory tokenInfo) {
         | 
| 207 210 | 
             
                    return _tokenInfo[chainId][token];
         | 
| 208 211 | 
             
                }
         | 
| 209 212 |  | 
| 210 213 | 
             
                /// @dev returns true iff the specified token has been registered for this TokenRegistry contract.
         | 
| 211 | 
            -
                function isRegistered( | 
| 212 | 
            -
                    return _tokenInfo[chainId][token].chainId | 
| 214 | 
            +
                function isRegistered(ChainId chainId, address token) public view returns (bool) {
         | 
| 215 | 
            +
                    return _tokenInfo[chainId][token].chainId.gtz();
         | 
| 213 216 | 
             
                }
         | 
| 214 217 |  | 
| 215 | 
            -
                /// @dev returns true iff both the token is active for the specfied  | 
| 216 | 
            -
                function isActive( | 
| 218 | 
            +
                /// @dev returns true iff both the token is active for the specfied release and the global token state is active
         | 
| 219 | 
            +
                function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool) {
         | 
| 217 220 | 
             
                    if(!_tokenInfo[chainId][token].active) {
         | 
| 218 221 | 
             
                        return false;
         | 
| 219 222 | 
             
                    }
         | 
| 220 223 |  | 
| 221 | 
            -
                    return _active[chainId][token][ | 
| 224 | 
            +
                    return _active[chainId][token][release];
         | 
| 222 225 | 
             
                }
         | 
| 223 226 |  | 
| 224 227 | 
             
                function getDipTokenAddress() external view returns (address) {
         | 
| @@ -244,16 +247,15 @@ contract TokenRegistry is | |
| 244 247 | 
             
                    returns (IERC20Metadata token)
         | 
| 245 248 | 
             
                {
         | 
| 246 249 | 
             
                    token = IERC20Metadata(tokenAddress);
         | 
| 247 | 
            -
                    uint256 chainId = block.chainid;
         | 
| 248 250 |  | 
| 249 251 | 
             
                    // MUST be contract
         | 
| 250 252 | 
             
                    if(tokenAddress.code.length == 0) {
         | 
| 251 | 
            -
                        revert ErrorTokenRegistryTokenNotContract( | 
| 253 | 
            +
                        revert ErrorTokenRegistryTokenNotContract(ChainIdLib.current(), tokenAddress);
         | 
| 252 254 | 
             
                    }
         | 
| 253 255 |  | 
| 254 256 | 
             
                    // MUST implement required erc20 view functions
         | 
| 255 257 | 
             
                    if(!_implementsErc20Functions(token)) {
         | 
| 256 | 
            -
                        revert ErrorTokenRegistryTokenNotErc20( | 
| 258 | 
            +
                        revert ErrorTokenRegistryTokenNotErc20(ChainIdLib.current(), tokenAddress);
         | 
| 257 259 | 
             
                    }
         | 
| 258 260 | 
             
                }
         | 
| 259 261 |  | 
| @@ -286,13 +288,13 @@ contract TokenRegistry is | |
| 286 288 | 
             
                /// - token not yet registered
         | 
| 287 289 | 
             
                /// - chainId not zero
         | 
| 288 290 | 
             
                /// - token address not zero
         | 
| 289 | 
            -
                function _registerToken( | 
| 291 | 
            +
                function _registerToken(ChainId chainId, address token, uint8 decimals, string memory symbol) internal {
         | 
| 290 292 |  | 
| 291 293 | 
             
                    if (isRegistered(chainId, token)) {
         | 
| 292 294 | 
             
                        revert ErrorTokenRegistryTokenAlreadyRegistered(chainId, token);
         | 
| 293 295 | 
             
                    }
         | 
| 294 296 |  | 
| 295 | 
            -
                    if(chainId | 
| 297 | 
            +
                    if(chainId.eqz()) {
         | 
| 296 298 | 
             
                        revert ErrorTokenRegistryChainIdZero();
         | 
| 297 299 | 
             
                    }
         | 
| 298 300 |  | 
| @@ -1,22 +1,21 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 5 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 6 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 7 | 
            -
            import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
         | 
| 8 6 |  | 
| 9 | 
            -
            import {Amount} from "../type/Amount.sol";
         | 
| 7 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 10 8 | 
             
            import {IComponent} from "./IComponent.sol";
         | 
| 11 9 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import { | 
| 10 | 
            +
            import {IComponentService} from "./IComponentService.sol";
         | 
| 11 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 12 | 
            +
            import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
         | 
| 14 13 | 
             
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 15 14 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 16 | 
            -
            import { | 
| 15 | 
            +
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 16 | 
            +
             | 
| 17 17 |  | 
| 18 18 | 
             
            abstract contract Component is
         | 
| 19 | 
            -
                AccessManagedUpgradeable,
         | 
| 20 19 | 
             
                Registerable,
         | 
| 21 20 | 
             
                IComponent
         | 
| 22 21 | 
             
            {
         | 
| @@ -25,10 +24,8 @@ abstract contract Component is | |
| 25 24 |  | 
| 26 25 | 
             
                struct ComponentStorage {
         | 
| 27 26 | 
             
                    string _name; // unique (per instance) component name
         | 
| 28 | 
            -
                    IERC20Metadata _token; // token for this component
         | 
| 29 | 
            -
                    address _wallet;
         | 
| 30 27 | 
             
                    bool _isInterceptor;
         | 
| 31 | 
            -
                     | 
| 28 | 
            +
                    IComponentService _componentService;
         | 
| 32 29 | 
             
                }
         | 
| 33 30 |  | 
| 34 31 |  | 
| @@ -39,146 +36,66 @@ abstract contract Component is | |
| 39 36 | 
             
                    _;
         | 
| 40 37 | 
             
                }
         | 
| 41 38 |  | 
| 42 | 
            -
                modifier onlyNftOwner(NftId nftId) {
         | 
| 43 | 
            -
                    if(msg.sender != getRegistry().ownerOf(nftId)) {
         | 
| 44 | 
            -
                        revert ErrorNftOwnableNotOwner(msg.sender);
         | 
| 45 | 
            -
                    }
         | 
| 46 | 
            -
                    _;
         | 
| 47 | 
            -
                }
         | 
| 48 39 |  | 
| 49 40 | 
             
                function _getComponentStorage() private pure returns (ComponentStorage storage $) {
         | 
| 41 | 
            +
                    // solhint-disable-next-line no-inline-assembly
         | 
| 50 42 | 
             
                    assembly {
         | 
| 51 43 | 
             
                        $.slot := COMPONENT_LOCATION_V1
         | 
| 52 44 | 
             
                    }
         | 
| 53 45 | 
             
                }
         | 
| 54 46 |  | 
| 55 | 
            -
             | 
| 47 | 
            +
             | 
| 48 | 
            +
                function __Component_init(
         | 
| 56 49 | 
             
                    address authority,
         | 
| 57 50 | 
             
                    address registry,
         | 
| 58 51 | 
             
                    NftId parentNftId,
         | 
| 59 52 | 
             
                    string memory name,
         | 
| 60 | 
            -
                    address token,
         | 
| 61 53 | 
             
                    ObjectType componentType,
         | 
| 62 54 | 
             
                    bool isInterceptor,
         | 
| 63 55 | 
             
                    address initialOwner,
         | 
| 64 | 
            -
                    bytes memory registryData | 
| 65 | 
            -
                    bytes memory componentData // other component specific data
         | 
| 56 | 
            +
                    bytes memory registryData // writeonly data that will saved in the object info record of the registry
         | 
| 66 57 | 
             
                )
         | 
| 67 | 
            -
                     | 
| 58 | 
            +
                    internal
         | 
| 68 59 | 
             
                    virtual
         | 
| 69 60 | 
             
                    onlyInitializing()
         | 
| 70 61 | 
             
                {
         | 
| 71 | 
            -
                    initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
         | 
| 72 | 
            -
                    __AccessManaged_init(authority);
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                    if (token == address(0)) {
         | 
| 75 | 
            -
                        revert ErrorComponentTokenAddressZero();
         | 
| 76 | 
            -
                    }
         | 
| 77 | 
            -
             | 
| 78 62 | 
             
                    if (bytes(name).length == 0) {
         | 
| 79 63 | 
             
                        revert ErrorComponentNameLengthZero();
         | 
| 80 64 | 
             
                    }
         | 
| 81 65 |  | 
| 66 | 
            +
                    __Registerable_init(
         | 
| 67 | 
            +
                        authority,
         | 
| 68 | 
            +
                        registry, 
         | 
| 69 | 
            +
                        parentNftId, 
         | 
| 70 | 
            +
                        componentType, 
         | 
| 71 | 
            +
                        isInterceptor, 
         | 
| 72 | 
            +
                        initialOwner, 
         | 
| 73 | 
            +
                        registryData);
         | 
| 74 | 
            +
             | 
| 82 75 | 
             
                    // set component state
         | 
| 83 76 | 
             
                    ComponentStorage storage $ = _getComponentStorage();
         | 
| 84 77 | 
             
                    $._name = name;
         | 
| 85 | 
            -
                    $._token = IERC20Metadata(token);
         | 
| 86 | 
            -
                    $._wallet = address(this);
         | 
| 87 78 | 
             
                    $._isInterceptor = isInterceptor;
         | 
| 88 | 
            -
                    $. | 
| 89 | 
            -
             | 
| 90 | 
            -
                    registerInterface(type(IAccessManaged).interfaceId);
         | 
| 91 | 
            -
                    registerInterface(type(IComponent).interfaceId);
         | 
| 92 | 
            -
                }
         | 
| 79 | 
            +
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 93 80 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
                    external
         | 
| 97 | 
            -
                    virtual
         | 
| 98 | 
            -
                    onlyOwner
         | 
| 99 | 
            -
                {
         | 
| 100 | 
            -
                    approveTokenHandler(address(getToken()), spendingLimitAmount);
         | 
| 101 | 
            -
                }
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                function approveTokenHandler(address token, Amount spendingLimitAmount)
         | 
| 104 | 
            -
                    public
         | 
| 105 | 
            -
                    virtual
         | 
| 106 | 
            -
                    onlyOwner
         | 
| 107 | 
            -
                {
         | 
| 108 | 
            -
                    if(getWallet() != address(this)) {
         | 
| 109 | 
            -
                        revert ErrorComponentWalletNotComponent();
         | 
| 110 | 
            -
                    }
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                    IERC20Metadata(token).approve(
         | 
| 113 | 
            -
                        address(getTokenHandler()),
         | 
| 114 | 
            -
                        spendingLimitAmount.toInt());
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                    emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
         | 
| 117 | 
            -
                }
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                function setWallet(address newWallet)
         | 
| 120 | 
            -
                    external
         | 
| 121 | 
            -
                    virtual
         | 
| 122 | 
            -
                    override
         | 
| 123 | 
            -
                    onlyOwner
         | 
| 124 | 
            -
                {
         | 
| 125 | 
            -
                    // checks
         | 
| 126 | 
            -
                    address currentWallet = getWallet();
         | 
| 127 | 
            -
                    IERC20Metadata token = getToken();
         | 
| 128 | 
            -
                    uint256 currentBalance = token.balanceOf(currentWallet);
         | 
| 129 | 
            -
             | 
| 130 | 
            -
                    if (currentBalance > 0) {
         | 
| 131 | 
            -
                        if (currentWallet == address(this)) {
         | 
| 132 | 
            -
                            // move tokens from component smart contract to external wallet
         | 
| 133 | 
            -
                        } else {
         | 
| 134 | 
            -
                            // move tokens from external wallet to component smart contract or another external wallet
         | 
| 135 | 
            -
                            uint256 allowance = token.allowance(currentWallet, address(this));
         | 
| 136 | 
            -
                            if (allowance < currentBalance) {
         | 
| 137 | 
            -
                                revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
         | 
| 138 | 
            -
                            }
         | 
| 139 | 
            -
                        }
         | 
| 140 | 
            -
                    }
         | 
| 141 | 
            -
             | 
| 142 | 
            -
                    // effects
         | 
| 143 | 
            -
                    _setWallet(newWallet);
         | 
| 144 | 
            -
             | 
| 145 | 
            -
                    // interactions
         | 
| 146 | 
            -
                    if (currentBalance > 0) {
         | 
| 147 | 
            -
                        // transfer tokens from current wallet to new wallet
         | 
| 148 | 
            -
                        if (currentWallet == address(this)) {
         | 
| 149 | 
            -
                            // transferFrom requires self allowance too
         | 
| 150 | 
            -
                            token.approve(address(this), currentBalance);
         | 
| 151 | 
            -
                        }
         | 
| 152 | 
            -
                        
         | 
| 153 | 
            -
                        SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
         | 
| 154 | 
            -
                        emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
         | 
| 155 | 
            -
                    }
         | 
| 81 | 
            +
                    _registerInterface(type(IAccessManaged).interfaceId);
         | 
| 82 | 
            +
                    _registerInterface(type(IComponent).interfaceId);
         | 
| 156 83 | 
             
                }
         | 
| 157 84 |  | 
| 158 85 |  | 
| 159 | 
            -
                /// @dev callback function for nft mints
         | 
| 160 | 
            -
                /// may only be called by chain nft contract.
         | 
| 161 | 
            -
                /// override internal function _nftMint to implement custom behaviour
         | 
| 162 | 
            -
                function nftMint(address to, uint256 tokenId) 
         | 
| 163 | 
            -
                    external 
         | 
| 164 | 
            -
                    onlyChainNft
         | 
| 165 | 
            -
                {
         | 
| 166 | 
            -
                    _nftMint(to, tokenId);
         | 
| 167 | 
            -
                }
         | 
| 168 | 
            -
             | 
| 169 86 | 
             
                /// @dev callback function for nft transfers
         | 
| 170 87 | 
             
                /// may only be called by chain nft contract.
         | 
| 171 88 | 
             
                /// override internal function _nftTransferFrom to implement custom behaviour
         | 
| 172 | 
            -
                function nftTransferFrom(address from, address to, uint256 tokenId)
         | 
| 89 | 
            +
                function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
         | 
| 173 90 | 
             
                    external
         | 
| 174 91 | 
             
                    onlyChainNft
         | 
| 175 92 | 
             
                {
         | 
| 176 | 
            -
                    _nftTransferFrom(from, to, tokenId);
         | 
| 93 | 
            +
                    _nftTransferFrom(from, to, tokenId, operator);
         | 
| 177 94 | 
             
                }
         | 
| 178 95 |  | 
| 179 96 |  | 
| 180 97 | 
             
                function getWallet() public view virtual returns (address walletAddress) {
         | 
| 181 | 
            -
                    return  | 
| 98 | 
            +
                    return getTokenHandler().getWallet();
         | 
| 182 99 | 
             
                }
         | 
| 183 100 |  | 
| 184 101 | 
             
                function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
         | 
| @@ -186,13 +103,17 @@ abstract contract Component is | |
| 186 103 | 
             
                }
         | 
| 187 104 |  | 
| 188 105 | 
             
                function getToken() public view virtual returns (IERC20Metadata token) {
         | 
| 189 | 
            -
                    return  | 
| 106 | 
            +
                    return getTokenHandler().TOKEN();
         | 
| 190 107 | 
             
                }
         | 
| 191 108 |  | 
| 192 109 | 
             
                function getName() public view override returns(string memory name) {
         | 
| 193 110 | 
             
                    return getComponentInfo().name;
         | 
| 194 111 | 
             
                }
         | 
| 195 112 |  | 
| 113 | 
            +
                function getVersion() public view virtual returns (Version version) {
         | 
| 114 | 
            +
                    return VersionLib.toVersion(1, 0, 0);
         | 
| 115 | 
            +
                }
         | 
| 116 | 
            +
             | 
| 196 117 | 
             
                function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
         | 
| 197 118 | 
             
                    if (isRegistered()) {
         | 
| 198 119 | 
             
                        return _getComponentInfo();
         | 
| @@ -218,42 +139,55 @@ abstract contract Component is | |
| 218 139 |  | 
| 219 140 |  | 
| 220 141 | 
             
                function isRegistered() public virtual view returns (bool) {
         | 
| 221 | 
            -
                    return getRegistry(). | 
| 142 | 
            +
                    return getRegistry().getNftIdForAddress(address(this)).gtz();
         | 
| 222 143 | 
             
                }
         | 
| 223 144 |  | 
| 224 145 |  | 
| 225 | 
            -
                /// @dev  | 
| 226 | 
            -
                ///  | 
| 227 | 
            -
                 | 
| 146 | 
            +
                /// @dev Approves token hanlder to spend up to the specified amount of tokens.
         | 
| 147 | 
            +
                /// Reverts if component wallet is not token handler itself.
         | 
| 148 | 
            +
                /// Only component owner (nft holder) is authorizes to call this function.
         | 
| 149 | 
            +
                function _approveTokenHandler(IERC20Metadata token, Amount amount)
         | 
| 228 150 | 
             
                    internal
         | 
| 229 151 | 
             
                    virtual
         | 
| 230 | 
            -
             | 
| 152 | 
            +
                    returns (Amount oldAllowanceAmount)
         | 
| 153 | 
            +
                {
         | 
| 154 | 
            +
                    oldAllowanceAmount = AmountLib.toAmount(
         | 
| 155 | 
            +
                        token.allowance(address(getTokenHandler()), address(this)));
         | 
| 156 | 
            +
             | 
| 157 | 
            +
                    _getComponentStorage()._componentService.approveTokenHandler(
         | 
| 158 | 
            +
                        token, 
         | 
| 159 | 
            +
                        amount);
         | 
| 160 | 
            +
                }
         | 
| 161 | 
            +
             | 
| 231 162 |  | 
| 232 163 | 
             
                /// @dev internal function for nft transfers.
         | 
| 233 164 | 
             
                /// handling logic that deals with nft transfers need to overwrite this function
         | 
| 234 | 
            -
                function _nftTransferFrom(address from, address to, uint256 tokenId)
         | 
| 165 | 
            +
                function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
         | 
| 235 166 | 
             
                    internal
         | 
| 236 167 | 
             
                    virtual
         | 
| 237 | 
            -
                 | 
| 168 | 
            +
                // solhint-disable-next-line no-empty-blocks
         | 
| 169 | 
            +
                { 
         | 
| 170 | 
            +
                    // empty default implementation
         | 
| 171 | 
            +
                }
         | 
| 238 172 |  | 
| 239 173 |  | 
| 240 | 
            -
                /// @dev  | 
| 174 | 
            +
                /// @dev Sets the components wallet to the specified address.
         | 
| 175 | 
            +
                /// Depending on the source of the component information this function needs to be overwritten. 
         | 
| 241 176 | 
             
                /// eg for instance linked components that externally store this information with the instance store contract
         | 
| 242 | 
            -
                function _setWallet( | 
| 243 | 
            -
                     | 
| 244 | 
            -
             | 
| 245 | 
            -
             | 
| 246 | 
            -
                     | 
| 247 | 
            -
             | 
| 248 | 
            -
                     | 
| 249 | 
            -
             | 
| 250 | 
            -
                    if (newWallet == currentWallet) {
         | 
| 251 | 
            -
                        revert ErrorComponentWalletAddressIsSameAsCurrent();
         | 
| 252 | 
            -
                    }
         | 
| 253 | 
            -
             | 
| 254 | 
            -
                    $._wallet = newWallet;
         | 
| 255 | 
            -
                    emit LogComponentWalletAddressChanged(currentWallet, newWallet);
         | 
| 177 | 
            +
                function _setWallet(
         | 
| 178 | 
            +
                    address newWallet
         | 
| 179 | 
            +
                )
         | 
| 180 | 
            +
                    internal
         | 
| 181 | 
            +
                    virtual
         | 
| 182 | 
            +
                {
         | 
| 183 | 
            +
                    _getComponentStorage()._componentService.setWallet(newWallet);
         | 
| 184 | 
            +
                }
         | 
| 256 185 |  | 
| 186 | 
            +
                function _setLocked(bool locked)
         | 
| 187 | 
            +
                    internal
         | 
| 188 | 
            +
                    virtual
         | 
| 189 | 
            +
                {
         | 
| 190 | 
            +
                    _getComponentStorage()._componentService.setLocked(locked);
         | 
| 257 191 | 
             
                }
         | 
| 258 192 |  | 
| 259 193 |  | 
| @@ -264,17 +198,13 @@ abstract contract Component is | |
| 264 198 |  | 
| 265 199 | 
             
                    return IComponents.ComponentInfo({
         | 
| 266 200 | 
             
                        name: $._name,
         | 
| 267 | 
            -
                         | 
| 268 | 
            -
                        token: $._token,
         | 
| 269 | 
            -
                        tokenHandler: TokenHandler(address(0)),
         | 
| 270 | 
            -
                        wallet: $._wallet, // initial wallet address
         | 
| 271 | 
            -
                        data: $._data // user specific component data
         | 
| 201 | 
            +
                        tokenHandler: TokenHandler(address(0))
         | 
| 272 202 | 
             
                    });
         | 
| 273 203 | 
             
                }
         | 
| 274 204 |  | 
| 275 | 
            -
                 | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 205 | 
            +
                /// @dev returns the service address for the specified domain
         | 
| 206 | 
            +
                /// gets address via lookup from registry using the major version form the linked instance
         | 
| 207 | 
            +
                function _getServiceAddress(ObjectType domain) internal view returns (address) {
         | 
| 208 | 
            +
                    return getRegistry().getServiceAddress(domain, getRelease());
         | 
| 278 209 | 
             
                }
         | 
| 279 | 
            -
             | 
| 280 210 | 
             
            }
         |