@etherisc/gif-next 0.0.2-f36fd21-685 → 0.0.2-f47f21f-178
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 +19 -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 +174 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -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 +2077 -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 +459 -131
- 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 +330 -233
- 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/mock/Dip.sol/Dip.json +2 -2
- 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 +109 -330
- 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 +359 -194
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- 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 +310 -118
- 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 +433 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- 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 +355 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
- 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 -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 +330 -11
- 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 +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/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +50 -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 +23 -4
- 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 +83 -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 +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +418 -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 +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -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/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -10
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- 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 +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +5 -3
- package/contracts/pool/BundleService.sol +213 -61
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +60 -53
- package/contracts/pool/PoolService.sol +250 -140
- 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 +34 -34
- 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 +394 -196
- 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 +125 -71
- 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 +40 -55
- package/contracts/shared/ComponentService.sol +235 -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 +10 -6
- package/contracts/shared/IComponentService.sol +25 -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 +100 -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 +11 -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/Blocknumber.sol +7 -1
- 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 +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -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
@@ -5,14 +5,17 @@ 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";
|
@@ -20,21 +23,13 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
20
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
21
24
|
import {NftId} from "../type/NftId.sol";
|
22
25
|
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
23
|
-
import {RoleId
|
24
|
-
import {
|
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,51 +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
|
-
|
132
|
-
tokenHandler.
|
133
|
-
|
134
|
-
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
149
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
150
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
135
151
|
}
|
136
152
|
|
137
153
|
|
138
154
|
//-------- product ------------------------------------------------------//
|
139
155
|
|
140
|
-
function registerProduct()
|
156
|
+
function registerProduct(address productAddress)
|
141
157
|
external
|
142
158
|
virtual
|
159
|
+
onlyComponent(productAddress)
|
160
|
+
returns (NftId productNftId)
|
143
161
|
{
|
144
|
-
address contractAddress = msg.sender;
|
145
|
-
|
146
162
|
// register/create component setup
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
// create
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
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);
|
163
179
|
}
|
164
180
|
|
165
181
|
|
@@ -220,17 +236,36 @@ contract ComponentService is
|
|
220
236
|
//-------- distribution -------------------------------------------------//
|
221
237
|
|
222
238
|
/// @dev registers the sending component as a distribution component
|
223
|
-
function
|
224
|
-
|
239
|
+
function _registerDistribution(address distributioAddress)
|
240
|
+
internal
|
225
241
|
virtual
|
242
|
+
returns (NftId distributionNftId)
|
226
243
|
{
|
227
|
-
address contractAddress = msg.sender;
|
228
|
-
|
229
244
|
// register/create component info
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
245
|
+
InstanceReader instanceReader;
|
246
|
+
InstanceAdmin instanceAdmin;
|
247
|
+
InstanceStore instanceStore;
|
248
|
+
NftId productNftId;
|
249
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
250
|
+
distributioAddress,
|
251
|
+
DISTRIBUTION());
|
252
|
+
|
253
|
+
// check product is still expecting a distribution registration
|
254
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
255
|
+
if (!productInfo.hasDistribution) {
|
256
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
257
|
+
}
|
258
|
+
if (productInfo.distributionNftId.gtz()) {
|
259
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
260
|
+
}
|
261
|
+
|
262
|
+
// set distribution in product info
|
263
|
+
productInfo.distributionNftId = distributionNftId;
|
264
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
265
|
+
|
266
|
+
// authorize
|
267
|
+
instanceAdmin.initializeComponentAuthorization(
|
268
|
+
IInstanceLinkedComponent(distributioAddress));
|
234
269
|
}
|
235
270
|
|
236
271
|
|
@@ -327,46 +362,75 @@ contract ComponentService is
|
|
327
362
|
|
328
363
|
//-------- oracle -------------------------------------------------------//
|
329
364
|
|
330
|
-
function
|
331
|
-
|
365
|
+
function _registerOracle(address oracleAddress)
|
366
|
+
internal
|
332
367
|
virtual
|
368
|
+
returns (NftId oracleNftId)
|
333
369
|
{
|
334
|
-
address contractAddress = msg.sender;
|
335
|
-
|
336
370
|
// register/create component setup
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
371
|
+
InstanceReader instanceReader;
|
372
|
+
InstanceAdmin instanceAdmin;
|
373
|
+
InstanceStore instanceStore;
|
374
|
+
NftId productNftId;
|
375
|
+
|
376
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
377
|
+
oracleAddress,
|
378
|
+
ORACLE());
|
379
|
+
|
380
|
+
// check product is still expecting an oracle registration
|
381
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
382
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
383
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
384
|
+
}
|
385
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
386
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
387
|
+
}
|
388
|
+
|
389
|
+
// update/add oracle to product info
|
390
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
391
|
+
productInfo.numberOfOracles++;
|
392
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
393
|
+
|
394
|
+
// authorize
|
395
|
+
instanceAdmin.initializeComponentAuthorization(
|
396
|
+
IInstanceLinkedComponent(oracleAddress));
|
345
397
|
}
|
346
398
|
|
347
399
|
//-------- pool ---------------------------------------------------------//
|
348
400
|
|
349
|
-
function
|
350
|
-
|
401
|
+
function _registerPool(address poolAddress)
|
402
|
+
internal
|
351
403
|
virtual
|
404
|
+
returns (NftId poolNftId)
|
352
405
|
{
|
353
|
-
address contractAddress = msg.sender;
|
354
|
-
|
355
406
|
// register/create component setup
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
407
|
+
InstanceReader instanceReader;
|
408
|
+
InstanceAdmin instanceAdmin;
|
409
|
+
InstanceStore instanceStore;
|
410
|
+
NftId productNftId;
|
411
|
+
|
412
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
413
|
+
poolAddress,
|
414
|
+
POOL());
|
415
|
+
|
416
|
+
// check product is still expecting a pool registration
|
417
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
418
|
+
if (productInfo.poolNftId.gtz()) {
|
419
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
420
|
+
}
|
364
421
|
|
365
422
|
// create info
|
423
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
366
424
|
instanceStore.createPool(
|
367
|
-
|
368
|
-
|
369
|
-
|
425
|
+
poolNftId,
|
426
|
+
pool.getInitialPoolInfo());
|
427
|
+
|
428
|
+
// update pool in product info
|
429
|
+
productInfo.poolNftId = poolNftId;
|
430
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
431
|
+
|
432
|
+
// authorize
|
433
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
370
434
|
}
|
371
435
|
|
372
436
|
|
@@ -492,74 +556,67 @@ contract ComponentService is
|
|
492
556
|
}
|
493
557
|
}
|
494
558
|
|
495
|
-
/// @dev
|
559
|
+
/// @dev Registers the component represented by the provided address.
|
496
560
|
function _register(
|
497
561
|
address componentAddress, // address of component to register
|
498
|
-
ObjectType requiredType
|
499
|
-
RoleId requiredRole // role required for comonent owner for registration
|
562
|
+
ObjectType requiredType // required type for component for registration
|
500
563
|
)
|
501
564
|
internal
|
502
565
|
virtual
|
503
566
|
returns (
|
504
567
|
InstanceReader instanceReader,
|
568
|
+
InstanceAdmin instanceAdmin,
|
505
569
|
InstanceStore instanceStore,
|
570
|
+
NftId parentNftId,
|
506
571
|
NftId componentNftId
|
507
572
|
)
|
508
573
|
{
|
574
|
+
NftId instanceNftId;
|
575
|
+
IInstance instance;
|
576
|
+
IInstanceLinkedComponent component;
|
577
|
+
address initialOwner;
|
578
|
+
|
509
579
|
(
|
510
|
-
|
511
|
-
|
512
|
-
|
580
|
+
instanceNftId,
|
581
|
+
instance,
|
582
|
+
parentNftId,
|
583
|
+
component,
|
584
|
+
initialOwner
|
513
585
|
) = _getAndVerifyRegisterableComponent(
|
586
|
+
getRegistry(),
|
514
587
|
componentAddress,
|
515
|
-
requiredType
|
516
|
-
requiredRole);
|
588
|
+
requiredType);
|
517
589
|
|
518
|
-
//
|
519
|
-
componentNftId = _registryService.registerComponent(
|
520
|
-
component,
|
521
|
-
requiredType,
|
522
|
-
owner).nftId;
|
523
|
-
|
524
|
-
component.linkToRegisteredNftId();
|
525
|
-
|
526
|
-
// setup initial component authorization
|
527
|
-
_instanceService.initializeAuthorization(
|
528
|
-
instance.getNftId(),
|
529
|
-
component);
|
530
|
-
|
531
|
-
// save amended component info with instance
|
590
|
+
// get instance supporting contracts (as function return values)
|
532
591
|
instanceReader = instance.getInstanceReader();
|
592
|
+
instanceAdmin = instance.getInstanceAdmin();
|
533
593
|
instanceStore = instance.getInstanceStore();
|
534
594
|
|
535
|
-
|
536
|
-
|
595
|
+
// register with registry
|
596
|
+
if (requiredType == PRODUCT()) {
|
597
|
+
componentNftId = _registryService.registerProduct(
|
598
|
+
component, initialOwner).nftId;
|
599
|
+
} else {
|
600
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
601
|
+
component, requiredType, initialOwner).nftId;
|
602
|
+
}
|
603
|
+
|
604
|
+
// deploy and wire token handler
|
605
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
606
|
+
IERC20Metadata token = componentInfo.token;
|
607
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
608
|
+
address(token),
|
609
|
+
address(instanceAdmin.authority()));
|
537
610
|
|
611
|
+
// register component with instance
|
538
612
|
instanceStore.createComponent(
|
539
|
-
|
613
|
+
componentNftId,
|
540
614
|
componentInfo);
|
541
615
|
|
542
|
-
//
|
543
|
-
|
544
|
-
|
616
|
+
// link component contract to nft id
|
617
|
+
component.linkToRegisteredNftId();
|
545
618
|
|
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());
|
619
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
563
620
|
}
|
564
621
|
|
565
622
|
|
@@ -578,12 +635,6 @@ contract ComponentService is
|
|
578
635
|
}
|
579
636
|
|
580
637
|
|
581
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
582
|
-
selectors = new bytes4[](1);
|
583
|
-
selectors[0] = selector;
|
584
|
-
}
|
585
|
-
|
586
|
-
|
587
638
|
function _getLinkedProductInfo(
|
588
639
|
InstanceReader instanceReader,
|
589
640
|
NftId componentNftId
|
@@ -595,56 +646,89 @@ contract ComponentService is
|
|
595
646
|
IComponents.ProductInfo memory info
|
596
647
|
)
|
597
648
|
{
|
598
|
-
productNftId =
|
649
|
+
productNftId = _getProductNftId(componentNftId);
|
599
650
|
info = instanceReader.getProductInfo(productNftId);
|
600
651
|
}
|
601
652
|
|
602
653
|
|
603
|
-
/// @dev
|
604
|
-
///
|
605
|
-
/// - the
|
654
|
+
/// @dev Based on the provided component address required type the component
|
655
|
+
/// and related instance contract this function reverts iff:
|
656
|
+
/// - the sender is not registered
|
606
657
|
/// - the component contract does not support IInstanceLinkedComponent
|
607
658
|
/// - the component type does not match with the required type
|
608
|
-
/// - the
|
659
|
+
/// - the component has already been registered
|
609
660
|
function _getAndVerifyRegisterableComponent(
|
661
|
+
IRegistry registry,
|
610
662
|
address componentAddress,
|
611
|
-
ObjectType requiredType
|
612
|
-
RoleId requiredRole
|
663
|
+
ObjectType requiredType
|
613
664
|
)
|
614
665
|
internal
|
615
666
|
view
|
616
667
|
returns (
|
668
|
+
NftId instanceNftId,
|
617
669
|
IInstance instance,
|
670
|
+
NftId parentNftId,
|
618
671
|
IInstanceLinkedComponent component,
|
619
|
-
address
|
672
|
+
address initialOwner
|
620
673
|
)
|
621
674
|
{
|
622
|
-
// check
|
623
|
-
|
624
|
-
if(
|
625
|
-
revert
|
675
|
+
// check sender (instance or product) is registered
|
676
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
677
|
+
if (senderInfo.nftId.eqz()) {
|
678
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
626
679
|
}
|
627
680
|
|
681
|
+
// the sender is the parent of the component to be registered
|
682
|
+
// an instance caller wanting to register a product - or -
|
683
|
+
// a product caller wantint go register a distribution, oracle or pool
|
684
|
+
parentNftId = senderInfo.nftId;
|
685
|
+
|
628
686
|
// check component is of required type
|
687
|
+
component = IInstanceLinkedComponent(componentAddress);
|
629
688
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
630
689
|
if(info.objectType != requiredType) {
|
631
690
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
632
691
|
}
|
633
692
|
|
634
693
|
// check component has not already been registered
|
635
|
-
if (getRegistry().
|
694
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
636
695
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
637
696
|
}
|
638
697
|
|
639
|
-
// check
|
640
|
-
|
641
|
-
|
698
|
+
// check release matches
|
699
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
700
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
701
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
702
|
+
}
|
703
|
+
|
704
|
+
// check component belongs to same product cluster
|
705
|
+
// parent of product must be instance, parent of other componet types must be product
|
706
|
+
if (info.parentNftId != senderInfo.nftId) {
|
707
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
708
|
+
}
|
709
|
+
|
710
|
+
// verify parent is registered instance
|
711
|
+
if (requiredType == PRODUCT()) {
|
712
|
+
if (senderInfo.objectType != INSTANCE()) {
|
713
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
714
|
+
}
|
715
|
+
|
716
|
+
instanceNftId = senderInfo.nftId;
|
717
|
+
// verify parent is registered product
|
718
|
+
} else {
|
719
|
+
if (senderInfo.objectType != PRODUCT()) {
|
720
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
721
|
+
}
|
642
722
|
|
643
|
-
|
644
|
-
revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
|
723
|
+
instanceNftId = senderInfo.parentNftId;
|
645
724
|
}
|
725
|
+
|
726
|
+
// get initial owner and instance
|
727
|
+
initialOwner = info.initialOwner;
|
728
|
+
instance = _getInstance(registry, instanceNftId);
|
646
729
|
}
|
647
730
|
|
731
|
+
|
648
732
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
649
733
|
return COMPONENT();
|
650
734
|
}
|
@@ -11,15 +11,18 @@ contract ComponentServiceManager is ProxyManager {
|
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
|
-
address
|
14
|
+
address authority,
|
15
|
+
address registry,
|
16
|
+
bytes32 salt
|
15
17
|
)
|
16
|
-
ProxyManager(registryAddress)
|
17
18
|
{
|
18
19
|
ComponentService svc = new ComponentService();
|
19
|
-
bytes memory data = abi.encode(
|
20
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
21
23
|
address(svc),
|
22
|
-
data
|
24
|
+
data,
|
25
|
+
salt);
|
23
26
|
|
24
27
|
_componentService = ComponentService(address(versionable));
|
25
28
|
}
|
@@ -12,7 +12,6 @@ import {Service} from "../shared/Service.sol";
|
|
12
12
|
abstract contract ComponentVerifyingService is
|
13
13
|
Service
|
14
14
|
{
|
15
|
-
|
16
15
|
error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
|
17
16
|
error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
|
18
17
|
|
@@ -32,7 +31,7 @@ abstract contract ComponentVerifyingService is
|
|
32
31
|
IInstance instance
|
33
32
|
)
|
34
33
|
{
|
35
|
-
componentNftId = getRegistry().
|
34
|
+
componentNftId = getRegistry().getNftIdForAddress(msg.sender);
|
36
35
|
(componentInfo, instance) = _getAndVerifyComponentInfo(
|
37
36
|
componentNftId,
|
38
37
|
expectedType,
|
@@ -83,7 +82,7 @@ abstract contract ComponentVerifyingService is
|
|
83
82
|
}
|
84
83
|
}
|
85
84
|
|
86
|
-
instance =
|
85
|
+
instance = _getInstanceForComponent(registry, info);
|
87
86
|
|
88
87
|
// ensure component is not locked
|
89
88
|
if (onlyActive) {
|
@@ -94,24 +93,34 @@ abstract contract ComponentVerifyingService is
|
|
94
93
|
}
|
95
94
|
|
96
95
|
|
97
|
-
|
98
|
-
function _getProductNftId(
|
99
|
-
InstanceReader instanceReader,
|
100
|
-
NftId componentNftId
|
101
|
-
)
|
96
|
+
function _getInstanceForComponent(IRegistry registry, IRegistry.ObjectInfo memory componentInfo)
|
102
97
|
internal
|
103
|
-
virtual
|
104
98
|
view
|
105
|
-
returns (
|
99
|
+
returns (IInstance instance)
|
106
100
|
{
|
107
|
-
|
101
|
+
// parent of product is instance
|
102
|
+
if (componentInfo.objectType == PRODUCT()) {
|
103
|
+
instance = _getInstance(registry, componentInfo.parentNftId);
|
104
|
+
// parent of other types is product
|
105
|
+
} else {
|
106
|
+
instance = _getInstance(
|
107
|
+
registry,
|
108
|
+
registry.getObjectInfo(
|
109
|
+
componentInfo.parentNftId).parentNftId);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
/// @dev returns the product nft id from the registry.
|
115
|
+
/// assumes the component nft id is valid and represents a product linked component.
|
116
|
+
function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
|
117
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
108
118
|
}
|
109
119
|
|
110
120
|
|
111
121
|
/// @dev returns an IInstance contract reference for the specified instance nft id
|
112
|
-
function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
|
122
|
+
function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
|
113
123
|
return IInstance(
|
114
|
-
|
115
|
-
instanceNftId).objectAddress);
|
124
|
+
registry.getObjectAddress(instanceNftId));
|
116
125
|
}
|
117
126
|
}
|