@etherisc/gif-next 0.0.2-93a7619-595 → 0.0.2-93ee1cf-782
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 +96 -37
- 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 +67 -11
- 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 +60 -13
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +143 -182
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +73 -83
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -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 +113 -196
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +114 -22
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +215 -235
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +81 -25
- 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 +155 -157
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +114 -129
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +230 -190
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +508 -228
- 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 +98 -30
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -42
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +168 -125
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +327 -84
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -135
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
- 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 +46 -5
- 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 +102 -141
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
- 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 +68 -78
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +78 -93
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +78 -121
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -214
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +84 -84
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +68 -117
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +106 -88
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +78 -132
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +195 -188
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +87 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +123 -94
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -88
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +97 -61
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +66 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +67 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +109 -75
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +174 -129
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +96 -56
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +119 -90
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
- 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 +72 -15
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- 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 +116 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
- 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 +123 -225
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -87
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +442 -180
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- 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 +66 -72
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +68 -78
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -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 +29 -0
- 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 +78 -93
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -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 +66 -8
- 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/Service.sol/Service.json +42 -0
- 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 +84 -108
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -187
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
- 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 +82 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/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/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/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- 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 +44 -12
- 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 +86 -62
- package/contracts/authorization/Authorization.sol +106 -38
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +11 -22
- package/contracts/distribution/DistributionService.sol +69 -51
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +19 -8
- package/contracts/examples/fire/FireProduct.sol +33 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -2
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +10 -1
- package/contracts/instance/IInstanceService.sol +7 -25
- package/contracts/instance/Instance.sol +34 -22
- package/contracts/instance/InstanceAdmin.sol +20 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +38 -25
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +46 -87
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectLifecycle.sol +1 -1
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +103 -75
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +60 -98
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -30
- package/contracts/pool/Pool.sol +118 -126
- package/contracts/pool/PoolService.sol +191 -142
- package/contracts/product/ApplicationService.sol +21 -13
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +113 -51
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +7 -0
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +6 -0
- package/contracts/product/PolicyService.sol +241 -194
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +56 -61
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +6 -3
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +22 -4
- package/contracts/registry/RegistryAdmin.sol +21 -34
- package/contracts/registry/RegistryService.sol +37 -55
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +202 -208
- package/contracts/registry/ServiceAuthorizationV3.sol +17 -40
- package/contracts/shared/Component.sol +47 -106
- package/contracts/shared/ComponentService.sol +322 -157
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +10 -16
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +66 -32
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/Registerable.sol +15 -7
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/Service.sol +4 -7
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +31 -24
- package/contracts/staking/StakingService.sol +56 -23
- 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/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- 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/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
@@ -1,45 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IComponent} from "../shared/IComponent.sol";
|
7
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
8
|
import {IComponentService} from "./IComponentService.sol";
|
9
9
|
import {IInstance} from "../instance/IInstance.sol";
|
10
10
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
11
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
14
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
15
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
16
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
17
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
19
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
20
|
+
|
21
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
23
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
24
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
25
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {
|
26
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
29
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
23
30
|
|
31
|
+
|
24
32
|
contract ComponentService is
|
25
|
-
|
33
|
+
Service,
|
26
34
|
IComponentService
|
27
35
|
{
|
28
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
29
|
-
error ErrorComponentServiceNotComponent(address component);
|
30
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
31
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
32
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
33
|
-
error ErrorComponentServiceComponentLocked(address component);
|
34
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
35
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
36
|
-
|
37
36
|
bool private constant INCREASE = true;
|
38
37
|
bool private constant DECREASE = false;
|
39
38
|
|
40
39
|
IRegistryService private _registryService;
|
41
40
|
IInstanceService private _instanceService;
|
42
41
|
|
42
|
+
modifier onlyComponent(address component) {
|
43
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
43
50
|
function _initialize(
|
44
51
|
address owner,
|
45
52
|
bytes memory data
|
@@ -63,26 +70,74 @@ contract ComponentService is
|
|
63
70
|
|
64
71
|
//-------- component ----------------------------------------------------//
|
65
72
|
|
66
|
-
function
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
+
function registerComponent(address component)
|
74
|
+
external
|
75
|
+
virtual
|
76
|
+
onlyComponent(component)
|
77
|
+
returns (NftId componentNftId)
|
78
|
+
{
|
79
|
+
// type specific registration
|
80
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
81
|
+
if (componentType == POOL()) {
|
82
|
+
return _registerPool(component);
|
73
83
|
}
|
74
|
-
|
75
|
-
|
76
|
-
revert ErrorComponentServiceWalletAddressZero();
|
84
|
+
if (componentType == DISTRIBUTION()) {
|
85
|
+
return _registerDistribution(component);
|
77
86
|
}
|
78
|
-
|
79
|
-
|
80
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
87
|
+
if (componentType == ORACLE()) {
|
88
|
+
return _registerOracle(component);
|
81
89
|
}
|
82
90
|
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
// fail
|
92
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
93
|
+
}
|
94
|
+
|
95
|
+
function approveTokenHandler(
|
96
|
+
IERC20Metadata token,
|
97
|
+
Amount amount
|
98
|
+
)
|
99
|
+
external
|
100
|
+
virtual
|
101
|
+
{
|
102
|
+
// checks
|
103
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
104
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
105
|
+
componentNftId).tokenHandler;
|
106
|
+
|
107
|
+
// effects
|
108
|
+
tokenHandler.approve(token, amount);
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
function approveStakingTokenHandler(
|
113
|
+
IERC20Metadata token,
|
114
|
+
Amount amount
|
115
|
+
)
|
116
|
+
external
|
117
|
+
virtual
|
118
|
+
{
|
119
|
+
// checks
|
120
|
+
ContractLib.getAndVerifyStaking(
|
121
|
+
getRegistry(),
|
122
|
+
msg.sender); // only active
|
123
|
+
|
124
|
+
// effects
|
125
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
126
|
+
tokenHandler.approve(token, amount);
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
function setWallet(address newWallet)
|
131
|
+
external
|
132
|
+
virtual
|
133
|
+
{
|
134
|
+
// checks
|
135
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
136
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
137
|
+
componentNftId).tokenHandler;
|
138
|
+
|
139
|
+
// effects
|
140
|
+
tokenHandler.setWallet(newWallet);
|
86
141
|
}
|
87
142
|
|
88
143
|
// TODO implement
|
@@ -96,9 +151,9 @@ contract ComponentService is
|
|
96
151
|
virtual
|
97
152
|
returns (Amount withdrawnAmount)
|
98
153
|
{
|
99
|
-
(NftId componentNftId
|
154
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
100
155
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
101
|
-
address componentWallet = info.
|
156
|
+
address componentWallet = info.tokenHandler.getWallet();
|
102
157
|
|
103
158
|
// determine withdrawn amount
|
104
159
|
withdrawnAmount = amount;
|
@@ -125,29 +180,29 @@ contract ComponentService is
|
|
125
180
|
|
126
181
|
//-------- product ------------------------------------------------------//
|
127
182
|
|
128
|
-
function registerProduct()
|
183
|
+
function registerProduct(address productAddress)
|
129
184
|
external
|
130
185
|
virtual
|
186
|
+
onlyComponent(productAddress)
|
187
|
+
returns (NftId productNftId)
|
131
188
|
{
|
132
|
-
address contractAddress = msg.sender;
|
133
|
-
|
134
189
|
// register/create component setup
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
// create product info
|
145
|
-
IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
|
146
|
-
instanceStore.createProduct(productNftId, productInfo);
|
190
|
+
InstanceAdmin instanceAdmin;
|
191
|
+
InstanceStore instanceStore;
|
192
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
193
|
+
productAddress,
|
194
|
+
PRODUCT());
|
195
|
+
|
196
|
+
// get product
|
197
|
+
IProductComponent product = IProductComponent(productAddress);
|
147
198
|
|
148
|
-
//
|
149
|
-
|
150
|
-
|
199
|
+
// create info
|
200
|
+
instanceStore.createProduct(
|
201
|
+
productNftId,
|
202
|
+
product.getInitialProductInfo());
|
203
|
+
|
204
|
+
// authorize
|
205
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
151
206
|
}
|
152
207
|
|
153
208
|
|
@@ -158,7 +213,7 @@ contract ComponentService is
|
|
158
213
|
external
|
159
214
|
virtual
|
160
215
|
{
|
161
|
-
(NftId productNftId
|
216
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
162
217
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
163
218
|
bool feesChanged = false;
|
164
219
|
|
@@ -192,6 +247,7 @@ contract ComponentService is
|
|
192
247
|
// TODO re-enable once role granting is stable and fixed
|
193
248
|
// restricted()
|
194
249
|
{
|
250
|
+
_checkNftType(productNftId, PRODUCT());
|
195
251
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
196
252
|
}
|
197
253
|
|
@@ -202,23 +258,43 @@ contract ComponentService is
|
|
202
258
|
// TODO re-enable once role granting is stable and fixed
|
203
259
|
// restricted()
|
204
260
|
{
|
261
|
+
_checkNftType(productNftId, PRODUCT());
|
205
262
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
206
263
|
}
|
207
264
|
|
208
265
|
//-------- distribution -------------------------------------------------//
|
209
266
|
|
210
267
|
/// @dev registers the sending component as a distribution component
|
211
|
-
function
|
212
|
-
|
268
|
+
function _registerDistribution(address distributioAddress)
|
269
|
+
internal
|
213
270
|
virtual
|
271
|
+
returns (NftId distributionNftId)
|
214
272
|
{
|
215
|
-
address contractAddress = msg.sender;
|
216
|
-
|
217
273
|
// register/create component info
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
274
|
+
InstanceReader instanceReader;
|
275
|
+
InstanceAdmin instanceAdmin;
|
276
|
+
InstanceStore instanceStore;
|
277
|
+
NftId productNftId;
|
278
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
279
|
+
distributioAddress,
|
280
|
+
DISTRIBUTION());
|
281
|
+
|
282
|
+
// check product is still expecting a distribution registration
|
283
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
284
|
+
if (!productInfo.hasDistribution) {
|
285
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
286
|
+
}
|
287
|
+
if (productInfo.distributionNftId.gtz()) {
|
288
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
289
|
+
}
|
290
|
+
|
291
|
+
// set distribution in product info
|
292
|
+
productInfo.distributionNftId = distributionNftId;
|
293
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
294
|
+
|
295
|
+
// authorize
|
296
|
+
instanceAdmin.initializeComponentAuthorization(
|
297
|
+
IInstanceLinkedComponent(distributioAddress));
|
222
298
|
}
|
223
299
|
|
224
300
|
|
@@ -229,7 +305,7 @@ contract ComponentService is
|
|
229
305
|
external
|
230
306
|
virtual
|
231
307
|
{
|
232
|
-
(NftId distributionNftId
|
308
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
233
309
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
234
310
|
instance.getInstanceReader(), distributionNftId);
|
235
311
|
bool feesChanged = false;
|
@@ -265,6 +341,7 @@ contract ComponentService is
|
|
265
341
|
// TODO re-enable once role granting is stable and fixed
|
266
342
|
// restricted()
|
267
343
|
{
|
344
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
268
345
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
269
346
|
}
|
270
347
|
|
@@ -280,6 +357,7 @@ contract ComponentService is
|
|
280
357
|
// TODO re-enable once role granting is stable and fixed
|
281
358
|
// restricted()
|
282
359
|
{
|
360
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
283
361
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
284
362
|
}
|
285
363
|
|
@@ -296,6 +374,7 @@ contract ComponentService is
|
|
296
374
|
// TODO re-enable once role granting is stable and fixed
|
297
375
|
// restricted()
|
298
376
|
{
|
377
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
299
378
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
300
379
|
}
|
301
380
|
|
@@ -310,51 +389,81 @@ contract ComponentService is
|
|
310
389
|
// TODO re-enable once role granting is stable and fixed
|
311
390
|
// restricted()
|
312
391
|
{
|
392
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
313
393
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
314
394
|
}
|
315
395
|
|
316
396
|
//-------- oracle -------------------------------------------------------//
|
317
397
|
|
318
|
-
function
|
319
|
-
|
398
|
+
function _registerOracle(address oracleAddress)
|
399
|
+
internal
|
320
400
|
virtual
|
401
|
+
returns (NftId oracleNftId)
|
321
402
|
{
|
322
|
-
address contractAddress = msg.sender;
|
323
|
-
|
324
403
|
// register/create component setup
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
404
|
+
InstanceReader instanceReader;
|
405
|
+
InstanceAdmin instanceAdmin;
|
406
|
+
InstanceStore instanceStore;
|
407
|
+
NftId productNftId;
|
408
|
+
|
409
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
410
|
+
oracleAddress,
|
411
|
+
ORACLE());
|
412
|
+
|
413
|
+
// check product is still expecting an oracle registration
|
414
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
415
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
416
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
417
|
+
}
|
418
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
419
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
420
|
+
}
|
421
|
+
|
422
|
+
// update/add oracle to product info
|
423
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
424
|
+
productInfo.numberOfOracles++;
|
425
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
426
|
+
|
427
|
+
// authorize
|
428
|
+
instanceAdmin.initializeComponentAuthorization(
|
429
|
+
IInstanceLinkedComponent(oracleAddress));
|
333
430
|
}
|
334
431
|
|
335
432
|
//-------- pool ---------------------------------------------------------//
|
336
433
|
|
337
|
-
function
|
338
|
-
|
434
|
+
function _registerPool(address poolAddress)
|
435
|
+
internal
|
339
436
|
virtual
|
437
|
+
returns (NftId poolNftId)
|
340
438
|
{
|
341
|
-
address contractAddress = msg.sender;
|
342
|
-
|
343
439
|
// register/create component setup
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
440
|
+
InstanceReader instanceReader;
|
441
|
+
InstanceAdmin instanceAdmin;
|
442
|
+
InstanceStore instanceStore;
|
443
|
+
NftId productNftId;
|
444
|
+
|
445
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
446
|
+
poolAddress,
|
447
|
+
POOL());
|
448
|
+
|
449
|
+
// check product is still expecting a pool registration
|
450
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
451
|
+
if (productInfo.poolNftId.gtz()) {
|
452
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
453
|
+
}
|
352
454
|
|
353
455
|
// create info
|
456
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
354
457
|
instanceStore.createPool(
|
355
|
-
|
356
|
-
|
357
|
-
|
458
|
+
poolNftId,
|
459
|
+
pool.getInitialPoolInfo());
|
460
|
+
|
461
|
+
// update pool in product info
|
462
|
+
productInfo.poolNftId = poolNftId;
|
463
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
464
|
+
|
465
|
+
// authorize
|
466
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
358
467
|
}
|
359
468
|
|
360
469
|
|
@@ -366,7 +475,8 @@ contract ComponentService is
|
|
366
475
|
external
|
367
476
|
virtual
|
368
477
|
{
|
369
|
-
(NftId poolNftId
|
478
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
479
|
+
|
370
480
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
371
481
|
instance.getInstanceReader(), poolNftId);
|
372
482
|
bool feesChanged = false;
|
@@ -409,6 +519,7 @@ contract ComponentService is
|
|
409
519
|
// TODO re-enable once role granting is stable and fixed
|
410
520
|
// restricted()
|
411
521
|
{
|
522
|
+
_checkNftType(poolNftId, POOL());
|
412
523
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
413
524
|
}
|
414
525
|
|
@@ -423,6 +534,7 @@ contract ComponentService is
|
|
423
534
|
// TODO re-enable once role granting is stable and fixed
|
424
535
|
// restricted()
|
425
536
|
{
|
537
|
+
_checkNftType(poolNftId, POOL());
|
426
538
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
427
539
|
}
|
428
540
|
|
@@ -439,6 +551,7 @@ contract ComponentService is
|
|
439
551
|
// TODO re-enable once role granting is stable and fixed
|
440
552
|
// restricted()
|
441
553
|
{
|
554
|
+
_checkNftType(bundleNftId, BUNDLE());
|
442
555
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
443
556
|
}
|
444
557
|
|
@@ -453,6 +566,7 @@ contract ComponentService is
|
|
453
566
|
// TODO re-enable once role granting is stable and fixed
|
454
567
|
// restricted()
|
455
568
|
{
|
569
|
+
_checkNftType(bundleNftId, BUNDLE());
|
456
570
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
457
571
|
}
|
458
572
|
|
@@ -480,76 +594,72 @@ contract ComponentService is
|
|
480
594
|
}
|
481
595
|
}
|
482
596
|
|
483
|
-
/// @dev
|
597
|
+
/// @dev Registers the component represented by the provided address.
|
484
598
|
function _register(
|
485
599
|
address componentAddress, // address of component to register
|
486
|
-
ObjectType requiredType
|
487
|
-
RoleId requiredRole // role required for comonent owner for registration
|
600
|
+
ObjectType requiredType // required type for component for registration
|
488
601
|
)
|
489
602
|
internal
|
490
603
|
virtual
|
491
604
|
returns (
|
492
605
|
InstanceReader instanceReader,
|
606
|
+
InstanceAdmin instanceAdmin,
|
493
607
|
InstanceStore instanceStore,
|
608
|
+
NftId parentNftId,
|
494
609
|
NftId componentNftId
|
495
610
|
)
|
496
611
|
{
|
612
|
+
NftId instanceNftId;
|
613
|
+
IInstance instance;
|
614
|
+
IInstanceLinkedComponent component;
|
615
|
+
address initialOwner;
|
616
|
+
|
497
617
|
(
|
498
|
-
|
499
|
-
|
500
|
-
|
618
|
+
instanceNftId,
|
619
|
+
instance,
|
620
|
+
parentNftId,
|
621
|
+
component,
|
622
|
+
initialOwner
|
501
623
|
) = _getAndVerifyRegisterableComponent(
|
624
|
+
getRegistry(),
|
502
625
|
componentAddress,
|
503
|
-
requiredType
|
504
|
-
requiredRole);
|
505
|
-
|
506
|
-
// register component with registry
|
507
|
-
componentNftId = _registryService.registerComponent(
|
508
|
-
component,
|
509
|
-
requiredType,
|
510
|
-
owner).nftId;
|
626
|
+
requiredType);
|
511
627
|
|
512
|
-
|
513
|
-
|
514
|
-
// save amended component info with instance
|
628
|
+
// get instance supporting contracts (as function return values)
|
515
629
|
instanceReader = instance.getInstanceReader();
|
630
|
+
instanceAdmin = instance.getInstanceAdmin();
|
516
631
|
instanceStore = instance.getInstanceStore();
|
517
632
|
|
633
|
+
// register with registry
|
634
|
+
if (requiredType == PRODUCT()) {
|
635
|
+
componentNftId = _registryService.registerProduct(
|
636
|
+
component, initialOwner).nftId;
|
637
|
+
} else {
|
638
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
639
|
+
component, requiredType, initialOwner).nftId;
|
640
|
+
}
|
641
|
+
|
642
|
+
// deploy and wire token handler
|
518
643
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
644
|
+
IERC20Metadata token = componentInfo.token;
|
519
645
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
520
|
-
address(
|
521
|
-
address(
|
646
|
+
address(getRegistry()),
|
647
|
+
address(component), // initially, component is its own wallet
|
648
|
+
address(token),
|
649
|
+
address(instanceAdmin.authority()));
|
650
|
+
|
651
|
+
// set token handler allowance to max
|
652
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
522
653
|
|
654
|
+
// register component with instance
|
523
655
|
instanceStore.createComponent(
|
524
|
-
|
656
|
+
componentNftId,
|
525
657
|
componentInfo);
|
526
658
|
|
527
|
-
//
|
528
|
-
|
529
|
-
instance.getNftId(),
|
530
|
-
component);
|
659
|
+
// link component contract to nft id
|
660
|
+
component.linkToRegisteredNftId();
|
531
661
|
|
532
|
-
|
533
|
-
}
|
534
|
-
|
535
|
-
|
536
|
-
/// @dev link the component info corresponding to the componentNftId to the provided productNftId
|
537
|
-
function _linkToProduct(
|
538
|
-
InstanceReader instanceReader,
|
539
|
-
InstanceStore instanceStore,
|
540
|
-
NftId componentNftId,
|
541
|
-
NftId productNftId
|
542
|
-
)
|
543
|
-
internal
|
544
|
-
{
|
545
|
-
// only link components that are registered
|
546
|
-
if(componentNftId.eqz()) {
|
547
|
-
return;
|
548
|
-
}
|
549
|
-
|
550
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
551
|
-
componentInfo.productNftId = productNftId;
|
552
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
662
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
553
663
|
}
|
554
664
|
|
555
665
|
|
@@ -568,12 +678,6 @@ contract ComponentService is
|
|
568
678
|
}
|
569
679
|
|
570
680
|
|
571
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
572
|
-
selectors = new bytes4[](1);
|
573
|
-
selectors[0] = selector;
|
574
|
-
}
|
575
|
-
|
576
|
-
|
577
681
|
function _getLinkedProductInfo(
|
578
682
|
InstanceReader instanceReader,
|
579
683
|
NftId componentNftId
|
@@ -585,37 +689,45 @@ contract ComponentService is
|
|
585
689
|
IComponents.ProductInfo memory info
|
586
690
|
)
|
587
691
|
{
|
588
|
-
productNftId =
|
692
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
589
693
|
info = instanceReader.getProductInfo(productNftId);
|
590
694
|
}
|
591
695
|
|
592
696
|
|
593
|
-
/// @dev
|
594
|
-
///
|
595
|
-
/// - the
|
697
|
+
/// @dev Based on the provided component address required type the component
|
698
|
+
/// and related instance contract this function reverts iff:
|
699
|
+
/// - the sender is not registered
|
596
700
|
/// - the component contract does not support IInstanceLinkedComponent
|
597
701
|
/// - the component type does not match with the required type
|
598
|
-
/// - the
|
702
|
+
/// - the component has already been registered
|
599
703
|
function _getAndVerifyRegisterableComponent(
|
704
|
+
IRegistry registry,
|
600
705
|
address componentAddress,
|
601
|
-
ObjectType requiredType
|
602
|
-
RoleId requiredRole
|
706
|
+
ObjectType requiredType
|
603
707
|
)
|
604
708
|
internal
|
605
709
|
view
|
606
710
|
returns (
|
711
|
+
NftId instanceNftId,
|
607
712
|
IInstance instance,
|
713
|
+
NftId parentNftId,
|
608
714
|
IInstanceLinkedComponent component,
|
609
|
-
address
|
715
|
+
address initialOwner
|
610
716
|
)
|
611
717
|
{
|
612
|
-
// check
|
613
|
-
|
614
|
-
if(
|
615
|
-
revert
|
718
|
+
// check sender (instance or product) is registered
|
719
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
720
|
+
if (senderInfo.nftId.eqz()) {
|
721
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
616
722
|
}
|
617
723
|
|
724
|
+
// the sender is the parent of the component to be registered
|
725
|
+
// an instance caller wanting to register a product - or -
|
726
|
+
// a product caller wantint go register a distribution, oracle or pool
|
727
|
+
parentNftId = senderInfo.nftId;
|
728
|
+
|
618
729
|
// check component is of required type
|
730
|
+
component = IInstanceLinkedComponent(componentAddress);
|
619
731
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
620
732
|
if(info.objectType != requiredType) {
|
621
733
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
@@ -626,13 +738,66 @@ contract ComponentService is
|
|
626
738
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
627
739
|
}
|
628
740
|
|
629
|
-
// check
|
630
|
-
|
631
|
-
|
741
|
+
// check release matches
|
742
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
743
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
744
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
745
|
+
}
|
632
746
|
|
633
|
-
|
634
|
-
|
747
|
+
// check component belongs to same product cluster
|
748
|
+
// parent of product must be instance, parent of other componet types must be product
|
749
|
+
if (info.parentNftId != senderInfo.nftId) {
|
750
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
635
751
|
}
|
752
|
+
|
753
|
+
// verify parent is registered instance
|
754
|
+
if (requiredType == PRODUCT()) {
|
755
|
+
if (senderInfo.objectType != INSTANCE()) {
|
756
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
757
|
+
}
|
758
|
+
|
759
|
+
instanceNftId = senderInfo.nftId;
|
760
|
+
// verify parent is registered product
|
761
|
+
} else {
|
762
|
+
if (senderInfo.objectType != PRODUCT()) {
|
763
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
764
|
+
}
|
765
|
+
|
766
|
+
instanceNftId = senderInfo.parentNftId;
|
767
|
+
}
|
768
|
+
|
769
|
+
// get initial owner and instance
|
770
|
+
initialOwner = info.initialOwner;
|
771
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
772
|
+
}
|
773
|
+
|
774
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
775
|
+
internal
|
776
|
+
view
|
777
|
+
returns (
|
778
|
+
NftId componentNftId,
|
779
|
+
IInstance instance
|
780
|
+
)
|
781
|
+
{
|
782
|
+
IRegistry.ObjectInfo memory info;
|
783
|
+
address instanceAddress;
|
784
|
+
|
785
|
+
if (expectedType != COMPONENT()) {
|
786
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
787
|
+
getRegistry(),
|
788
|
+
msg.sender, // caller
|
789
|
+
expectedType,
|
790
|
+
true); // only active
|
791
|
+
} else {
|
792
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
793
|
+
getRegistry(),
|
794
|
+
msg.sender,
|
795
|
+
true); // only active
|
796
|
+
}
|
797
|
+
|
798
|
+
// get component nft id and instance
|
799
|
+
componentNftId = info.nftId;
|
800
|
+
instance = IInstance(instanceAddress);
|
636
801
|
}
|
637
802
|
|
638
803
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|