@etherisc/gif-next 0.0.2-f7d1200-068 → 0.0.2-f7fa064-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 +157 -273
- 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 -239
- 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 +1519 -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 +1573 -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 +31 -86
- 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 +80 -245
- 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 +131 -247
- 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 -227
- 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 +102 -254
- 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 +172 -228
- 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 +53 -31
- 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 -241
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -374
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -125
- 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 -243
- 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 +282 -190
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -104
- 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 +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +144 -35
- 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 +231 -264
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -119
- 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 -243
- 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 +68 -201
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -299
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -128
- 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 +321 -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 -227
- 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 +288 -16
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -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 +167 -270
- 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 +100 -97
- 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 -65
- 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 +2 -23
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +43 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +75 -104
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +8 -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 +93 -50
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +11 -3
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -31
- package/contracts/pool/Pool.sol +53 -51
- package/contracts/pool/PoolService.sol +159 -174
- 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 +309 -121
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +21 -26
- 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 +309 -174
- 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 +36 -52
- package/contracts/shared/ComponentService.sol +246 -151
- 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 -3
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
- 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 +99 -22
- 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 +17 -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 +3 -2
- 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
@@ -5,36 +5,31 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
5
5
|
|
6
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
7
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
8
9
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
9
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
10
11
|
import {IComponentService} from "./IComponentService.sol";
|
11
12
|
import {IInstance} from "../instance/IInstance.sol";
|
12
13
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
14
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
16
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
15
17
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
19
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
20
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
21
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
22
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
20
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
21
24
|
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 {
|
25
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
26
|
+
import {RoleId} from "../type/RoleId.sol";
|
27
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
25
28
|
|
26
29
|
contract ComponentService is
|
27
30
|
ComponentVerifyingService,
|
28
31
|
IComponentService
|
29
32
|
{
|
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
33
|
|
39
34
|
bool private constant INCREASE = true;
|
40
35
|
bool private constant DECREASE = false;
|
@@ -42,6 +37,14 @@ contract ComponentService is
|
|
42
37
|
IRegistryService private _registryService;
|
43
38
|
IInstanceService private _instanceService;
|
44
39
|
|
40
|
+
modifier onlyComponent(address component) {
|
41
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
42
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
43
|
+
}
|
44
|
+
_;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
45
48
|
function _initialize(
|
46
49
|
address owner,
|
47
50
|
bytes memory data
|
@@ -50,21 +53,44 @@ contract ComponentService is
|
|
50
53
|
virtual override
|
51
54
|
initializer()
|
52
55
|
{
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
56
|
+
(
|
57
|
+
address registryAddress,
|
58
|
+
address authority
|
59
|
+
) = abi.decode(data, (address, address));
|
57
60
|
|
58
|
-
|
61
|
+
_initializeService(registryAddress, authority, owner);
|
59
62
|
|
60
63
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
61
64
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
65
|
|
63
|
-
|
66
|
+
_registerInterface(type(IComponentService).interfaceId);
|
64
67
|
}
|
65
68
|
|
66
69
|
//-------- component ----------------------------------------------------//
|
67
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
|
+
|
68
94
|
function setWallet(address newWallet) external virtual {
|
69
95
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
70
96
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
@@ -115,50 +141,41 @@ contract ComponentService is
|
|
115
141
|
}
|
116
142
|
}
|
117
143
|
|
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
144
|
// decrease fee counters by withdrawnAmount
|
127
145
|
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
128
146
|
|
129
147
|
// transfer amount to component owner
|
130
148
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
131
|
-
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
132
|
-
|
133
|
-
tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
|
149
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
150
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
134
151
|
}
|
135
152
|
|
136
153
|
|
137
154
|
//-------- product ------------------------------------------------------//
|
138
155
|
|
139
|
-
function registerProduct()
|
156
|
+
function registerProduct(address productAddress)
|
140
157
|
external
|
141
158
|
virtual
|
159
|
+
onlyComponent(productAddress)
|
160
|
+
returns (NftId productNftId)
|
142
161
|
{
|
143
|
-
address contractAddress = msg.sender;
|
144
|
-
|
145
162
|
// register/create component setup
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
// create
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
163
|
+
InstanceAdmin instanceAdmin;
|
164
|
+
InstanceStore instanceStore;
|
165
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
166
|
+
productAddress,
|
167
|
+
PRODUCT());
|
168
|
+
|
169
|
+
// get product
|
170
|
+
IProductComponent product = IProductComponent(productAddress);
|
171
|
+
|
172
|
+
// create info
|
173
|
+
instanceStore.createProduct(
|
174
|
+
productNftId,
|
175
|
+
product.getInitialProductInfo());
|
176
|
+
|
177
|
+
// authorize
|
178
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
162
179
|
}
|
163
180
|
|
164
181
|
|
@@ -203,6 +220,7 @@ contract ComponentService is
|
|
203
220
|
// TODO re-enable once role granting is stable and fixed
|
204
221
|
// restricted()
|
205
222
|
{
|
223
|
+
_checkNftType(productNftId, PRODUCT());
|
206
224
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
207
225
|
}
|
208
226
|
|
@@ -213,23 +231,43 @@ contract ComponentService is
|
|
213
231
|
// TODO re-enable once role granting is stable and fixed
|
214
232
|
// restricted()
|
215
233
|
{
|
234
|
+
_checkNftType(productNftId, PRODUCT());
|
216
235
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
217
236
|
}
|
218
237
|
|
219
238
|
//-------- distribution -------------------------------------------------//
|
220
239
|
|
221
240
|
/// @dev registers the sending component as a distribution component
|
222
|
-
function
|
223
|
-
|
241
|
+
function _registerDistribution(address distributioAddress)
|
242
|
+
internal
|
224
243
|
virtual
|
244
|
+
returns (NftId distributionNftId)
|
225
245
|
{
|
226
|
-
address contractAddress = msg.sender;
|
227
|
-
|
228
246
|
// register/create component info
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
247
|
+
InstanceReader instanceReader;
|
248
|
+
InstanceAdmin instanceAdmin;
|
249
|
+
InstanceStore instanceStore;
|
250
|
+
NftId productNftId;
|
251
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
252
|
+
distributioAddress,
|
253
|
+
DISTRIBUTION());
|
254
|
+
|
255
|
+
// check product is still expecting a distribution registration
|
256
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
257
|
+
if (!productInfo.hasDistribution) {
|
258
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
259
|
+
}
|
260
|
+
if (productInfo.distributionNftId.gtz()) {
|
261
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
262
|
+
}
|
263
|
+
|
264
|
+
// set distribution in product info
|
265
|
+
productInfo.distributionNftId = distributionNftId;
|
266
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
267
|
+
|
268
|
+
// authorize
|
269
|
+
instanceAdmin.initializeComponentAuthorization(
|
270
|
+
IInstanceLinkedComponent(distributioAddress));
|
233
271
|
}
|
234
272
|
|
235
273
|
|
@@ -276,6 +314,7 @@ contract ComponentService is
|
|
276
314
|
// TODO re-enable once role granting is stable and fixed
|
277
315
|
// restricted()
|
278
316
|
{
|
317
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
279
318
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
280
319
|
}
|
281
320
|
|
@@ -291,6 +330,7 @@ contract ComponentService is
|
|
291
330
|
// TODO re-enable once role granting is stable and fixed
|
292
331
|
// restricted()
|
293
332
|
{
|
333
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
294
334
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
295
335
|
}
|
296
336
|
|
@@ -307,6 +347,7 @@ contract ComponentService is
|
|
307
347
|
// TODO re-enable once role granting is stable and fixed
|
308
348
|
// restricted()
|
309
349
|
{
|
350
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
310
351
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
311
352
|
}
|
312
353
|
|
@@ -321,51 +362,81 @@ contract ComponentService is
|
|
321
362
|
// TODO re-enable once role granting is stable and fixed
|
322
363
|
// restricted()
|
323
364
|
{
|
365
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
324
366
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
325
367
|
}
|
326
368
|
|
327
369
|
//-------- oracle -------------------------------------------------------//
|
328
370
|
|
329
|
-
function
|
330
|
-
|
371
|
+
function _registerOracle(address oracleAddress)
|
372
|
+
internal
|
331
373
|
virtual
|
374
|
+
returns (NftId oracleNftId)
|
332
375
|
{
|
333
|
-
address contractAddress = msg.sender;
|
334
|
-
|
335
376
|
// register/create component setup
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
377
|
+
InstanceReader instanceReader;
|
378
|
+
InstanceAdmin instanceAdmin;
|
379
|
+
InstanceStore instanceStore;
|
380
|
+
NftId productNftId;
|
381
|
+
|
382
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
383
|
+
oracleAddress,
|
384
|
+
ORACLE());
|
385
|
+
|
386
|
+
// check product is still expecting an oracle registration
|
387
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
388
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
389
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
390
|
+
}
|
391
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
392
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
393
|
+
}
|
394
|
+
|
395
|
+
// update/add oracle to product info
|
396
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
397
|
+
productInfo.numberOfOracles++;
|
398
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
399
|
+
|
400
|
+
// authorize
|
401
|
+
instanceAdmin.initializeComponentAuthorization(
|
402
|
+
IInstanceLinkedComponent(oracleAddress));
|
344
403
|
}
|
345
404
|
|
346
405
|
//-------- pool ---------------------------------------------------------//
|
347
406
|
|
348
|
-
function
|
349
|
-
|
407
|
+
function _registerPool(address poolAddress)
|
408
|
+
internal
|
350
409
|
virtual
|
410
|
+
returns (NftId poolNftId)
|
351
411
|
{
|
352
|
-
address contractAddress = msg.sender;
|
353
|
-
|
354
412
|
// register/create component setup
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
413
|
+
InstanceReader instanceReader;
|
414
|
+
InstanceAdmin instanceAdmin;
|
415
|
+
InstanceStore instanceStore;
|
416
|
+
NftId productNftId;
|
417
|
+
|
418
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
419
|
+
poolAddress,
|
420
|
+
POOL());
|
421
|
+
|
422
|
+
// check product is still expecting a pool registration
|
423
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
424
|
+
if (productInfo.poolNftId.gtz()) {
|
425
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
426
|
+
}
|
363
427
|
|
364
428
|
// create info
|
429
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
365
430
|
instanceStore.createPool(
|
366
|
-
|
367
|
-
|
368
|
-
|
431
|
+
poolNftId,
|
432
|
+
pool.getInitialPoolInfo());
|
433
|
+
|
434
|
+
// update pool in product info
|
435
|
+
productInfo.poolNftId = poolNftId;
|
436
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
437
|
+
|
438
|
+
// authorize
|
439
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
369
440
|
}
|
370
441
|
|
371
442
|
|
@@ -420,6 +491,7 @@ contract ComponentService is
|
|
420
491
|
// TODO re-enable once role granting is stable and fixed
|
421
492
|
// restricted()
|
422
493
|
{
|
494
|
+
_checkNftType(poolNftId, POOL());
|
423
495
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
424
496
|
}
|
425
497
|
|
@@ -434,6 +506,7 @@ contract ComponentService is
|
|
434
506
|
// TODO re-enable once role granting is stable and fixed
|
435
507
|
// restricted()
|
436
508
|
{
|
509
|
+
_checkNftType(poolNftId, POOL());
|
437
510
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
438
511
|
}
|
439
512
|
|
@@ -450,6 +523,7 @@ contract ComponentService is
|
|
450
523
|
// TODO re-enable once role granting is stable and fixed
|
451
524
|
// restricted()
|
452
525
|
{
|
526
|
+
_checkNftType(bundleNftId, BUNDLE());
|
453
527
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
454
528
|
}
|
455
529
|
|
@@ -464,6 +538,7 @@ contract ComponentService is
|
|
464
538
|
// TODO re-enable once role granting is stable and fixed
|
465
539
|
// restricted()
|
466
540
|
{
|
541
|
+
_checkNftType(bundleNftId, BUNDLE());
|
467
542
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
468
543
|
}
|
469
544
|
|
@@ -491,74 +566,67 @@ contract ComponentService is
|
|
491
566
|
}
|
492
567
|
}
|
493
568
|
|
494
|
-
/// @dev
|
569
|
+
/// @dev Registers the component represented by the provided address.
|
495
570
|
function _register(
|
496
571
|
address componentAddress, // address of component to register
|
497
|
-
ObjectType requiredType
|
498
|
-
RoleId requiredRole // role required for comonent owner for registration
|
572
|
+
ObjectType requiredType // required type for component for registration
|
499
573
|
)
|
500
574
|
internal
|
501
575
|
virtual
|
502
576
|
returns (
|
503
577
|
InstanceReader instanceReader,
|
578
|
+
InstanceAdmin instanceAdmin,
|
504
579
|
InstanceStore instanceStore,
|
580
|
+
NftId parentNftId,
|
505
581
|
NftId componentNftId
|
506
582
|
)
|
507
583
|
{
|
584
|
+
NftId instanceNftId;
|
585
|
+
IInstance instance;
|
586
|
+
IInstanceLinkedComponent component;
|
587
|
+
address initialOwner;
|
588
|
+
|
508
589
|
(
|
509
|
-
|
510
|
-
|
511
|
-
|
590
|
+
instanceNftId,
|
591
|
+
instance,
|
592
|
+
parentNftId,
|
593
|
+
component,
|
594
|
+
initialOwner
|
512
595
|
) = _getAndVerifyRegisterableComponent(
|
596
|
+
getRegistry(),
|
513
597
|
componentAddress,
|
514
|
-
requiredType
|
515
|
-
requiredRole);
|
516
|
-
|
517
|
-
// register component with registry
|
518
|
-
componentNftId = _registryService.registerComponent(
|
519
|
-
component,
|
520
|
-
requiredType,
|
521
|
-
owner).nftId;
|
522
|
-
|
523
|
-
component.linkToRegisteredNftId();
|
598
|
+
requiredType);
|
524
599
|
|
525
|
-
//
|
526
|
-
_instanceService.initializeAuthorization(
|
527
|
-
instance.getNftId(),
|
528
|
-
component);
|
529
|
-
|
530
|
-
// save amended component info with instance
|
600
|
+
// get instance supporting contracts (as function return values)
|
531
601
|
instanceReader = instance.getInstanceReader();
|
602
|
+
instanceAdmin = instance.getInstanceAdmin();
|
532
603
|
instanceStore = instance.getInstanceStore();
|
533
604
|
|
534
|
-
|
535
|
-
|
605
|
+
// register with registry
|
606
|
+
if (requiredType == PRODUCT()) {
|
607
|
+
componentNftId = _registryService.registerProduct(
|
608
|
+
component, initialOwner).nftId;
|
609
|
+
} else {
|
610
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
611
|
+
component, requiredType, initialOwner).nftId;
|
612
|
+
}
|
613
|
+
|
614
|
+
// deploy and wire token handler
|
615
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
616
|
+
IERC20Metadata token = componentInfo.token;
|
617
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
618
|
+
address(token),
|
619
|
+
address(instanceAdmin.authority()));
|
536
620
|
|
621
|
+
// register component with instance
|
537
622
|
instanceStore.createComponent(
|
538
|
-
|
623
|
+
componentNftId,
|
539
624
|
componentInfo);
|
540
625
|
|
541
|
-
//
|
542
|
-
|
543
|
-
|
626
|
+
// link component contract to nft id
|
627
|
+
component.linkToRegisteredNftId();
|
544
628
|
|
545
|
-
|
546
|
-
function _linkToProduct(
|
547
|
-
InstanceReader instanceReader,
|
548
|
-
InstanceStore instanceStore,
|
549
|
-
NftId componentNftId,
|
550
|
-
NftId productNftId
|
551
|
-
)
|
552
|
-
internal
|
553
|
-
{
|
554
|
-
// only link components that are registered
|
555
|
-
if(componentNftId.eqz()) {
|
556
|
-
return;
|
557
|
-
}
|
558
|
-
|
559
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
560
|
-
componentInfo.productNftId = productNftId;
|
561
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
629
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
562
630
|
}
|
563
631
|
|
564
632
|
|
@@ -577,12 +645,6 @@ contract ComponentService is
|
|
577
645
|
}
|
578
646
|
|
579
647
|
|
580
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
581
|
-
selectors = new bytes4[](1);
|
582
|
-
selectors[0] = selector;
|
583
|
-
}
|
584
|
-
|
585
|
-
|
586
648
|
function _getLinkedProductInfo(
|
587
649
|
InstanceReader instanceReader,
|
588
650
|
NftId componentNftId
|
@@ -594,56 +656,89 @@ contract ComponentService is
|
|
594
656
|
IComponents.ProductInfo memory info
|
595
657
|
)
|
596
658
|
{
|
597
|
-
productNftId =
|
659
|
+
productNftId = _getProductNftId(componentNftId);
|
598
660
|
info = instanceReader.getProductInfo(productNftId);
|
599
661
|
}
|
600
662
|
|
601
663
|
|
602
|
-
/// @dev
|
603
|
-
///
|
604
|
-
/// - the
|
664
|
+
/// @dev Based on the provided component address required type the component
|
665
|
+
/// and related instance contract this function reverts iff:
|
666
|
+
/// - the sender is not registered
|
605
667
|
/// - the component contract does not support IInstanceLinkedComponent
|
606
668
|
/// - the component type does not match with the required type
|
607
|
-
/// - the
|
669
|
+
/// - the component has already been registered
|
608
670
|
function _getAndVerifyRegisterableComponent(
|
671
|
+
IRegistry registry,
|
609
672
|
address componentAddress,
|
610
|
-
ObjectType requiredType
|
611
|
-
RoleId requiredRole
|
673
|
+
ObjectType requiredType
|
612
674
|
)
|
613
675
|
internal
|
614
676
|
view
|
615
677
|
returns (
|
678
|
+
NftId instanceNftId,
|
616
679
|
IInstance instance,
|
680
|
+
NftId parentNftId,
|
617
681
|
IInstanceLinkedComponent component,
|
618
|
-
address
|
682
|
+
address initialOwner
|
619
683
|
)
|
620
684
|
{
|
621
|
-
// check
|
622
|
-
|
623
|
-
if(
|
624
|
-
revert
|
685
|
+
// check sender (instance or product) is registered
|
686
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
687
|
+
if (senderInfo.nftId.eqz()) {
|
688
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
625
689
|
}
|
626
690
|
|
691
|
+
// the sender is the parent of the component to be registered
|
692
|
+
// an instance caller wanting to register a product - or -
|
693
|
+
// a product caller wantint go register a distribution, oracle or pool
|
694
|
+
parentNftId = senderInfo.nftId;
|
695
|
+
|
627
696
|
// check component is of required type
|
697
|
+
component = IInstanceLinkedComponent(componentAddress);
|
628
698
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
629
699
|
if(info.objectType != requiredType) {
|
630
700
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
631
701
|
}
|
632
702
|
|
633
703
|
// check component has not already been registered
|
634
|
-
if (getRegistry().
|
704
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
635
705
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
636
706
|
}
|
637
707
|
|
638
|
-
// check
|
639
|
-
|
640
|
-
|
708
|
+
// check release matches
|
709
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
710
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
711
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
712
|
+
}
|
641
713
|
|
642
|
-
|
643
|
-
|
714
|
+
// check component belongs to same product cluster
|
715
|
+
// parent of product must be instance, parent of other componet types must be product
|
716
|
+
if (info.parentNftId != senderInfo.nftId) {
|
717
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
644
718
|
}
|
719
|
+
|
720
|
+
// verify parent is registered instance
|
721
|
+
if (requiredType == PRODUCT()) {
|
722
|
+
if (senderInfo.objectType != INSTANCE()) {
|
723
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
724
|
+
}
|
725
|
+
|
726
|
+
instanceNftId = senderInfo.nftId;
|
727
|
+
// verify parent is registered product
|
728
|
+
} else {
|
729
|
+
if (senderInfo.objectType != PRODUCT()) {
|
730
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
731
|
+
}
|
732
|
+
|
733
|
+
instanceNftId = senderInfo.parentNftId;
|
734
|
+
}
|
735
|
+
|
736
|
+
// get initial owner and instance
|
737
|
+
initialOwner = info.initialOwner;
|
738
|
+
instance = _getInstance(registry, instanceNftId);
|
645
739
|
}
|
646
740
|
|
741
|
+
|
647
742
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
648
743
|
return COMPONENT();
|
649
744
|
}
|
@@ -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
|
}
|