@etherisc/gif-next 0.0.2-f62dcdf-553 → 0.0.2-f634e5c-828
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 +27 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -147
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +8 -52
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +37 -160
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +93 -200
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +79 -121
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -101
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -155
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -219
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -18
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -72
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -48
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +59 -69
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +22 -114
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +11 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -52
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -67
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -76
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -91
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +154 -160
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +58 -23
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -52
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -66
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +50 -34
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -52
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +256 -116
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +78 -42
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
- 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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +146 -14
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- 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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -52
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +13 -13
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
- 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 +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +43 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +21 -2
- package/contracts/authorization/ReleaseAccessManager.sol +1 -1
- package/contracts/distribution/BasicDistribution.sol +2 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +5 -6
- package/contracts/distribution/DistributionService.sol +18 -19
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +16 -3
- package/contracts/examples/fire/FireProduct.sol +24 -8
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +15 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
- package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +7 -2
- package/contracts/instance/IInstanceService.sol +7 -9
- package/contracts/instance/Instance.sol +16 -9
- package/contracts/instance/InstanceAdmin.sol +41 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +33 -9
- package/contracts/instance/InstanceReader.sol +88 -2
- package/contracts/instance/InstanceService.sol +39 -58
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/OracleService.sol +87 -69
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +12 -1
- package/contracts/pool/BundleService.sol +14 -84
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +156 -88
- package/contracts/product/ApplicationService.sol +12 -12
- package/contracts/product/BasicProduct.sol +7 -11
- package/contracts/product/ClaimService.sol +3 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/PolicyService.sol +237 -195
- package/contracts/product/Product.sol +12 -40
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/Registry.sol +9 -1
- package/contracts/registry/RegistryAdmin.sol +15 -12
- package/contracts/registry/ReleaseRegistry.sol +5 -20
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -31
- package/contracts/shared/Component.sol +43 -86
- package/contracts/shared/ComponentService.sol +160 -36
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +5 -12
- package/contracts/shared/IComponentService.sol +19 -5
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/InstanceLinkedComponent.sol +1 -17
- package/contracts/shared/Registerable.sol +0 -2
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +29 -21
- package/contracts/staking/StakingService.sol +41 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +2 -0
- package/contracts/type/RiskId.sol +18 -6
- package/contracts/type/UFixed.sol +9 -119
- package/package.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -3,10 +3,12 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
+
import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
6
7
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
8
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
9
|
import {ContractLib} from "../shared/ContractLib.sol";
|
9
10
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
11
|
+
import {IComponent} from "../shared/IComponent.sol";
|
10
12
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
13
|
import {IComponentService} from "./IComponentService.sol";
|
12
14
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -15,22 +17,28 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
|
15
17
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
18
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
17
19
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
20
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
20
21
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
23
|
import {IRegistry} from "../registry/IRegistry.sol";
|
22
24
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
25
|
+
|
26
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
27
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
28
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
23
29
|
import {KEEP_STATE} from "../type/StateId.sol";
|
24
30
|
import {NftId} from "../type/NftId.sol";
|
25
|
-
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
26
|
-
import {
|
31
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
32
|
+
import {Service} from "../shared/Service.sol";
|
33
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
34
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
35
|
+
import {VersionPart} from "../type/Version.sol";
|
36
|
+
|
28
37
|
|
29
38
|
contract ComponentService is
|
30
|
-
|
39
|
+
Service,
|
31
40
|
IComponentService
|
32
41
|
{
|
33
|
-
|
34
42
|
bool private constant INCREASE = true;
|
35
43
|
bool private constant DECREASE = false;
|
36
44
|
|
@@ -38,9 +46,26 @@ contract ComponentService is
|
|
38
46
|
IInstanceService private _instanceService;
|
39
47
|
|
40
48
|
modifier onlyComponent(address component) {
|
41
|
-
|
42
|
-
|
49
|
+
_checkSupportsInterface(component);
|
50
|
+
_;
|
51
|
+
}
|
52
|
+
|
53
|
+
modifier onlyInstance() {
|
54
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
55
|
+
if (instanceNftId.eqz()) {
|
56
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
43
57
|
}
|
58
|
+
|
59
|
+
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
60
|
+
if (objectType != INSTANCE()) {
|
61
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
62
|
+
}
|
63
|
+
|
64
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
65
|
+
if (instanceVersion != getVersion().toMajorPart()) {
|
66
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
67
|
+
}
|
68
|
+
|
44
69
|
_;
|
45
70
|
}
|
46
71
|
|
@@ -90,43 +115,84 @@ contract ComponentService is
|
|
90
115
|
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
91
116
|
}
|
92
117
|
|
118
|
+
function approveTokenHandler(
|
119
|
+
IERC20Metadata token,
|
120
|
+
Amount amount
|
121
|
+
)
|
122
|
+
external
|
123
|
+
virtual
|
124
|
+
{
|
125
|
+
// checks
|
126
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
127
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
128
|
+
componentNftId).tokenHandler;
|
93
129
|
|
94
|
-
|
95
|
-
(
|
96
|
-
|
97
|
-
address currentWallet = info.wallet;
|
130
|
+
// effects
|
131
|
+
tokenHandler.approve(token, amount);
|
132
|
+
}
|
98
133
|
|
99
|
-
if (newWallet == address(0)) {
|
100
|
-
revert ErrorComponentServiceNewWalletAddressZero();
|
101
|
-
}
|
102
134
|
|
103
|
-
|
104
|
-
|
105
|
-
|
135
|
+
function approveStakingTokenHandler(
|
136
|
+
IERC20Metadata token,
|
137
|
+
Amount amount
|
138
|
+
)
|
139
|
+
external
|
140
|
+
virtual
|
141
|
+
{
|
142
|
+
// checks
|
143
|
+
ContractLib.getAndVerifyStaking(
|
144
|
+
getRegistry(),
|
145
|
+
msg.sender); // only active
|
106
146
|
|
107
|
-
|
108
|
-
|
109
|
-
|
147
|
+
// effects
|
148
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
149
|
+
tokenHandler.approve(token, amount);
|
150
|
+
}
|
110
151
|
|
111
|
-
|
112
|
-
|
113
|
-
|
152
|
+
|
153
|
+
function setWallet(address newWallet)
|
154
|
+
external
|
155
|
+
virtual
|
156
|
+
{
|
157
|
+
// checks
|
158
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
159
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
160
|
+
componentNftId).tokenHandler;
|
161
|
+
|
162
|
+
// effects
|
163
|
+
tokenHandler.setWallet(newWallet);
|
114
164
|
}
|
115
165
|
|
116
|
-
|
117
|
-
function
|
166
|
+
/// @inheritdoc IComponentService
|
167
|
+
function setLockedFromInstance(address componentAddress, bool locked)
|
168
|
+
external
|
169
|
+
virtual
|
170
|
+
onlyInstance()
|
171
|
+
{
|
172
|
+
address instanceAddress = msg.sender;
|
173
|
+
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
174
|
+
IInstance instance = IInstance(instanceAddress);
|
175
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
176
|
+
}
|
118
177
|
|
119
|
-
|
120
|
-
function
|
178
|
+
/// @inheritdoc IComponentService
|
179
|
+
function setLockedFromComponent(address componentAddress, bool locked)
|
180
|
+
external
|
181
|
+
virtual
|
182
|
+
onlyComponent(msg.sender)
|
183
|
+
{
|
184
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
185
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
186
|
+
}
|
121
187
|
|
122
188
|
function withdrawFees(Amount amount)
|
123
189
|
external
|
124
190
|
virtual
|
125
191
|
returns (Amount withdrawnAmount)
|
126
192
|
{
|
127
|
-
(NftId componentNftId
|
193
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
128
194
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
129
|
-
address componentWallet = info.
|
195
|
+
address componentWallet = info.tokenHandler.getWallet();
|
130
196
|
|
131
197
|
// determine withdrawn amount
|
132
198
|
withdrawnAmount = amount;
|
@@ -156,6 +222,7 @@ contract ComponentService is
|
|
156
222
|
function registerProduct(address productAddress)
|
157
223
|
external
|
158
224
|
virtual
|
225
|
+
nonReentrant()
|
159
226
|
onlyComponent(productAddress)
|
160
227
|
returns (NftId productNftId)
|
161
228
|
{
|
@@ -185,8 +252,9 @@ contract ComponentService is
|
|
185
252
|
)
|
186
253
|
external
|
187
254
|
virtual
|
255
|
+
nonReentrant()
|
188
256
|
{
|
189
|
-
(NftId productNftId
|
257
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
190
258
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
191
259
|
bool feesChanged = false;
|
192
260
|
|
@@ -241,6 +309,7 @@ contract ComponentService is
|
|
241
309
|
function _registerDistribution(address distributioAddress)
|
242
310
|
internal
|
243
311
|
virtual
|
312
|
+
nonReentrant()
|
244
313
|
returns (NftId distributionNftId)
|
245
314
|
{
|
246
315
|
// register/create component info
|
@@ -278,7 +347,7 @@ contract ComponentService is
|
|
278
347
|
external
|
279
348
|
virtual
|
280
349
|
{
|
281
|
-
(NftId distributionNftId
|
350
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
282
351
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
283
352
|
instance.getInstanceReader(), distributionNftId);
|
284
353
|
bool feesChanged = false;
|
@@ -379,7 +448,7 @@ contract ComponentService is
|
|
379
448
|
InstanceStore instanceStore;
|
380
449
|
NftId productNftId;
|
381
450
|
|
382
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
451
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
383
452
|
oracleAddress,
|
384
453
|
ORACLE());
|
385
454
|
|
@@ -415,7 +484,7 @@ contract ComponentService is
|
|
415
484
|
InstanceStore instanceStore;
|
416
485
|
NftId productNftId;
|
417
486
|
|
418
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
487
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
419
488
|
poolAddress,
|
420
489
|
POOL());
|
421
490
|
|
@@ -448,7 +517,8 @@ contract ComponentService is
|
|
448
517
|
external
|
449
518
|
virtual
|
450
519
|
{
|
451
|
-
(NftId poolNftId
|
520
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
521
|
+
|
452
522
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
453
523
|
instance.getInstanceReader(), poolNftId);
|
454
524
|
bool feesChanged = false;
|
@@ -615,8 +685,13 @@ contract ComponentService is
|
|
615
685
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
616
686
|
IERC20Metadata token = componentInfo.token;
|
617
687
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
688
|
+
address(getRegistry()),
|
689
|
+
address(component), // initially, component is its own wallet
|
618
690
|
address(token),
|
619
691
|
address(instanceAdmin.authority()));
|
692
|
+
|
693
|
+
// set token handler allowance to max
|
694
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
620
695
|
|
621
696
|
// register component with instance
|
622
697
|
instanceStore.createComponent(
|
@@ -656,7 +731,7 @@ contract ComponentService is
|
|
656
731
|
IComponents.ProductInfo memory info
|
657
732
|
)
|
658
733
|
{
|
659
|
-
productNftId =
|
734
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
660
735
|
info = instanceReader.getProductInfo(productNftId);
|
661
736
|
}
|
662
737
|
|
@@ -735,11 +810,60 @@ contract ComponentService is
|
|
735
810
|
|
736
811
|
// get initial owner and instance
|
737
812
|
initialOwner = info.initialOwner;
|
738
|
-
instance =
|
813
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
814
|
+
}
|
815
|
+
|
816
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
817
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
818
|
+
}
|
819
|
+
|
820
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
821
|
+
internal
|
822
|
+
view
|
823
|
+
returns (
|
824
|
+
NftId componentNftId,
|
825
|
+
IInstance instance
|
826
|
+
)
|
827
|
+
{
|
828
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
739
829
|
}
|
740
830
|
|
831
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
832
|
+
internal
|
833
|
+
view
|
834
|
+
returns (
|
835
|
+
NftId componentNftId,
|
836
|
+
IInstance instance
|
837
|
+
)
|
838
|
+
{
|
839
|
+
IRegistry.ObjectInfo memory info;
|
840
|
+
address instanceAddress;
|
841
|
+
|
842
|
+
if (expectedType != COMPONENT()) {
|
843
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
844
|
+
getRegistry(),
|
845
|
+
msg.sender, // caller
|
846
|
+
expectedType,
|
847
|
+
isActive);
|
848
|
+
} else {
|
849
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
850
|
+
getRegistry(),
|
851
|
+
msg.sender,
|
852
|
+
isActive);
|
853
|
+
}
|
854
|
+
|
855
|
+
// get component nft id and instance
|
856
|
+
componentNftId = info.nftId;
|
857
|
+
instance = IInstance(instanceAddress);
|
858
|
+
}
|
741
859
|
|
742
860
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
743
861
|
return COMPONENT();
|
744
862
|
}
|
863
|
+
|
864
|
+
function _checkSupportsInterface(address component) internal view {
|
865
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
866
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
867
|
+
}
|
868
|
+
}
|
745
869
|
}
|
@@ -5,7 +5,7 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
5
5
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
6
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
-
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
8
|
+
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
9
9
|
import {Service} from "../shared/Service.sol";
|
10
10
|
|
11
11
|
|
@@ -27,12 +27,12 @@ abstract contract ComponentVerifyingService is
|
|
27
27
|
view
|
28
28
|
returns(
|
29
29
|
NftId componentNftId,
|
30
|
-
IRegistry.ObjectInfo memory
|
30
|
+
IRegistry.ObjectInfo memory objectInfo,
|
31
31
|
IInstance instance
|
32
32
|
)
|
33
33
|
{
|
34
34
|
componentNftId = getRegistry().getNftIdForAddress(msg.sender);
|
35
|
-
(
|
35
|
+
(objectInfo, instance) = _getAndVerifyComponentInfo(
|
36
36
|
componentNftId,
|
37
37
|
expectedType,
|
38
38
|
true); // only active
|
@@ -82,7 +82,15 @@ abstract contract ComponentVerifyingService is
|
|
82
82
|
}
|
83
83
|
}
|
84
84
|
|
85
|
-
|
85
|
+
if (info.objectType == STAKING()) {
|
86
|
+
return (info, instance);
|
87
|
+
}
|
88
|
+
|
89
|
+
if (info.objectType == PRODUCT()) {
|
90
|
+
instance = _getInstance(registry, info.parentNftId);
|
91
|
+
} else {
|
92
|
+
instance = _getInstanceForComponent(registry, info.parentNftId);
|
93
|
+
}
|
86
94
|
|
87
95
|
// ensure component is not locked
|
88
96
|
if (onlyActive) {
|
@@ -93,21 +101,15 @@ abstract contract ComponentVerifyingService is
|
|
93
101
|
}
|
94
102
|
|
95
103
|
|
96
|
-
function _getInstanceForComponent(IRegistry registry,
|
104
|
+
function _getInstanceForComponent(IRegistry registry, NftId productNftId)
|
97
105
|
internal
|
98
106
|
view
|
99
107
|
returns (IInstance instance)
|
100
108
|
{
|
101
|
-
|
102
|
-
if (componentInfo.objectType == PRODUCT()) {
|
103
|
-
instance = _getInstance(registry, componentInfo.parentNftId);
|
104
|
-
// parent of other types is product
|
105
|
-
} else {
|
106
|
-
instance = _getInstance(
|
109
|
+
return _getInstance(
|
107
110
|
registry,
|
108
111
|
registry.getObjectInfo(
|
109
|
-
|
110
|
-
}
|
112
|
+
productNftId).parentNftId);
|
111
113
|
}
|
112
114
|
|
113
115
|
|
@@ -2,29 +2,159 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
-
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
5
|
|
7
|
-
import {
|
6
|
+
// import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
9
|
+
import {NftId} from "../type/NftId.sol";
|
10
|
+
import {ObjectType, PRODUCT, DISTRIBUTION, ORACLE, POOL, STAKING} from "../type/ObjectType.sol";
|
11
|
+
|
12
|
+
interface ITargetHelper {
|
13
|
+
function isTargetLocked(address target) external view returns (bool);
|
14
|
+
}
|
15
|
+
|
16
|
+
interface IInstanceAdminHelper {
|
17
|
+
function getInstanceAdmin() external view returns (ITargetHelper);
|
18
|
+
}
|
8
19
|
|
9
20
|
library ContractLib {
|
10
21
|
|
22
|
+
error ErrorContractLibNotRegistered(address target);
|
23
|
+
error ErrorContractLibNotComponent(NftId componentNftId, ObjectType objectType);
|
24
|
+
error ErrorContractLibNotStaking(NftId componentNftId, ObjectType objectType);
|
25
|
+
error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
|
26
|
+
error ErrorContractLibComponentInactive(NftId componentNftId);
|
27
|
+
|
28
|
+
|
29
|
+
function getAndVerifyComponent(
|
30
|
+
IRegistry registry,
|
31
|
+
address target,
|
32
|
+
ObjectType expectedType,
|
33
|
+
bool onlyActive
|
34
|
+
)
|
35
|
+
external
|
36
|
+
view
|
37
|
+
returns (
|
38
|
+
IRegistry.ObjectInfo memory info,
|
39
|
+
address instance
|
40
|
+
)
|
41
|
+
{
|
42
|
+
// check target is component
|
43
|
+
info = _getObjectInfo(registry, target);
|
44
|
+
if(info.objectType != expectedType) {
|
45
|
+
revert ErrorContractLibComponentTypeMismatch(
|
46
|
+
info.nftId,
|
47
|
+
expectedType,
|
48
|
+
info.objectType);
|
49
|
+
}
|
50
|
+
|
51
|
+
// get instance and check component is active
|
52
|
+
instance = _getInstance(registry, info);
|
53
|
+
_checkComponentActive(instance, target, info.nftId, onlyActive);
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
function getInfoAndInstance(
|
58
|
+
IRegistry registry,
|
59
|
+
NftId componentNftId,
|
60
|
+
bool onlyActive
|
61
|
+
)
|
62
|
+
external
|
63
|
+
view
|
64
|
+
returns (
|
65
|
+
IRegistry.ObjectInfo memory info,
|
66
|
+
address instance
|
67
|
+
)
|
68
|
+
{
|
69
|
+
info = registry.getObjectInfo(componentNftId);
|
70
|
+
instance = _getInstance(registry, info);
|
71
|
+
_checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
function getAndVerifyStaking(
|
76
|
+
IRegistry registry,
|
77
|
+
address target
|
78
|
+
)
|
79
|
+
external
|
80
|
+
view
|
81
|
+
returns (
|
82
|
+
IRegistry.ObjectInfo memory info
|
83
|
+
)
|
84
|
+
{
|
85
|
+
// check target is component
|
86
|
+
info = _getObjectInfo(registry, target);
|
87
|
+
if(info.objectType != STAKING()) {
|
88
|
+
revert ErrorContractLibNotStaking(
|
89
|
+
info.nftId,
|
90
|
+
info.objectType);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
function getAndVerifyAnyComponent(
|
96
|
+
IRegistry registry,
|
97
|
+
address target,
|
98
|
+
bool onlyActive
|
99
|
+
)
|
100
|
+
external
|
101
|
+
view
|
102
|
+
returns (
|
103
|
+
IRegistry.ObjectInfo memory info,
|
104
|
+
address instance
|
105
|
+
)
|
106
|
+
{
|
107
|
+
// check target is component
|
108
|
+
info = _getObjectInfo(registry, target);
|
109
|
+
if(!(info.objectType == PRODUCT()
|
110
|
+
|| info.objectType == POOL()
|
111
|
+
|| info.objectType == DISTRIBUTION()
|
112
|
+
|| info.objectType == ORACLE())
|
113
|
+
) {
|
114
|
+
revert ErrorContractLibNotComponent(
|
115
|
+
info.nftId,
|
116
|
+
info.objectType);
|
117
|
+
}
|
118
|
+
|
119
|
+
// get instance and check component is active
|
120
|
+
instance = _getInstance(registry, info);
|
121
|
+
_checkComponentActive(instance, target, info.nftId, onlyActive);
|
122
|
+
}
|
123
|
+
|
124
|
+
|
125
|
+
function getInstanceForComponent(
|
126
|
+
IRegistry registry,
|
127
|
+
NftId componentNftId
|
128
|
+
)
|
129
|
+
public
|
130
|
+
view
|
131
|
+
returns (address instance)
|
132
|
+
{
|
133
|
+
NftId productNftId = registry.getObjectInfo(componentNftId).parentNftId;
|
134
|
+
NftId instanceNftId = registry.getObjectInfo(productNftId).parentNftId;
|
135
|
+
return registry.getObjectInfo(instanceNftId).objectAddress;
|
136
|
+
}
|
137
|
+
|
138
|
+
|
11
139
|
function isPolicyHolder(address target) external view returns (bool) {
|
12
140
|
return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
|
13
141
|
}
|
14
142
|
|
15
|
-
|
16
|
-
|
143
|
+
|
144
|
+
function isRegistry(address registry) public view returns (bool) {
|
145
|
+
if (!isContract(registry)) {
|
17
146
|
return false;
|
18
147
|
}
|
19
148
|
|
20
|
-
(
|
21
|
-
abi.encodeWithSelector(
|
22
|
-
IAccessManaged.authority.selector));
|
23
|
-
|
24
|
-
return success;
|
149
|
+
return supportsInterface(registry, type(IRegistry).interfaceId);
|
25
150
|
}
|
26
151
|
|
152
|
+
|
27
153
|
function isContract(address target) public view returns (bool) {
|
154
|
+
if (target == address(0)) {
|
155
|
+
return false;
|
156
|
+
}
|
157
|
+
|
28
158
|
uint256 size;
|
29
159
|
assembly {
|
30
160
|
size := extcodesize(target)
|
@@ -32,7 +162,63 @@ library ContractLib {
|
|
32
162
|
return size > 0;
|
33
163
|
}
|
34
164
|
|
35
|
-
function supportsInterface(address target, bytes4 interfaceId)
|
165
|
+
function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
|
36
166
|
return ERC165Checker.supportsInterface(target, interfaceId);
|
37
167
|
}
|
168
|
+
|
169
|
+
|
170
|
+
function _checkComponentActive(
|
171
|
+
address instance,
|
172
|
+
address target,
|
173
|
+
NftId componentNftId,
|
174
|
+
bool onlyActive
|
175
|
+
)
|
176
|
+
internal
|
177
|
+
view
|
178
|
+
{
|
179
|
+
if (onlyActive) {
|
180
|
+
if (IInstanceAdminHelper(
|
181
|
+
instance).getInstanceAdmin().isTargetLocked(
|
182
|
+
target)
|
183
|
+
) {
|
184
|
+
revert ErrorContractLibComponentInactive(componentNftId);
|
185
|
+
}
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
|
190
|
+
function _getInstance(
|
191
|
+
IRegistry registry,
|
192
|
+
IRegistry.ObjectInfo memory info
|
193
|
+
)
|
194
|
+
internal
|
195
|
+
view
|
196
|
+
returns (address instance)
|
197
|
+
{
|
198
|
+
if (info.objectType == PRODUCT()) {
|
199
|
+
return registry.getObjectAddress(
|
200
|
+
info.parentNftId);
|
201
|
+
}
|
202
|
+
|
203
|
+
return registry.getObjectAddress(
|
204
|
+
registry.getObjectInfo(
|
205
|
+
info.parentNftId).parentNftId);
|
206
|
+
}
|
207
|
+
|
208
|
+
|
209
|
+
function _getObjectInfo(
|
210
|
+
IRegistry registry,
|
211
|
+
address target
|
212
|
+
)
|
213
|
+
internal
|
214
|
+
view
|
215
|
+
returns (IRegistry.ObjectInfo memory info)
|
216
|
+
{
|
217
|
+
NftId componentNftId = registry.getNftIdForAddress(target);
|
218
|
+
if (componentNftId.eqz()) {
|
219
|
+
revert ErrorContractLibNotRegistered(target);
|
220
|
+
}
|
221
|
+
|
222
|
+
info = registry.getObjectInfo(componentNftId);
|
223
|
+
}
|
38
224
|
}
|
@@ -31,19 +31,12 @@ interface IComponent is
|
|
31
31
|
|
32
32
|
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
33
33
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
34
|
-
event LogComponentTokenHandlerApproved(address token, Amount limit, bool isMaxAmount);
|
34
|
+
event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
|
35
35
|
|
36
|
-
/// @dev
|
37
|
-
///
|
38
|
-
///
|
39
|
-
function approveTokenHandler(Amount spendingLimitAmount) external;
|
40
|
-
|
41
|
-
/// @dev sets the wallet address for the component.
|
42
|
-
/// if the current wallet has tokens, these will be transferred.
|
43
|
-
/// if the new wallet address is externally owned, an approval from the
|
44
|
-
/// owner of the external wallet to the tokenhandler of the component that
|
45
|
-
/// covers the current component balance must exist
|
46
|
-
function setWallet(address walletAddress) external;
|
36
|
+
/// @dev Approves token hanlder to spend up to the specified amount of tokens.
|
37
|
+
/// Reverts if component wallet is not token handler itself.
|
38
|
+
/// Only component owner (nft holder) is authorizes to call this function.
|
39
|
+
function approveTokenHandler(IERC20Metadata token, Amount spendingLimitAmount) external;
|
47
40
|
|
48
41
|
/// @dev returns the name of this component
|
49
42
|
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|