@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71cf987-554
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 +121 -70
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +124 -5
- 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 -37
- 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/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 +188 -290
- 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 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +248 -164
- 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 +85 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -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 -235
- 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 +170 -226
- 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 -0
- 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 +232 -131
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -222
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +300 -319
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +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 +280 -235
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -112
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +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 +242 -295
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -131
- 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 +289 -32
- 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 +495 -93
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +219 -166
- 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/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1696 -0
- 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 +377 -235
- 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 +341 -324
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -132
- 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 +130 -120
- package/contracts/authorization/AccessManagerCloneable.sol +67 -3
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -4
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- 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 +82 -50
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +102 -73
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +33 -88
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +92 -36
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +10 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -29
- package/contracts/pool/Pool.sol +53 -46
- package/contracts/pool/PoolService.sol +156 -136
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +22 -13
- 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 +310 -115
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +16 -20
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
- package/contracts/product/PolicyService.sol +220 -129
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +49 -53
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +108 -66
- 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 +57 -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 +147 -179
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseAdmin.sol +248 -0
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +223 -203
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +36 -52
- package/contracts/shared/ComponentService.sol +245 -140
- 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 +2 -11
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
- 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
- package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,39 +1,35 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
7
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
8
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
6
9
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
7
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
11
|
import {IComponentService} from "./IComponentService.sol";
|
9
12
|
import {IInstance} from "../instance/IInstance.sol";
|
10
13
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
14
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
16
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
17
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
19
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
20
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
16
21
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
22
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
24
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {RoleId
|
22
|
-
import {
|
23
|
-
import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
|
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";
|
24
28
|
|
25
29
|
contract ComponentService is
|
26
30
|
ComponentVerifyingService,
|
27
31
|
IComponentService
|
28
32
|
{
|
29
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
30
|
-
error ErrorComponentServiceNotComponent(address component);
|
31
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
32
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
33
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
34
|
-
error ErrorComponentServiceComponentLocked(address component);
|
35
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
36
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
37
33
|
|
38
34
|
bool private constant INCREASE = true;
|
39
35
|
bool private constant DECREASE = false;
|
@@ -41,6 +37,14 @@ contract ComponentService is
|
|
41
37
|
IRegistryService private _registryService;
|
42
38
|
IInstanceService private _instanceService;
|
43
39
|
|
40
|
+
modifier onlyComponent(address component) {
|
41
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
42
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
43
|
+
}
|
44
|
+
_;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
44
48
|
function _initialize(
|
45
49
|
address owner,
|
46
50
|
bytes memory data
|
@@ -49,21 +53,44 @@ contract ComponentService is
|
|
49
53
|
virtual override
|
50
54
|
initializer()
|
51
55
|
{
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
+
(
|
57
|
+
address registryAddress,
|
58
|
+
address authority
|
59
|
+
) = abi.decode(data, (address, address));
|
56
60
|
|
57
|
-
|
61
|
+
_initializeService(registryAddress, authority, owner);
|
58
62
|
|
59
63
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
60
64
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
61
65
|
|
62
|
-
|
66
|
+
_registerInterface(type(IComponentService).interfaceId);
|
63
67
|
}
|
64
68
|
|
65
69
|
//-------- component ----------------------------------------------------//
|
66
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
|
+
|
67
94
|
function setWallet(address newWallet) external virtual {
|
68
95
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
69
96
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
@@ -120,35 +147,35 @@ contract ComponentService is
|
|
120
147
|
// transfer amount to component owner
|
121
148
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
122
149
|
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
123
|
-
|
150
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
124
151
|
}
|
125
152
|
|
126
153
|
|
127
154
|
//-------- product ------------------------------------------------------//
|
128
155
|
|
129
|
-
function registerProduct()
|
156
|
+
function registerProduct(address productAddress)
|
130
157
|
external
|
131
158
|
virtual
|
159
|
+
onlyComponent(productAddress)
|
160
|
+
returns (NftId productNftId)
|
132
161
|
{
|
133
|
-
address contractAddress = msg.sender;
|
134
|
-
|
135
162
|
// register/create component setup
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
// create product info
|
146
|
-
IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
|
147
|
-
instanceStore.createProduct(productNftId, productInfo);
|
163
|
+
InstanceAdmin instanceAdmin;
|
164
|
+
InstanceStore instanceStore;
|
165
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
166
|
+
productAddress,
|
167
|
+
PRODUCT());
|
168
|
+
|
169
|
+
// get product
|
170
|
+
IProductComponent product = IProductComponent(productAddress);
|
148
171
|
|
149
|
-
//
|
150
|
-
|
151
|
-
|
172
|
+
// create info
|
173
|
+
instanceStore.createProduct(
|
174
|
+
productNftId,
|
175
|
+
product.getInitialProductInfo());
|
176
|
+
|
177
|
+
// authorize
|
178
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
152
179
|
}
|
153
180
|
|
154
181
|
|
@@ -193,6 +220,7 @@ contract ComponentService is
|
|
193
220
|
// TODO re-enable once role granting is stable and fixed
|
194
221
|
// restricted()
|
195
222
|
{
|
223
|
+
_checkNftType(productNftId, PRODUCT());
|
196
224
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
197
225
|
}
|
198
226
|
|
@@ -203,23 +231,43 @@ contract ComponentService is
|
|
203
231
|
// TODO re-enable once role granting is stable and fixed
|
204
232
|
// restricted()
|
205
233
|
{
|
234
|
+
_checkNftType(productNftId, PRODUCT());
|
206
235
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
207
236
|
}
|
208
237
|
|
209
238
|
//-------- distribution -------------------------------------------------//
|
210
239
|
|
211
240
|
/// @dev registers the sending component as a distribution component
|
212
|
-
function
|
213
|
-
|
241
|
+
function _registerDistribution(address distributioAddress)
|
242
|
+
internal
|
214
243
|
virtual
|
244
|
+
returns (NftId distributionNftId)
|
215
245
|
{
|
216
|
-
address contractAddress = msg.sender;
|
217
|
-
|
218
246
|
// register/create component info
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
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));
|
223
271
|
}
|
224
272
|
|
225
273
|
|
@@ -266,6 +314,7 @@ contract ComponentService is
|
|
266
314
|
// TODO re-enable once role granting is stable and fixed
|
267
315
|
// restricted()
|
268
316
|
{
|
317
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
269
318
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
270
319
|
}
|
271
320
|
|
@@ -281,6 +330,7 @@ contract ComponentService is
|
|
281
330
|
// TODO re-enable once role granting is stable and fixed
|
282
331
|
// restricted()
|
283
332
|
{
|
333
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
284
334
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
285
335
|
}
|
286
336
|
|
@@ -297,6 +347,7 @@ contract ComponentService is
|
|
297
347
|
// TODO re-enable once role granting is stable and fixed
|
298
348
|
// restricted()
|
299
349
|
{
|
350
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
300
351
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
301
352
|
}
|
302
353
|
|
@@ -311,51 +362,81 @@ contract ComponentService is
|
|
311
362
|
// TODO re-enable once role granting is stable and fixed
|
312
363
|
// restricted()
|
313
364
|
{
|
365
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
314
366
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
315
367
|
}
|
316
368
|
|
317
369
|
//-------- oracle -------------------------------------------------------//
|
318
370
|
|
319
|
-
function
|
320
|
-
|
371
|
+
function _registerOracle(address oracleAddress)
|
372
|
+
internal
|
321
373
|
virtual
|
374
|
+
returns (NftId oracleNftId)
|
322
375
|
{
|
323
|
-
address contractAddress = msg.sender;
|
324
|
-
|
325
376
|
// register/create component setup
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
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));
|
334
403
|
}
|
335
404
|
|
336
405
|
//-------- pool ---------------------------------------------------------//
|
337
406
|
|
338
|
-
function
|
339
|
-
|
407
|
+
function _registerPool(address poolAddress)
|
408
|
+
internal
|
340
409
|
virtual
|
410
|
+
returns (NftId poolNftId)
|
341
411
|
{
|
342
|
-
address contractAddress = msg.sender;
|
343
|
-
|
344
412
|
// register/create component setup
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
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
|
+
}
|
353
427
|
|
354
428
|
// create info
|
429
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
355
430
|
instanceStore.createPool(
|
356
|
-
|
357
|
-
|
358
|
-
|
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);
|
359
440
|
}
|
360
441
|
|
361
442
|
|
@@ -410,6 +491,7 @@ contract ComponentService is
|
|
410
491
|
// TODO re-enable once role granting is stable and fixed
|
411
492
|
// restricted()
|
412
493
|
{
|
494
|
+
_checkNftType(poolNftId, POOL());
|
413
495
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
414
496
|
}
|
415
497
|
|
@@ -424,6 +506,7 @@ contract ComponentService is
|
|
424
506
|
// TODO re-enable once role granting is stable and fixed
|
425
507
|
// restricted()
|
426
508
|
{
|
509
|
+
_checkNftType(poolNftId, POOL());
|
427
510
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
428
511
|
}
|
429
512
|
|
@@ -440,6 +523,7 @@ contract ComponentService is
|
|
440
523
|
// TODO re-enable once role granting is stable and fixed
|
441
524
|
// restricted()
|
442
525
|
{
|
526
|
+
_checkNftType(bundleNftId, BUNDLE());
|
443
527
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
444
528
|
}
|
445
529
|
|
@@ -454,6 +538,7 @@ contract ComponentService is
|
|
454
538
|
// TODO re-enable once role granting is stable and fixed
|
455
539
|
// restricted()
|
456
540
|
{
|
541
|
+
_checkNftType(bundleNftId, BUNDLE());
|
457
542
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
458
543
|
}
|
459
544
|
|
@@ -481,74 +566,67 @@ contract ComponentService is
|
|
481
566
|
}
|
482
567
|
}
|
483
568
|
|
484
|
-
/// @dev
|
569
|
+
/// @dev Registers the component represented by the provided address.
|
485
570
|
function _register(
|
486
571
|
address componentAddress, // address of component to register
|
487
|
-
ObjectType requiredType
|
488
|
-
RoleId requiredRole // role required for comonent owner for registration
|
572
|
+
ObjectType requiredType // required type for component for registration
|
489
573
|
)
|
490
574
|
internal
|
491
575
|
virtual
|
492
576
|
returns (
|
493
577
|
InstanceReader instanceReader,
|
578
|
+
InstanceAdmin instanceAdmin,
|
494
579
|
InstanceStore instanceStore,
|
580
|
+
NftId parentNftId,
|
495
581
|
NftId componentNftId
|
496
582
|
)
|
497
583
|
{
|
584
|
+
NftId instanceNftId;
|
585
|
+
IInstance instance;
|
586
|
+
IInstanceLinkedComponent component;
|
587
|
+
address initialOwner;
|
588
|
+
|
498
589
|
(
|
499
|
-
|
500
|
-
|
501
|
-
|
590
|
+
instanceNftId,
|
591
|
+
instance,
|
592
|
+
parentNftId,
|
593
|
+
component,
|
594
|
+
initialOwner
|
502
595
|
) = _getAndVerifyRegisterableComponent(
|
596
|
+
getRegistry(),
|
503
597
|
componentAddress,
|
504
|
-
requiredType
|
505
|
-
requiredRole);
|
506
|
-
|
507
|
-
// register component with registry
|
508
|
-
componentNftId = _registryService.registerComponent(
|
509
|
-
component,
|
510
|
-
requiredType,
|
511
|
-
owner).nftId;
|
512
|
-
|
513
|
-
component.linkToRegisteredNftId();
|
598
|
+
requiredType);
|
514
599
|
|
515
|
-
//
|
516
|
-
_instanceService.initializeAuthorization(
|
517
|
-
instance.getNftId(),
|
518
|
-
component);
|
519
|
-
|
520
|
-
// save amended component info with instance
|
600
|
+
// get instance supporting contracts (as function return values)
|
521
601
|
instanceReader = instance.getInstanceReader();
|
602
|
+
instanceAdmin = instance.getInstanceAdmin();
|
522
603
|
instanceStore = instance.getInstanceStore();
|
523
604
|
|
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
|
524
615
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
525
|
-
|
616
|
+
IERC20Metadata token = componentInfo.token;
|
617
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
618
|
+
address(token),
|
619
|
+
address(instanceAdmin.authority()));
|
526
620
|
|
621
|
+
// register component with instance
|
527
622
|
instanceStore.createComponent(
|
528
|
-
|
623
|
+
componentNftId,
|
529
624
|
componentInfo);
|
530
625
|
|
531
|
-
//
|
532
|
-
|
533
|
-
|
626
|
+
// link component contract to nft id
|
627
|
+
component.linkToRegisteredNftId();
|
534
628
|
|
535
|
-
|
536
|
-
function _linkToProduct(
|
537
|
-
InstanceReader instanceReader,
|
538
|
-
InstanceStore instanceStore,
|
539
|
-
NftId componentNftId,
|
540
|
-
NftId productNftId
|
541
|
-
)
|
542
|
-
internal
|
543
|
-
{
|
544
|
-
// only link components that are registered
|
545
|
-
if(componentNftId.eqz()) {
|
546
|
-
return;
|
547
|
-
}
|
548
|
-
|
549
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
550
|
-
componentInfo.productNftId = productNftId;
|
551
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
629
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
552
630
|
}
|
553
631
|
|
554
632
|
|
@@ -567,12 +645,6 @@ contract ComponentService is
|
|
567
645
|
}
|
568
646
|
|
569
647
|
|
570
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
571
|
-
selectors = new bytes4[](1);
|
572
|
-
selectors[0] = selector;
|
573
|
-
}
|
574
|
-
|
575
|
-
|
576
648
|
function _getLinkedProductInfo(
|
577
649
|
InstanceReader instanceReader,
|
578
650
|
NftId componentNftId
|
@@ -584,56 +656,89 @@ contract ComponentService is
|
|
584
656
|
IComponents.ProductInfo memory info
|
585
657
|
)
|
586
658
|
{
|
587
|
-
productNftId =
|
659
|
+
productNftId = _getProductNftId(componentNftId);
|
588
660
|
info = instanceReader.getProductInfo(productNftId);
|
589
661
|
}
|
590
662
|
|
591
663
|
|
592
|
-
/// @dev
|
593
|
-
///
|
594
|
-
/// - 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
|
595
667
|
/// - the component contract does not support IInstanceLinkedComponent
|
596
668
|
/// - the component type does not match with the required type
|
597
|
-
/// - the
|
669
|
+
/// - the component has already been registered
|
598
670
|
function _getAndVerifyRegisterableComponent(
|
671
|
+
IRegistry registry,
|
599
672
|
address componentAddress,
|
600
|
-
ObjectType requiredType
|
601
|
-
RoleId requiredRole
|
673
|
+
ObjectType requiredType
|
602
674
|
)
|
603
675
|
internal
|
604
676
|
view
|
605
677
|
returns (
|
678
|
+
NftId instanceNftId,
|
606
679
|
IInstance instance,
|
680
|
+
NftId parentNftId,
|
607
681
|
IInstanceLinkedComponent component,
|
608
|
-
address
|
682
|
+
address initialOwner
|
609
683
|
)
|
610
684
|
{
|
611
|
-
// check
|
612
|
-
|
613
|
-
if(
|
614
|
-
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);
|
615
689
|
}
|
616
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
|
+
|
617
696
|
// check component is of required type
|
697
|
+
component = IInstanceLinkedComponent(componentAddress);
|
618
698
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
619
699
|
if(info.objectType != requiredType) {
|
620
700
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
621
701
|
}
|
622
702
|
|
623
703
|
// check component has not already been registered
|
624
|
-
if (getRegistry().
|
704
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
625
705
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
626
706
|
}
|
627
707
|
|
628
|
-
// check
|
629
|
-
|
630
|
-
|
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
|
+
}
|
631
713
|
|
632
|
-
|
633
|
-
|
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);
|
634
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);
|
635
739
|
}
|
636
740
|
|
741
|
+
|
637
742
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
638
743
|
return COMPONENT();
|
639
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
|
}
|