@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f13c010-035
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 +5 -2
- 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 +163 -309
- 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 +91 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +190 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
- 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 +1538 -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 +2072 -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 +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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 +53 -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 +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- 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 +137 -283
- 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 +66 -80
- 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 +79 -265
- 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 +103 -274
- 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 -229
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +65 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +221 -151
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -260
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -326
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -101
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
- 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 +303 -187
- 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 +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +260 -140
- 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 +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -356
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -107
- 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 +136 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +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 +5 -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 +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +376 -287
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -122
- 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 +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +346 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- 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 +79 -265
- 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 +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- 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 +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
- 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 +106 -91
- 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 -40
- 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 +7 -17
- package/contracts/distribution/DistributionService.sol +84 -66
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -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 +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +45 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +107 -25
- package/contracts/instance/InstanceService.sol +67 -97
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +24 -24
- 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 +16 -28
- package/contracts/pool/BasicPoolAuthorization.sol +1 -2
- package/contracts/pool/BundleService.sol +108 -57
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +14 -4
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -31
- package/contracts/pool/Pool.sol +54 -47
- package/contracts/pool/PoolService.sol +180 -162
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- 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 +313 -118
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +31 -35
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +374 -212
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +117 -73
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- 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 +45 -54
- package/contracts/shared/ComponentService.sol +217 -182
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- 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 +10 -6
- package/contracts/shared/IComponentService.sol +26 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- 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 +27 -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/shared/TokenHandler.sol +144 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +25 -29
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/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/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -4,37 +4,35 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
+
import {ComponentServiceHelperLib} from "./ComponentServiceHelperLib.sol";
|
7
8
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
9
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
8
10
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
9
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
10
12
|
import {IComponentService} from "./IComponentService.sol";
|
13
|
+
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
11
14
|
import {IInstance} from "../instance/IInstance.sol";
|
12
15
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
16
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
17
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
18
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
15
19
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
21
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
22
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
23
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
24
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
20
25
|
import {KEEP_STATE} from "../type/StateId.sol";
|
21
26
|
import {NftId} from "../type/NftId.sol";
|
22
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
23
|
-
import {RoleId
|
24
|
-
import {TokenHandler} from "
|
27
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {RoleId} from "../type/RoleId.sol";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
25
31
|
|
26
32
|
contract ComponentService is
|
27
33
|
ComponentVerifyingService,
|
28
34
|
IComponentService
|
29
35
|
{
|
30
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
31
|
-
error ErrorComponentServiceNotComponent(address component);
|
32
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
33
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
34
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
35
|
-
error ErrorComponentServiceComponentLocked(address component);
|
36
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
37
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
38
36
|
|
39
37
|
bool private constant INCREASE = true;
|
40
38
|
bool private constant DECREASE = false;
|
@@ -42,6 +40,14 @@ contract ComponentService is
|
|
42
40
|
IRegistryService private _registryService;
|
43
41
|
IInstanceService private _instanceService;
|
44
42
|
|
43
|
+
modifier onlyComponent(address component) {
|
44
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
45
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
46
|
+
}
|
47
|
+
_;
|
48
|
+
}
|
49
|
+
|
50
|
+
|
45
51
|
function _initialize(
|
46
52
|
address owner,
|
47
53
|
bytes memory data
|
@@ -50,22 +56,46 @@ contract ComponentService is
|
|
50
56
|
virtual override
|
51
57
|
initializer()
|
52
58
|
{
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
59
|
+
(
|
60
|
+
address registryAddress,
|
61
|
+
address authority
|
62
|
+
) = abi.decode(data, (address, address));
|
57
63
|
|
58
|
-
|
64
|
+
_initializeService(registryAddress, authority, owner);
|
59
65
|
|
60
66
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
61
67
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
68
|
|
63
|
-
|
69
|
+
_registerInterface(type(IComponentService).interfaceId);
|
64
70
|
}
|
65
71
|
|
66
72
|
//-------- component ----------------------------------------------------//
|
67
73
|
|
74
|
+
function registerComponent(address component)
|
75
|
+
external
|
76
|
+
virtual
|
77
|
+
onlyComponent(component)
|
78
|
+
returns (NftId componentNftId)
|
79
|
+
{
|
80
|
+
// type specific registration
|
81
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
82
|
+
if (componentType == POOL()) {
|
83
|
+
return _registerPool(component);
|
84
|
+
}
|
85
|
+
if (componentType == DISTRIBUTION()) {
|
86
|
+
return _registerDistribution(component);
|
87
|
+
}
|
88
|
+
if (componentType == ORACLE()) {
|
89
|
+
return _registerOracle(component);
|
90
|
+
}
|
91
|
+
|
92
|
+
// fail
|
93
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
94
|
+
}
|
95
|
+
|
96
|
+
|
68
97
|
function setWallet(address newWallet) external virtual {
|
98
|
+
// checks
|
69
99
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
70
100
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
71
101
|
address currentWallet = info.wallet;
|
@@ -82,9 +112,17 @@ contract ComponentService is
|
|
82
112
|
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
83
113
|
}
|
84
114
|
|
115
|
+
uint256 currentBalance = info.token.balanceOf(currentWallet);
|
116
|
+
|
117
|
+
// effects
|
85
118
|
info.wallet = newWallet;
|
86
119
|
instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
|
120
|
+
|
87
121
|
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
122
|
+
|
123
|
+
// interactions
|
124
|
+
info.tokenHandler.addAllowedTarget(newWallet);
|
125
|
+
info.tokenHandler.removeAllowedTarget(currentWallet);
|
88
126
|
}
|
89
127
|
|
90
128
|
// TODO implement
|
@@ -115,51 +153,41 @@ contract ComponentService is
|
|
115
153
|
}
|
116
154
|
}
|
117
155
|
|
118
|
-
// check allowance
|
119
|
-
TokenHandler tokenHandler = info.tokenHandler;
|
120
|
-
IERC20Metadata token = IERC20Metadata(info.token);
|
121
|
-
uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
|
122
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
123
|
-
revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
124
|
-
}
|
125
|
-
|
126
156
|
// decrease fee counters by withdrawnAmount
|
127
157
|
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
128
158
|
|
129
159
|
// transfer amount to component owner
|
130
160
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
131
|
-
|
132
|
-
tokenHandler.
|
133
|
-
|
134
|
-
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
161
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
162
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
135
163
|
}
|
136
164
|
|
137
165
|
|
138
166
|
//-------- product ------------------------------------------------------//
|
139
167
|
|
140
|
-
function registerProduct()
|
168
|
+
function registerProduct(address productAddress)
|
141
169
|
external
|
142
170
|
virtual
|
171
|
+
onlyComponent(productAddress)
|
172
|
+
returns (NftId productNftId)
|
143
173
|
{
|
144
|
-
address contractAddress = msg.sender;
|
145
|
-
|
146
174
|
// register/create component setup
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
// create
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
175
|
+
InstanceAdmin instanceAdmin;
|
176
|
+
InstanceStore instanceStore;
|
177
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
178
|
+
productAddress,
|
179
|
+
PRODUCT());
|
180
|
+
|
181
|
+
// get product
|
182
|
+
IProductComponent product = IProductComponent(productAddress);
|
183
|
+
|
184
|
+
// create info
|
185
|
+
instanceStore.createProduct(
|
186
|
+
productNftId,
|
187
|
+
product.getInitialProductInfo());
|
188
|
+
|
189
|
+
// authorize
|
190
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
163
191
|
}
|
164
192
|
|
165
193
|
|
@@ -204,6 +232,7 @@ contract ComponentService is
|
|
204
232
|
// TODO re-enable once role granting is stable and fixed
|
205
233
|
// restricted()
|
206
234
|
{
|
235
|
+
_checkNftType(productNftId, PRODUCT());
|
207
236
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
208
237
|
}
|
209
238
|
|
@@ -214,23 +243,47 @@ contract ComponentService is
|
|
214
243
|
// TODO re-enable once role granting is stable and fixed
|
215
244
|
// restricted()
|
216
245
|
{
|
246
|
+
_checkNftType(productNftId, PRODUCT());
|
217
247
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
218
248
|
}
|
219
249
|
|
220
250
|
//-------- distribution -------------------------------------------------//
|
221
251
|
|
222
252
|
/// @dev registers the sending component as a distribution component
|
223
|
-
function
|
224
|
-
|
253
|
+
function _registerDistribution(address distributioAddress)
|
254
|
+
internal
|
225
255
|
virtual
|
256
|
+
returns (NftId distributionNftId)
|
226
257
|
{
|
227
|
-
address contractAddress = msg.sender;
|
228
|
-
|
229
258
|
// register/create component info
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
259
|
+
InstanceReader instanceReader;
|
260
|
+
InstanceAdmin instanceAdmin;
|
261
|
+
InstanceStore instanceStore;
|
262
|
+
NftId productNftId;
|
263
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
264
|
+
distributioAddress,
|
265
|
+
DISTRIBUTION());
|
266
|
+
|
267
|
+
// check product is still expecting a distribution registration
|
268
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
269
|
+
if (!productInfo.hasDistribution) {
|
270
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
271
|
+
}
|
272
|
+
if (productInfo.distributionNftId.gtz()) {
|
273
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
274
|
+
}
|
275
|
+
|
276
|
+
// set distribution in product info
|
277
|
+
productInfo.distributionNftId = distributionNftId;
|
278
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
279
|
+
|
280
|
+
// authorize
|
281
|
+
instanceAdmin.initializeComponentAuthorization(
|
282
|
+
IInstanceLinkedComponent(distributioAddress));
|
283
|
+
|
284
|
+
IDistributionComponent distribution = IDistributionComponent(distributioAddress);
|
285
|
+
IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
|
286
|
+
productComponentInfo.tokenHandler.addAllowedTarget(distribution.getWallet());
|
234
287
|
}
|
235
288
|
|
236
289
|
|
@@ -277,6 +330,7 @@ contract ComponentService is
|
|
277
330
|
// TODO re-enable once role granting is stable and fixed
|
278
331
|
// restricted()
|
279
332
|
{
|
333
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
280
334
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
281
335
|
}
|
282
336
|
|
@@ -292,6 +346,7 @@ contract ComponentService is
|
|
292
346
|
// TODO re-enable once role granting is stable and fixed
|
293
347
|
// restricted()
|
294
348
|
{
|
349
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
295
350
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
296
351
|
}
|
297
352
|
|
@@ -308,6 +363,7 @@ contract ComponentService is
|
|
308
363
|
// TODO re-enable once role granting is stable and fixed
|
309
364
|
// restricted()
|
310
365
|
{
|
366
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
311
367
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
312
368
|
}
|
313
369
|
|
@@ -322,51 +378,84 @@ contract ComponentService is
|
|
322
378
|
// TODO re-enable once role granting is stable and fixed
|
323
379
|
// restricted()
|
324
380
|
{
|
381
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
325
382
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
326
383
|
}
|
327
384
|
|
328
385
|
//-------- oracle -------------------------------------------------------//
|
329
386
|
|
330
|
-
function
|
331
|
-
|
387
|
+
function _registerOracle(address oracleAddress)
|
388
|
+
internal
|
332
389
|
virtual
|
390
|
+
returns (NftId oracleNftId)
|
333
391
|
{
|
334
|
-
address contractAddress = msg.sender;
|
335
|
-
|
336
392
|
// register/create component setup
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
393
|
+
InstanceReader instanceReader;
|
394
|
+
InstanceAdmin instanceAdmin;
|
395
|
+
InstanceStore instanceStore;
|
396
|
+
NftId productNftId;
|
397
|
+
|
398
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
399
|
+
oracleAddress,
|
400
|
+
ORACLE());
|
401
|
+
|
402
|
+
// check product is still expecting an oracle registration
|
403
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
404
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
405
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
406
|
+
}
|
407
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
408
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
409
|
+
}
|
410
|
+
|
411
|
+
// update/add oracle to product info
|
412
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
413
|
+
productInfo.numberOfOracles++;
|
414
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
415
|
+
|
416
|
+
// authorize
|
417
|
+
instanceAdmin.initializeComponentAuthorization(
|
418
|
+
IInstanceLinkedComponent(oracleAddress));
|
345
419
|
}
|
346
420
|
|
347
421
|
//-------- pool ---------------------------------------------------------//
|
348
422
|
|
349
|
-
function
|
350
|
-
|
423
|
+
function _registerPool(address poolAddress)
|
424
|
+
internal
|
351
425
|
virtual
|
426
|
+
returns (NftId poolNftId)
|
352
427
|
{
|
353
|
-
address contractAddress = msg.sender;
|
354
|
-
|
355
428
|
// register/create component setup
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
429
|
+
InstanceReader instanceReader;
|
430
|
+
InstanceAdmin instanceAdmin;
|
431
|
+
InstanceStore instanceStore;
|
432
|
+
NftId productNftId;
|
433
|
+
|
434
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
435
|
+
poolAddress,
|
436
|
+
POOL());
|
437
|
+
|
438
|
+
// check product is still expecting a pool registration
|
439
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
440
|
+
if (productInfo.poolNftId.gtz()) {
|
441
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
442
|
+
}
|
364
443
|
|
365
444
|
// create info
|
445
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
366
446
|
instanceStore.createPool(
|
367
|
-
|
368
|
-
|
369
|
-
|
447
|
+
poolNftId,
|
448
|
+
pool.getInitialPoolInfo());
|
449
|
+
|
450
|
+
// update pool in product info
|
451
|
+
productInfo.poolNftId = poolNftId;
|
452
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
453
|
+
|
454
|
+
// authorize
|
455
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
456
|
+
|
457
|
+
IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
|
458
|
+
productComponentInfo.tokenHandler.addAllowedTarget(pool.getWallet());
|
370
459
|
}
|
371
460
|
|
372
461
|
|
@@ -421,6 +510,7 @@ contract ComponentService is
|
|
421
510
|
// TODO re-enable once role granting is stable and fixed
|
422
511
|
// restricted()
|
423
512
|
{
|
513
|
+
_checkNftType(poolNftId, POOL());
|
424
514
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
425
515
|
}
|
426
516
|
|
@@ -435,6 +525,7 @@ contract ComponentService is
|
|
435
525
|
// TODO re-enable once role granting is stable and fixed
|
436
526
|
// restricted()
|
437
527
|
{
|
528
|
+
_checkNftType(poolNftId, POOL());
|
438
529
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
439
530
|
}
|
440
531
|
|
@@ -451,6 +542,7 @@ contract ComponentService is
|
|
451
542
|
// TODO re-enable once role granting is stable and fixed
|
452
543
|
// restricted()
|
453
544
|
{
|
545
|
+
_checkNftType(bundleNftId, BUNDLE());
|
454
546
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
455
547
|
}
|
456
548
|
|
@@ -465,6 +557,7 @@ contract ComponentService is
|
|
465
557
|
// TODO re-enable once role granting is stable and fixed
|
466
558
|
// restricted()
|
467
559
|
{
|
560
|
+
_checkNftType(bundleNftId, BUNDLE());
|
468
561
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
469
562
|
}
|
470
563
|
|
@@ -492,74 +585,68 @@ contract ComponentService is
|
|
492
585
|
}
|
493
586
|
}
|
494
587
|
|
495
|
-
/// @dev
|
588
|
+
/// @dev Registers the component represented by the provided address.
|
496
589
|
function _register(
|
497
590
|
address componentAddress, // address of component to register
|
498
|
-
ObjectType requiredType
|
499
|
-
RoleId requiredRole // role required for comonent owner for registration
|
591
|
+
ObjectType requiredType // required type for component for registration
|
500
592
|
)
|
501
593
|
internal
|
502
594
|
virtual
|
503
595
|
returns (
|
504
596
|
InstanceReader instanceReader,
|
597
|
+
InstanceAdmin instanceAdmin,
|
505
598
|
InstanceStore instanceStore,
|
599
|
+
NftId parentNftId,
|
506
600
|
NftId componentNftId
|
507
601
|
)
|
508
602
|
{
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
) = _getAndVerifyRegisterableComponent(
|
514
|
-
componentAddress,
|
515
|
-
requiredType,
|
516
|
-
requiredRole);
|
603
|
+
NftId instanceNftId;
|
604
|
+
IInstance instance;
|
605
|
+
IInstanceLinkedComponent component;
|
606
|
+
address initialOwner;
|
517
607
|
|
518
|
-
|
519
|
-
|
608
|
+
(
|
609
|
+
instanceNftId,
|
610
|
+
instance,
|
611
|
+
parentNftId,
|
520
612
|
component,
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
// setup initial component authorization
|
527
|
-
_instanceService.initializeAuthorization(
|
528
|
-
instance.getNftId(),
|
529
|
-
component);
|
613
|
+
initialOwner
|
614
|
+
) = ComponentServiceHelperLib.getAndVerifyRegisterableComponent(
|
615
|
+
getRegistry(),
|
616
|
+
componentAddress,
|
617
|
+
requiredType);
|
530
618
|
|
531
|
-
//
|
619
|
+
// get instance supporting contracts (as function return values)
|
532
620
|
instanceReader = instance.getInstanceReader();
|
621
|
+
instanceAdmin = instance.getInstanceAdmin();
|
533
622
|
instanceStore = instance.getInstanceStore();
|
534
623
|
|
535
|
-
|
536
|
-
|
624
|
+
// register with registry
|
625
|
+
if (requiredType == PRODUCT()) {
|
626
|
+
componentNftId = _registryService.registerProduct(
|
627
|
+
component, initialOwner).nftId;
|
628
|
+
} else {
|
629
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
630
|
+
component, requiredType, initialOwner).nftId;
|
631
|
+
}
|
632
|
+
|
633
|
+
// deploy and wire token handler
|
634
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
635
|
+
IERC20Metadata token = componentInfo.token;
|
636
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
637
|
+
address(token),
|
638
|
+
address(instanceAdmin.authority()),
|
639
|
+
componentInfo.wallet);
|
537
640
|
|
641
|
+
// register component with instance
|
538
642
|
instanceStore.createComponent(
|
539
|
-
|
643
|
+
componentNftId,
|
540
644
|
componentInfo);
|
541
645
|
|
542
|
-
//
|
543
|
-
|
544
|
-
|
646
|
+
// link component contract to nft id
|
647
|
+
component.linkToRegisteredNftId();
|
545
648
|
|
546
|
-
|
547
|
-
function _linkToProduct(
|
548
|
-
InstanceReader instanceReader,
|
549
|
-
InstanceStore instanceStore,
|
550
|
-
NftId componentNftId,
|
551
|
-
NftId productNftId
|
552
|
-
)
|
553
|
-
internal
|
554
|
-
{
|
555
|
-
// only link components that are registered
|
556
|
-
if(componentNftId.eqz()) {
|
557
|
-
return;
|
558
|
-
}
|
559
|
-
|
560
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
561
|
-
componentInfo.productNftId = productNftId;
|
562
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
649
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
563
650
|
}
|
564
651
|
|
565
652
|
|
@@ -578,12 +665,6 @@ contract ComponentService is
|
|
578
665
|
}
|
579
666
|
|
580
667
|
|
581
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
582
|
-
selectors = new bytes4[](1);
|
583
|
-
selectors[0] = selector;
|
584
|
-
}
|
585
|
-
|
586
|
-
|
587
668
|
function _getLinkedProductInfo(
|
588
669
|
InstanceReader instanceReader,
|
589
670
|
NftId componentNftId
|
@@ -595,56 +676,10 @@ contract ComponentService is
|
|
595
676
|
IComponents.ProductInfo memory info
|
596
677
|
)
|
597
678
|
{
|
598
|
-
productNftId =
|
679
|
+
productNftId = _getProductNftId(componentNftId);
|
599
680
|
info = instanceReader.getProductInfo(productNftId);
|
600
681
|
}
|
601
682
|
|
602
|
-
|
603
|
-
/// @dev based on the provided component address required type and role returns the component and related instance contract
|
604
|
-
/// the function reverts iff:
|
605
|
-
/// - the component has already been registered
|
606
|
-
/// - the component contract does not support IInstanceLinkedComponent
|
607
|
-
/// - the component type does not match with the required type
|
608
|
-
/// - the initial component owner misses the required role (with the instance access manager)
|
609
|
-
function _getAndVerifyRegisterableComponent(
|
610
|
-
address componentAddress,
|
611
|
-
ObjectType requiredType,
|
612
|
-
RoleId requiredRole
|
613
|
-
)
|
614
|
-
internal
|
615
|
-
view
|
616
|
-
returns (
|
617
|
-
IInstance instance,
|
618
|
-
IInstanceLinkedComponent component,
|
619
|
-
address owner
|
620
|
-
)
|
621
|
-
{
|
622
|
-
// check this is a component
|
623
|
-
component = IInstanceLinkedComponent(componentAddress);
|
624
|
-
if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
|
625
|
-
revert ErrorComponentServiceNotComponent(componentAddress);
|
626
|
-
}
|
627
|
-
|
628
|
-
// check component is of required type
|
629
|
-
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
630
|
-
if(info.objectType != requiredType) {
|
631
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
632
|
-
}
|
633
|
-
|
634
|
-
// check component has not already been registered
|
635
|
-
if (getRegistry().getNftId(componentAddress).gtz()) {
|
636
|
-
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
637
|
-
}
|
638
|
-
|
639
|
-
// check instance has assigned required role to inital owner
|
640
|
-
instance = _getInstance(info.parentNftId);
|
641
|
-
owner = info.initialOwner;
|
642
|
-
|
643
|
-
if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
|
644
|
-
revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
|
645
|
-
}
|
646
|
-
}
|
647
|
-
|
648
683
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
649
684
|
return COMPONENT();
|
650
685
|
}
|