@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b95860d-028
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 +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- 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 -32
- 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 +148 -222
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +88 -186
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -237
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -111
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -57
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1551 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +48 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -105
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
- 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 +130 -204
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +71 -53
- 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 +84 -182
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -190
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +184 -185
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -104
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +96 -50
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -135
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -177
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +296 -296
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +102 -94
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +143 -200
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +129 -70
- 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 +257 -218
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +110 -110
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +143 -200
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +65 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +69 -77
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
- 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 +0 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- 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 +129 -221
- 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 +63 -157
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +50 -28
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +71 -53
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +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/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +84 -182
- 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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +77 -29
- 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 +83 -30
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +166 -206
- 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 +102 -87
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- 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 +32 -8
- 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 +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- 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/Seconds.sol/SecondsLib.json +26 -2
- 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/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- 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 +55 -70
- 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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- 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 +2 -1
- package/contracts/distribution/Distribution.sol +5 -15
- package/contracts/distribution/DistributionService.sol +79 -47
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +412 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +21 -12
- package/contracts/instance/InstanceAdmin.sol +22 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +24 -81
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +40 -15
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +24 -20
- package/contracts/pool/Pool.sol +53 -46
- package/contracts/pool/PoolService.sol +106 -122
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +13 -12
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +268 -93
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +16 -20
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/PolicyService.sol +197 -98
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +45 -52
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -61
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +65 -36
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +0 -1
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +124 -50
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +27 -19
- package/contracts/shared/ComponentService.sol +231 -137
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -0
- package/contracts/staking/Staking.sol +8 -8
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +3 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,16 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
7
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
6
9
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
7
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
11
|
import {IComponentService} from "./IComponentService.sol";
|
9
12
|
import {IInstance} from "../instance/IInstance.sol";
|
10
13
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
14
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
16
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
17
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
19
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
20
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
16
21
|
import {IRegistry} from "../registry/IRegistry.sol";
|
@@ -18,21 +23,13 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
18
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
24
|
import {NftId} from "../type/NftId.sol";
|
20
25
|
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {RoleId
|
26
|
+
import {RoleId} from "../type/RoleId.sol";
|
22
27
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
23
28
|
|
24
29
|
contract ComponentService is
|
25
30
|
ComponentVerifyingService,
|
26
31
|
IComponentService
|
27
32
|
{
|
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
33
|
|
37
34
|
bool private constant INCREASE = true;
|
38
35
|
bool private constant DECREASE = false;
|
@@ -40,6 +37,14 @@ contract ComponentService is
|
|
40
37
|
IRegistryService private _registryService;
|
41
38
|
IInstanceService private _instanceService;
|
42
39
|
|
40
|
+
modifier onlyComponent(address component) {
|
41
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
42
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
43
|
+
}
|
44
|
+
_;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
43
48
|
function _initialize(
|
44
49
|
address owner,
|
45
50
|
bytes memory data
|
@@ -48,21 +53,44 @@ contract ComponentService is
|
|
48
53
|
virtual override
|
49
54
|
initializer()
|
50
55
|
{
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
56
|
+
(
|
57
|
+
address registryAddress,
|
58
|
+
address authority
|
59
|
+
) = abi.decode(data, (address, address));
|
55
60
|
|
56
|
-
|
61
|
+
_initializeService(registryAddress, authority, owner);
|
57
62
|
|
58
63
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
59
64
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
60
65
|
|
61
|
-
|
66
|
+
_registerInterface(type(IComponentService).interfaceId);
|
62
67
|
}
|
63
68
|
|
64
69
|
//-------- component ----------------------------------------------------//
|
65
70
|
|
71
|
+
function registerComponent(address component)
|
72
|
+
external
|
73
|
+
virtual
|
74
|
+
onlyComponent(component)
|
75
|
+
returns (NftId componentNftId)
|
76
|
+
{
|
77
|
+
// type specific registration
|
78
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
79
|
+
if (componentType == POOL()) {
|
80
|
+
return _registerPool(component);
|
81
|
+
}
|
82
|
+
if (componentType == DISTRIBUTION()) {
|
83
|
+
return _registerDistribution(component);
|
84
|
+
}
|
85
|
+
if (componentType == ORACLE()) {
|
86
|
+
return _registerOracle(component);
|
87
|
+
}
|
88
|
+
|
89
|
+
// fail
|
90
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
91
|
+
}
|
92
|
+
|
93
|
+
|
66
94
|
function setWallet(address newWallet) external virtual {
|
67
95
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
68
96
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
@@ -125,29 +153,29 @@ contract ComponentService is
|
|
125
153
|
|
126
154
|
//-------- product ------------------------------------------------------//
|
127
155
|
|
128
|
-
function registerProduct()
|
156
|
+
function registerProduct(address productAddress)
|
129
157
|
external
|
130
158
|
virtual
|
159
|
+
onlyComponent(productAddress)
|
160
|
+
returns (NftId productNftId)
|
131
161
|
{
|
132
|
-
address contractAddress = msg.sender;
|
133
|
-
|
134
162
|
// 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);
|
163
|
+
InstanceAdmin instanceAdmin;
|
164
|
+
InstanceStore instanceStore;
|
165
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
166
|
+
productAddress,
|
167
|
+
PRODUCT());
|
168
|
+
|
169
|
+
// get product
|
170
|
+
IProductComponent product = IProductComponent(productAddress);
|
147
171
|
|
148
|
-
//
|
149
|
-
|
150
|
-
|
172
|
+
// create info
|
173
|
+
instanceStore.createProduct(
|
174
|
+
productNftId,
|
175
|
+
product.getInitialProductInfo());
|
176
|
+
|
177
|
+
// authorize
|
178
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
151
179
|
}
|
152
180
|
|
153
181
|
|
@@ -208,17 +236,36 @@ contract ComponentService is
|
|
208
236
|
//-------- distribution -------------------------------------------------//
|
209
237
|
|
210
238
|
/// @dev registers the sending component as a distribution component
|
211
|
-
function
|
212
|
-
|
239
|
+
function _registerDistribution(address distributioAddress)
|
240
|
+
internal
|
213
241
|
virtual
|
242
|
+
returns (NftId distributionNftId)
|
214
243
|
{
|
215
|
-
address contractAddress = msg.sender;
|
216
|
-
|
217
244
|
// register/create component info
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
245
|
+
InstanceReader instanceReader;
|
246
|
+
InstanceAdmin instanceAdmin;
|
247
|
+
InstanceStore instanceStore;
|
248
|
+
NftId productNftId;
|
249
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
250
|
+
distributioAddress,
|
251
|
+
DISTRIBUTION());
|
252
|
+
|
253
|
+
// check product is still expecting a distribution registration
|
254
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
255
|
+
if (!productInfo.hasDistribution) {
|
256
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
257
|
+
}
|
258
|
+
if (productInfo.distributionNftId.gtz()) {
|
259
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
260
|
+
}
|
261
|
+
|
262
|
+
// set distribution in product info
|
263
|
+
productInfo.distributionNftId = distributionNftId;
|
264
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
265
|
+
|
266
|
+
// authorize
|
267
|
+
instanceAdmin.initializeComponentAuthorization(
|
268
|
+
IInstanceLinkedComponent(distributioAddress));
|
222
269
|
}
|
223
270
|
|
224
271
|
|
@@ -315,46 +362,75 @@ contract ComponentService is
|
|
315
362
|
|
316
363
|
//-------- oracle -------------------------------------------------------//
|
317
364
|
|
318
|
-
function
|
319
|
-
|
365
|
+
function _registerOracle(address oracleAddress)
|
366
|
+
internal
|
320
367
|
virtual
|
368
|
+
returns (NftId oracleNftId)
|
321
369
|
{
|
322
|
-
address contractAddress = msg.sender;
|
323
|
-
|
324
370
|
// register/create component setup
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
371
|
+
InstanceReader instanceReader;
|
372
|
+
InstanceAdmin instanceAdmin;
|
373
|
+
InstanceStore instanceStore;
|
374
|
+
NftId productNftId;
|
375
|
+
|
376
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
377
|
+
oracleAddress,
|
378
|
+
ORACLE());
|
379
|
+
|
380
|
+
// check product is still expecting an oracle registration
|
381
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
382
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
383
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
384
|
+
}
|
385
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
386
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
387
|
+
}
|
388
|
+
|
389
|
+
// update/add oracle to product info
|
390
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
391
|
+
productInfo.numberOfOracles++;
|
392
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
393
|
+
|
394
|
+
// authorize
|
395
|
+
instanceAdmin.initializeComponentAuthorization(
|
396
|
+
IInstanceLinkedComponent(oracleAddress));
|
333
397
|
}
|
334
398
|
|
335
399
|
//-------- pool ---------------------------------------------------------//
|
336
400
|
|
337
|
-
function
|
338
|
-
|
401
|
+
function _registerPool(address poolAddress)
|
402
|
+
internal
|
339
403
|
virtual
|
404
|
+
returns (NftId poolNftId)
|
340
405
|
{
|
341
|
-
address contractAddress = msg.sender;
|
342
|
-
|
343
406
|
// register/create component setup
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
407
|
+
InstanceReader instanceReader;
|
408
|
+
InstanceAdmin instanceAdmin;
|
409
|
+
InstanceStore instanceStore;
|
410
|
+
NftId productNftId;
|
411
|
+
|
412
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
413
|
+
poolAddress,
|
414
|
+
POOL());
|
415
|
+
|
416
|
+
// check product is still expecting a pool registration
|
417
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
418
|
+
if (productInfo.poolNftId.gtz()) {
|
419
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
420
|
+
}
|
352
421
|
|
353
422
|
// create info
|
423
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
354
424
|
instanceStore.createPool(
|
355
|
-
|
356
|
-
|
357
|
-
|
425
|
+
poolNftId,
|
426
|
+
pool.getInitialPoolInfo());
|
427
|
+
|
428
|
+
// update pool in product info
|
429
|
+
productInfo.poolNftId = poolNftId;
|
430
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
431
|
+
|
432
|
+
// authorize
|
433
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
358
434
|
}
|
359
435
|
|
360
436
|
|
@@ -480,76 +556,67 @@ contract ComponentService is
|
|
480
556
|
}
|
481
557
|
}
|
482
558
|
|
483
|
-
/// @dev
|
559
|
+
/// @dev Registers the component represented by the provided address.
|
484
560
|
function _register(
|
485
561
|
address componentAddress, // address of component to register
|
486
|
-
ObjectType requiredType
|
487
|
-
RoleId requiredRole // role required for comonent owner for registration
|
562
|
+
ObjectType requiredType // required type for component for registration
|
488
563
|
)
|
489
564
|
internal
|
490
565
|
virtual
|
491
566
|
returns (
|
492
567
|
InstanceReader instanceReader,
|
568
|
+
InstanceAdmin instanceAdmin,
|
493
569
|
InstanceStore instanceStore,
|
570
|
+
NftId parentNftId,
|
494
571
|
NftId componentNftId
|
495
572
|
)
|
496
573
|
{
|
574
|
+
NftId instanceNftId;
|
575
|
+
IInstance instance;
|
576
|
+
IInstanceLinkedComponent component;
|
577
|
+
address initialOwner;
|
578
|
+
|
497
579
|
(
|
498
|
-
|
499
|
-
|
500
|
-
|
580
|
+
instanceNftId,
|
581
|
+
instance,
|
582
|
+
parentNftId,
|
583
|
+
component,
|
584
|
+
initialOwner
|
501
585
|
) = _getAndVerifyRegisterableComponent(
|
586
|
+
getRegistry(),
|
502
587
|
componentAddress,
|
503
|
-
requiredType
|
504
|
-
requiredRole);
|
505
|
-
|
506
|
-
// register component with registry
|
507
|
-
componentNftId = _registryService.registerComponent(
|
508
|
-
component,
|
509
|
-
requiredType,
|
510
|
-
owner).nftId;
|
511
|
-
|
512
|
-
component.linkToRegisteredNftId();
|
588
|
+
requiredType);
|
513
589
|
|
514
|
-
//
|
590
|
+
// get instance supporting contracts (as function return values)
|
515
591
|
instanceReader = instance.getInstanceReader();
|
592
|
+
instanceAdmin = instance.getInstanceAdmin();
|
516
593
|
instanceStore = instance.getInstanceStore();
|
517
594
|
|
595
|
+
// register with registry
|
596
|
+
if (requiredType == PRODUCT()) {
|
597
|
+
componentNftId = _registryService.registerProduct(
|
598
|
+
component, initialOwner).nftId;
|
599
|
+
} else {
|
600
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
601
|
+
component, requiredType, initialOwner).nftId;
|
602
|
+
}
|
603
|
+
|
604
|
+
// deploy and wire token handler
|
518
605
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
606
|
+
IERC20Metadata token = componentInfo.token;
|
519
607
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
520
|
-
address(
|
521
|
-
address(
|
608
|
+
address(token),
|
609
|
+
address(instanceAdmin.authority()));
|
522
610
|
|
611
|
+
// register component with instance
|
523
612
|
instanceStore.createComponent(
|
524
|
-
|
613
|
+
componentNftId,
|
525
614
|
componentInfo);
|
526
615
|
|
527
|
-
//
|
528
|
-
|
529
|
-
instance.getNftId(),
|
530
|
-
component);
|
616
|
+
// link component contract to nft id
|
617
|
+
component.linkToRegisteredNftId();
|
531
618
|
|
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());
|
619
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
553
620
|
}
|
554
621
|
|
555
622
|
|
@@ -568,12 +635,6 @@ contract ComponentService is
|
|
568
635
|
}
|
569
636
|
|
570
637
|
|
571
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
572
|
-
selectors = new bytes4[](1);
|
573
|
-
selectors[0] = selector;
|
574
|
-
}
|
575
|
-
|
576
|
-
|
577
638
|
function _getLinkedProductInfo(
|
578
639
|
InstanceReader instanceReader,
|
579
640
|
NftId componentNftId
|
@@ -585,56 +646,89 @@ contract ComponentService is
|
|
585
646
|
IComponents.ProductInfo memory info
|
586
647
|
)
|
587
648
|
{
|
588
|
-
productNftId =
|
649
|
+
productNftId = _getProductNftId(componentNftId);
|
589
650
|
info = instanceReader.getProductInfo(productNftId);
|
590
651
|
}
|
591
652
|
|
592
653
|
|
593
|
-
/// @dev
|
594
|
-
///
|
595
|
-
/// - the
|
654
|
+
/// @dev Based on the provided component address required type the component
|
655
|
+
/// and related instance contract this function reverts iff:
|
656
|
+
/// - the sender is not registered
|
596
657
|
/// - the component contract does not support IInstanceLinkedComponent
|
597
658
|
/// - the component type does not match with the required type
|
598
|
-
/// - the
|
659
|
+
/// - the component has already been registered
|
599
660
|
function _getAndVerifyRegisterableComponent(
|
661
|
+
IRegistry registry,
|
600
662
|
address componentAddress,
|
601
|
-
ObjectType requiredType
|
602
|
-
RoleId requiredRole
|
663
|
+
ObjectType requiredType
|
603
664
|
)
|
604
665
|
internal
|
605
666
|
view
|
606
667
|
returns (
|
668
|
+
NftId instanceNftId,
|
607
669
|
IInstance instance,
|
670
|
+
NftId parentNftId,
|
608
671
|
IInstanceLinkedComponent component,
|
609
|
-
address
|
672
|
+
address initialOwner
|
610
673
|
)
|
611
674
|
{
|
612
|
-
// check
|
613
|
-
|
614
|
-
if(
|
615
|
-
revert
|
675
|
+
// check sender (instance or product) is registered
|
676
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
677
|
+
if (senderInfo.nftId.eqz()) {
|
678
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
616
679
|
}
|
617
680
|
|
681
|
+
// the sender is the parent of the component to be registered
|
682
|
+
// an instance caller wanting to register a product - or -
|
683
|
+
// a product caller wantint go register a distribution, oracle or pool
|
684
|
+
parentNftId = senderInfo.nftId;
|
685
|
+
|
618
686
|
// check component is of required type
|
687
|
+
component = IInstanceLinkedComponent(componentAddress);
|
619
688
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
620
689
|
if(info.objectType != requiredType) {
|
621
690
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
622
691
|
}
|
623
692
|
|
624
693
|
// check component has not already been registered
|
625
|
-
if (getRegistry().
|
694
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
626
695
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
627
696
|
}
|
628
697
|
|
629
|
-
// check
|
630
|
-
|
631
|
-
|
698
|
+
// check release matches
|
699
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
700
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
701
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
702
|
+
}
|
632
703
|
|
633
|
-
|
634
|
-
|
704
|
+
// check component belongs to same product cluster
|
705
|
+
// parent of product must be instance, parent of other componet types must be product
|
706
|
+
if (info.parentNftId != senderInfo.nftId) {
|
707
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
635
708
|
}
|
709
|
+
|
710
|
+
// verify parent is registered instance
|
711
|
+
if (requiredType == PRODUCT()) {
|
712
|
+
if (senderInfo.objectType != INSTANCE()) {
|
713
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
714
|
+
}
|
715
|
+
|
716
|
+
instanceNftId = senderInfo.nftId;
|
717
|
+
// verify parent is registered product
|
718
|
+
} else {
|
719
|
+
if (senderInfo.objectType != PRODUCT()) {
|
720
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
721
|
+
}
|
722
|
+
|
723
|
+
instanceNftId = senderInfo.parentNftId;
|
724
|
+
}
|
725
|
+
|
726
|
+
// get initial owner and instance
|
727
|
+
initialOwner = info.initialOwner;
|
728
|
+
instance = _getInstance(registry, instanceNftId);
|
636
729
|
}
|
637
730
|
|
731
|
+
|
638
732
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
639
733
|
return COMPONENT();
|
640
734
|
}
|
@@ -11,15 +11,18 @@ contract ComponentServiceManager is ProxyManager {
|
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
|
-
address
|
14
|
+
address authority,
|
15
|
+
address registry,
|
16
|
+
bytes32 salt
|
15
17
|
)
|
16
|
-
ProxyManager(registryAddress)
|
17
18
|
{
|
18
19
|
ComponentService svc = new ComponentService();
|
19
|
-
bytes memory data = abi.encode(
|
20
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
21
23
|
address(svc),
|
22
|
-
data
|
24
|
+
data,
|
25
|
+
salt);
|
23
26
|
|
24
27
|
_componentService = ComponentService(address(versionable));
|
25
28
|
}
|
@@ -12,7 +12,6 @@ import {Service} from "../shared/Service.sol";
|
|
12
12
|
abstract contract ComponentVerifyingService is
|
13
13
|
Service
|
14
14
|
{
|
15
|
-
|
16
15
|
error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
|
17
16
|
error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
|
18
17
|
|
@@ -32,7 +31,7 @@ abstract contract ComponentVerifyingService is
|
|
32
31
|
IInstance instance
|
33
32
|
)
|
34
33
|
{
|
35
|
-
componentNftId = getRegistry().
|
34
|
+
componentNftId = getRegistry().getNftIdForAddress(msg.sender);
|
36
35
|
(componentInfo, instance) = _getAndVerifyComponentInfo(
|
37
36
|
componentNftId,
|
38
37
|
expectedType,
|
@@ -83,7 +82,7 @@ abstract contract ComponentVerifyingService is
|
|
83
82
|
}
|
84
83
|
}
|
85
84
|
|
86
|
-
instance =
|
85
|
+
instance = _getInstanceForComponent(registry, info);
|
87
86
|
|
88
87
|
// ensure component is not locked
|
89
88
|
if (onlyActive) {
|
@@ -94,24 +93,34 @@ abstract contract ComponentVerifyingService is
|
|
94
93
|
}
|
95
94
|
|
96
95
|
|
97
|
-
|
98
|
-
function _getProductNftId(
|
99
|
-
InstanceReader instanceReader,
|
100
|
-
NftId componentNftId
|
101
|
-
)
|
96
|
+
function _getInstanceForComponent(IRegistry registry, IRegistry.ObjectInfo memory componentInfo)
|
102
97
|
internal
|
103
|
-
virtual
|
104
98
|
view
|
105
|
-
returns (
|
99
|
+
returns (IInstance instance)
|
106
100
|
{
|
107
|
-
|
101
|
+
// parent of product is instance
|
102
|
+
if (componentInfo.objectType == PRODUCT()) {
|
103
|
+
instance = _getInstance(registry, componentInfo.parentNftId);
|
104
|
+
// parent of other types is product
|
105
|
+
} else {
|
106
|
+
instance = _getInstance(
|
107
|
+
registry,
|
108
|
+
registry.getObjectInfo(
|
109
|
+
componentInfo.parentNftId).parentNftId);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
/// @dev returns the product nft id from the registry.
|
115
|
+
/// assumes the component nft id is valid and represents a product linked component.
|
116
|
+
function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
|
117
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
108
118
|
}
|
109
119
|
|
110
120
|
|
111
121
|
/// @dev returns an IInstance contract reference for the specified instance nft id
|
112
|
-
function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
|
122
|
+
function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
|
113
123
|
return IInstance(
|
114
|
-
|
115
|
-
instanceNftId).objectAddress);
|
124
|
+
registry.getObjectAddress(instanceNftId));
|
116
125
|
}
|
117
126
|
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
|
+
|
7
|
+
import {IPolicyHolder} from "./IPolicyHolder.sol";
|
8
|
+
|
9
|
+
library ContractLib {
|
10
|
+
|
11
|
+
function isPolicyHolder(address target) external view returns (bool) {
|
12
|
+
return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
|
13
|
+
}
|
14
|
+
|
15
|
+
function isAccessManaged(address target) external view returns (bool) {
|
16
|
+
if (!isContract(target)) {
|
17
|
+
return false;
|
18
|
+
}
|
19
|
+
|
20
|
+
(bool success, ) = target.staticcall(
|
21
|
+
abi.encodeWithSelector(
|
22
|
+
IAccessManaged.authority.selector));
|
23
|
+
|
24
|
+
return success;
|
25
|
+
}
|
26
|
+
|
27
|
+
function isContract(address target) public view returns (bool) {
|
28
|
+
uint256 size;
|
29
|
+
assembly {
|
30
|
+
size := extcodesize(target)
|
31
|
+
}
|
32
|
+
return size > 0;
|
33
|
+
}
|
34
|
+
|
35
|
+
function supportsInterface(address target, bytes4 interfaceId) external view returns (bool) {
|
36
|
+
return ERC165Checker.supportsInterface(target, interfaceId);
|
37
|
+
}
|
38
|
+
}
|