@etherisc/gif-next 0.0.2-e8ea5fe-337 → 0.0.2-e91c6be-472
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 +28 -7
- 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 +162 -327
- 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 +102 -243
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +180 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +131 -107
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
- 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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +286 -83
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +197 -116
- 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 +121 -286
- 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 +87 -76
- 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 +97 -238
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +115 -256
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +203 -208
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +135 -107
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -107
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +115 -267
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +420 -366
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +128 -88
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +87 -144
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -80
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -251
- 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 +202 -200
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +136 -104
- 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 +64 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +147 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +146 -89
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +267 -167
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +127 -91
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +170 -219
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -91
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +154 -249
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +81 -138
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +93 -77
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +309 -33
- 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 +515 -94
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -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 +131 -223
- 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 +76 -213
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +426 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
- 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 +97 -238
- 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 +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
- 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 +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +152 -311
- 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 +112 -97
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/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/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 +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +64 -59
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +12 -23
- package/contracts/distribution/DistributionService.sol +78 -60
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +22 -19
- package/contracts/instance/InstanceAdmin.sol +23 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +83 -18
- package/contracts/instance/InstanceService.sol +35 -88
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +56 -43
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +96 -49
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +11 -5
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +42 -30
- package/contracts/pool/Pool.sol +142 -123
- package/contracts/pool/PoolService.sol +254 -143
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +20 -9
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +235 -108
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +13 -4
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +169 -47
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +12 -13
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +77 -70
- package/contracts/product/RiskService.sol +4 -5
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +56 -17
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +349 -200
- package/contracts/registry/RegistryAdmin.sol +146 -58
- 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 -204
- package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
- package/contracts/shared/Component.sol +62 -101
- package/contracts/shared/ComponentService.sol +291 -153
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +10 -13
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +70 -37
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +324 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +34 -27
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +71 -25
- package/contracts/staking/StakingServiceManager.sol +2 -2
- 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 +1 -0
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -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 +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,38 +1,37 @@
|
|
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";
|
10
|
+
import {IComponent} from "../shared/IComponent.sol";
|
7
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
12
|
import {IComponentService} from "./IComponentService.sol";
|
9
13
|
import {IInstance} from "../instance/IInstance.sol";
|
10
14
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
15
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
16
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
17
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
18
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
19
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
20
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
21
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
16
22
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
23
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
24
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
25
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {RoleId
|
26
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
27
|
+
import {RoleId} from "../type/RoleId.sol";
|
28
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
29
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
23
30
|
|
24
31
|
contract ComponentService is
|
25
32
|
ComponentVerifyingService,
|
26
33
|
IComponentService
|
27
34
|
{
|
28
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
29
|
-
error ErrorComponentServiceNotComponent(address component);
|
30
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
31
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
32
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
33
|
-
error ErrorComponentServiceComponentLocked(address component);
|
34
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
35
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
36
35
|
|
37
36
|
bool private constant INCREASE = true;
|
38
37
|
bool private constant DECREASE = false;
|
@@ -40,6 +39,14 @@ contract ComponentService is
|
|
40
39
|
IRegistryService private _registryService;
|
41
40
|
IInstanceService private _instanceService;
|
42
41
|
|
42
|
+
modifier onlyComponent(address component) {
|
43
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
43
50
|
function _initialize(
|
44
51
|
address owner,
|
45
52
|
bytes memory data
|
@@ -48,41 +55,91 @@ contract ComponentService is
|
|
48
55
|
virtual override
|
49
56
|
initializer()
|
50
57
|
{
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
58
|
+
(
|
59
|
+
address registryAddress,
|
60
|
+
address authority
|
61
|
+
) = abi.decode(data, (address, address));
|
55
62
|
|
56
|
-
|
63
|
+
_initializeService(registryAddress, authority, owner);
|
57
64
|
|
58
65
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
59
66
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
60
67
|
|
61
|
-
|
68
|
+
_registerInterface(type(IComponentService).interfaceId);
|
62
69
|
}
|
63
70
|
|
64
71
|
//-------- component ----------------------------------------------------//
|
65
72
|
|
66
|
-
function
|
73
|
+
function registerComponent(address component)
|
74
|
+
external
|
75
|
+
virtual
|
76
|
+
onlyComponent(component)
|
77
|
+
returns (NftId componentNftId)
|
78
|
+
{
|
79
|
+
// type specific registration
|
80
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
81
|
+
if (componentType == POOL()) {
|
82
|
+
return _registerPool(component);
|
83
|
+
}
|
84
|
+
if (componentType == DISTRIBUTION()) {
|
85
|
+
return _registerDistribution(component);
|
86
|
+
}
|
87
|
+
if (componentType == ORACLE()) {
|
88
|
+
return _registerOracle(component);
|
89
|
+
}
|
90
|
+
|
91
|
+
// fail
|
92
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
93
|
+
}
|
94
|
+
|
95
|
+
function approveTokenHandler(
|
96
|
+
IERC20Metadata token,
|
97
|
+
Amount amount
|
98
|
+
)
|
99
|
+
external
|
100
|
+
virtual
|
101
|
+
{
|
102
|
+
// checks
|
67
103
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
68
|
-
|
69
|
-
|
104
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
105
|
+
componentNftId).tokenHandler;
|
70
106
|
|
71
|
-
|
72
|
-
|
73
|
-
|
107
|
+
// effects
|
108
|
+
tokenHandler.approve(token, amount);
|
109
|
+
}
|
74
110
|
|
75
|
-
if (currentWallet == address(0)) {
|
76
|
-
revert ErrorComponentServiceWalletAddressZero();
|
77
|
-
}
|
78
111
|
|
79
|
-
|
80
|
-
|
81
|
-
|
112
|
+
function approveStakingTokenHandler(
|
113
|
+
IERC20Metadata token,
|
114
|
+
Amount amount
|
115
|
+
)
|
116
|
+
external
|
117
|
+
virtual
|
118
|
+
{
|
119
|
+
// checks
|
120
|
+
NftId stakingNftId = getRegistry().getNftIdForAddress(msg.sender);
|
121
|
+
(IRegistry.ObjectInfo memory objectInfo,) = _getAndVerifyComponentInfo(
|
122
|
+
stakingNftId,
|
123
|
+
STAKING(),
|
124
|
+
true);
|
125
|
+
|
126
|
+
// effects
|
127
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
128
|
+
tokenHandler.approve(token, amount);
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
function setWallet(address newWallet)
|
133
|
+
external
|
134
|
+
virtual
|
135
|
+
{
|
136
|
+
// checks
|
137
|
+
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
138
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
139
|
+
componentNftId).tokenHandler;
|
82
140
|
|
83
|
-
|
84
|
-
|
85
|
-
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
141
|
+
// effects
|
142
|
+
tokenHandler.setWallet(newWallet);
|
86
143
|
}
|
87
144
|
|
88
145
|
// TODO implement
|
@@ -98,7 +155,7 @@ contract ComponentService is
|
|
98
155
|
{
|
99
156
|
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
100
157
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
101
|
-
address componentWallet = info.
|
158
|
+
address componentWallet = info.tokenHandler.getWallet();
|
102
159
|
|
103
160
|
// determine withdrawn amount
|
104
161
|
withdrawnAmount = amount;
|
@@ -125,29 +182,29 @@ contract ComponentService is
|
|
125
182
|
|
126
183
|
//-------- product ------------------------------------------------------//
|
127
184
|
|
128
|
-
function registerProduct()
|
185
|
+
function registerProduct(address productAddress)
|
129
186
|
external
|
130
187
|
virtual
|
188
|
+
onlyComponent(productAddress)
|
189
|
+
returns (NftId productNftId)
|
131
190
|
{
|
132
|
-
address contractAddress = msg.sender;
|
133
|
-
|
134
191
|
// register/create component setup
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
// create
|
145
|
-
|
146
|
-
|
192
|
+
InstanceAdmin instanceAdmin;
|
193
|
+
InstanceStore instanceStore;
|
194
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
195
|
+
productAddress,
|
196
|
+
PRODUCT());
|
197
|
+
|
198
|
+
// get product
|
199
|
+
IProductComponent product = IProductComponent(productAddress);
|
200
|
+
|
201
|
+
// create info
|
202
|
+
instanceStore.createProduct(
|
203
|
+
productNftId,
|
204
|
+
product.getInitialProductInfo());
|
147
205
|
|
148
|
-
//
|
149
|
-
|
150
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
|
206
|
+
// authorize
|
207
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
151
208
|
}
|
152
209
|
|
153
210
|
|
@@ -192,6 +249,7 @@ contract ComponentService is
|
|
192
249
|
// TODO re-enable once role granting is stable and fixed
|
193
250
|
// restricted()
|
194
251
|
{
|
252
|
+
_checkNftType(productNftId, PRODUCT());
|
195
253
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
196
254
|
}
|
197
255
|
|
@@ -202,23 +260,43 @@ contract ComponentService is
|
|
202
260
|
// TODO re-enable once role granting is stable and fixed
|
203
261
|
// restricted()
|
204
262
|
{
|
263
|
+
_checkNftType(productNftId, PRODUCT());
|
205
264
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
206
265
|
}
|
207
266
|
|
208
267
|
//-------- distribution -------------------------------------------------//
|
209
268
|
|
210
269
|
/// @dev registers the sending component as a distribution component
|
211
|
-
function
|
212
|
-
|
270
|
+
function _registerDistribution(address distributioAddress)
|
271
|
+
internal
|
213
272
|
virtual
|
273
|
+
returns (NftId distributionNftId)
|
214
274
|
{
|
215
|
-
address contractAddress = msg.sender;
|
216
|
-
|
217
275
|
// register/create component info
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
276
|
+
InstanceReader instanceReader;
|
277
|
+
InstanceAdmin instanceAdmin;
|
278
|
+
InstanceStore instanceStore;
|
279
|
+
NftId productNftId;
|
280
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
281
|
+
distributioAddress,
|
282
|
+
DISTRIBUTION());
|
283
|
+
|
284
|
+
// check product is still expecting a distribution registration
|
285
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
286
|
+
if (!productInfo.hasDistribution) {
|
287
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
288
|
+
}
|
289
|
+
if (productInfo.distributionNftId.gtz()) {
|
290
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
291
|
+
}
|
292
|
+
|
293
|
+
// set distribution in product info
|
294
|
+
productInfo.distributionNftId = distributionNftId;
|
295
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
296
|
+
|
297
|
+
// authorize
|
298
|
+
instanceAdmin.initializeComponentAuthorization(
|
299
|
+
IInstanceLinkedComponent(distributioAddress));
|
222
300
|
}
|
223
301
|
|
224
302
|
|
@@ -265,6 +343,7 @@ contract ComponentService is
|
|
265
343
|
// TODO re-enable once role granting is stable and fixed
|
266
344
|
// restricted()
|
267
345
|
{
|
346
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
268
347
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
269
348
|
}
|
270
349
|
|
@@ -280,6 +359,7 @@ contract ComponentService is
|
|
280
359
|
// TODO re-enable once role granting is stable and fixed
|
281
360
|
// restricted()
|
282
361
|
{
|
362
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
283
363
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
284
364
|
}
|
285
365
|
|
@@ -296,6 +376,7 @@ contract ComponentService is
|
|
296
376
|
// TODO re-enable once role granting is stable and fixed
|
297
377
|
// restricted()
|
298
378
|
{
|
379
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
299
380
|
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
300
381
|
}
|
301
382
|
|
@@ -310,51 +391,81 @@ contract ComponentService is
|
|
310
391
|
// TODO re-enable once role granting is stable and fixed
|
311
392
|
// restricted()
|
312
393
|
{
|
394
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
313
395
|
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
314
396
|
}
|
315
397
|
|
316
398
|
//-------- oracle -------------------------------------------------------//
|
317
399
|
|
318
|
-
function
|
319
|
-
|
400
|
+
function _registerOracle(address oracleAddress)
|
401
|
+
internal
|
320
402
|
virtual
|
403
|
+
returns (NftId oracleNftId)
|
321
404
|
{
|
322
|
-
address contractAddress = msg.sender;
|
323
|
-
|
324
405
|
// register/create component setup
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
406
|
+
InstanceReader instanceReader;
|
407
|
+
InstanceAdmin instanceAdmin;
|
408
|
+
InstanceStore instanceStore;
|
409
|
+
NftId productNftId;
|
410
|
+
|
411
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
412
|
+
oracleAddress,
|
413
|
+
ORACLE());
|
414
|
+
|
415
|
+
// check product is still expecting an oracle registration
|
416
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
417
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
418
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
419
|
+
}
|
420
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
421
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
422
|
+
}
|
423
|
+
|
424
|
+
// update/add oracle to product info
|
425
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
426
|
+
productInfo.numberOfOracles++;
|
427
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
428
|
+
|
429
|
+
// authorize
|
430
|
+
instanceAdmin.initializeComponentAuthorization(
|
431
|
+
IInstanceLinkedComponent(oracleAddress));
|
333
432
|
}
|
334
433
|
|
335
434
|
//-------- pool ---------------------------------------------------------//
|
336
435
|
|
337
|
-
function
|
338
|
-
|
436
|
+
function _registerPool(address poolAddress)
|
437
|
+
internal
|
339
438
|
virtual
|
439
|
+
returns (NftId poolNftId)
|
340
440
|
{
|
341
|
-
address contractAddress = msg.sender;
|
342
|
-
|
343
441
|
// register/create component setup
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
442
|
+
InstanceReader instanceReader;
|
443
|
+
InstanceAdmin instanceAdmin;
|
444
|
+
InstanceStore instanceStore;
|
445
|
+
NftId productNftId;
|
446
|
+
|
447
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
448
|
+
poolAddress,
|
449
|
+
POOL());
|
450
|
+
|
451
|
+
// check product is still expecting a pool registration
|
452
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
453
|
+
if (productInfo.poolNftId.gtz()) {
|
454
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
455
|
+
}
|
352
456
|
|
353
457
|
// create info
|
458
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
354
459
|
instanceStore.createPool(
|
355
|
-
|
356
|
-
|
357
|
-
|
460
|
+
poolNftId,
|
461
|
+
pool.getInitialPoolInfo());
|
462
|
+
|
463
|
+
// update pool in product info
|
464
|
+
productInfo.poolNftId = poolNftId;
|
465
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
466
|
+
|
467
|
+
// authorize
|
468
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
358
469
|
}
|
359
470
|
|
360
471
|
|
@@ -409,6 +520,7 @@ contract ComponentService is
|
|
409
520
|
// TODO re-enable once role granting is stable and fixed
|
410
521
|
// restricted()
|
411
522
|
{
|
523
|
+
_checkNftType(poolNftId, POOL());
|
412
524
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
413
525
|
}
|
414
526
|
|
@@ -423,6 +535,7 @@ contract ComponentService is
|
|
423
535
|
// TODO re-enable once role granting is stable and fixed
|
424
536
|
// restricted()
|
425
537
|
{
|
538
|
+
_checkNftType(poolNftId, POOL());
|
426
539
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
427
540
|
}
|
428
541
|
|
@@ -439,6 +552,7 @@ contract ComponentService is
|
|
439
552
|
// TODO re-enable once role granting is stable and fixed
|
440
553
|
// restricted()
|
441
554
|
{
|
555
|
+
_checkNftType(bundleNftId, BUNDLE());
|
442
556
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
443
557
|
}
|
444
558
|
|
@@ -453,6 +567,7 @@ contract ComponentService is
|
|
453
567
|
// TODO re-enable once role granting is stable and fixed
|
454
568
|
// restricted()
|
455
569
|
{
|
570
|
+
_checkNftType(bundleNftId, BUNDLE());
|
456
571
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
457
572
|
}
|
458
573
|
|
@@ -480,76 +595,72 @@ contract ComponentService is
|
|
480
595
|
}
|
481
596
|
}
|
482
597
|
|
483
|
-
/// @dev
|
598
|
+
/// @dev Registers the component represented by the provided address.
|
484
599
|
function _register(
|
485
600
|
address componentAddress, // address of component to register
|
486
|
-
ObjectType requiredType
|
487
|
-
RoleId requiredRole // role required for comonent owner for registration
|
601
|
+
ObjectType requiredType // required type for component for registration
|
488
602
|
)
|
489
603
|
internal
|
490
604
|
virtual
|
491
605
|
returns (
|
492
606
|
InstanceReader instanceReader,
|
607
|
+
InstanceAdmin instanceAdmin,
|
493
608
|
InstanceStore instanceStore,
|
609
|
+
NftId parentNftId,
|
494
610
|
NftId componentNftId
|
495
611
|
)
|
496
612
|
{
|
613
|
+
NftId instanceNftId;
|
614
|
+
IInstance instance;
|
615
|
+
IInstanceLinkedComponent component;
|
616
|
+
address initialOwner;
|
617
|
+
|
497
618
|
(
|
498
|
-
|
499
|
-
|
500
|
-
|
619
|
+
instanceNftId,
|
620
|
+
instance,
|
621
|
+
parentNftId,
|
622
|
+
component,
|
623
|
+
initialOwner
|
501
624
|
) = _getAndVerifyRegisterableComponent(
|
625
|
+
getRegistry(),
|
502
626
|
componentAddress,
|
503
|
-
requiredType
|
504
|
-
requiredRole);
|
505
|
-
|
506
|
-
// register component with registry
|
507
|
-
componentNftId = _registryService.registerComponent(
|
508
|
-
component,
|
509
|
-
requiredType,
|
510
|
-
owner).nftId;
|
627
|
+
requiredType);
|
511
628
|
|
512
|
-
|
513
|
-
|
514
|
-
// save amended component info with instance
|
629
|
+
// get instance supporting contracts (as function return values)
|
515
630
|
instanceReader = instance.getInstanceReader();
|
631
|
+
instanceAdmin = instance.getInstanceAdmin();
|
516
632
|
instanceStore = instance.getInstanceStore();
|
517
633
|
|
634
|
+
// register with registry
|
635
|
+
if (requiredType == PRODUCT()) {
|
636
|
+
componentNftId = _registryService.registerProduct(
|
637
|
+
component, initialOwner).nftId;
|
638
|
+
} else {
|
639
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
640
|
+
component, requiredType, initialOwner).nftId;
|
641
|
+
}
|
642
|
+
|
643
|
+
// deploy and wire token handler
|
518
644
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
645
|
+
IERC20Metadata token = componentInfo.token;
|
519
646
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
520
|
-
address(
|
521
|
-
address(
|
647
|
+
address(getRegistry()),
|
648
|
+
address(component), // initially, component is its own wallet
|
649
|
+
address(token),
|
650
|
+
address(instanceAdmin.authority()));
|
651
|
+
|
652
|
+
// set token handler allowance to max
|
653
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
522
654
|
|
655
|
+
// register component with instance
|
523
656
|
instanceStore.createComponent(
|
524
|
-
|
657
|
+
componentNftId,
|
525
658
|
componentInfo);
|
526
659
|
|
527
|
-
//
|
528
|
-
|
529
|
-
instance.getNftId(),
|
530
|
-
component);
|
531
|
-
|
532
|
-
// TODO add logging
|
533
|
-
}
|
534
|
-
|
660
|
+
// link component contract to nft id
|
661
|
+
component.linkToRegisteredNftId();
|
535
662
|
|
536
|
-
|
537
|
-
function _linkToProduct(
|
538
|
-
InstanceReader instanceReader,
|
539
|
-
InstanceStore instanceStore,
|
540
|
-
NftId componentNftId,
|
541
|
-
NftId productNftId
|
542
|
-
)
|
543
|
-
internal
|
544
|
-
{
|
545
|
-
// only link components that are registered
|
546
|
-
if(componentNftId.eqz()) {
|
547
|
-
return;
|
548
|
-
}
|
549
|
-
|
550
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
551
|
-
componentInfo.productNftId = productNftId;
|
552
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
663
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
553
664
|
}
|
554
665
|
|
555
666
|
|
@@ -568,12 +679,6 @@ contract ComponentService is
|
|
568
679
|
}
|
569
680
|
|
570
681
|
|
571
|
-
function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
|
572
|
-
selectors = new bytes4[](1);
|
573
|
-
selectors[0] = selector;
|
574
|
-
}
|
575
|
-
|
576
|
-
|
577
682
|
function _getLinkedProductInfo(
|
578
683
|
InstanceReader instanceReader,
|
579
684
|
NftId componentNftId
|
@@ -585,37 +690,45 @@ contract ComponentService is
|
|
585
690
|
IComponents.ProductInfo memory info
|
586
691
|
)
|
587
692
|
{
|
588
|
-
productNftId =
|
693
|
+
productNftId = _getProductNftId(componentNftId);
|
589
694
|
info = instanceReader.getProductInfo(productNftId);
|
590
695
|
}
|
591
696
|
|
592
697
|
|
593
|
-
/// @dev
|
594
|
-
///
|
595
|
-
/// - the
|
698
|
+
/// @dev Based on the provided component address required type the component
|
699
|
+
/// and related instance contract this function reverts iff:
|
700
|
+
/// - the sender is not registered
|
596
701
|
/// - the component contract does not support IInstanceLinkedComponent
|
597
702
|
/// - the component type does not match with the required type
|
598
|
-
/// - the
|
703
|
+
/// - the component has already been registered
|
599
704
|
function _getAndVerifyRegisterableComponent(
|
705
|
+
IRegistry registry,
|
600
706
|
address componentAddress,
|
601
|
-
ObjectType requiredType
|
602
|
-
RoleId requiredRole
|
707
|
+
ObjectType requiredType
|
603
708
|
)
|
604
709
|
internal
|
605
710
|
view
|
606
711
|
returns (
|
712
|
+
NftId instanceNftId,
|
607
713
|
IInstance instance,
|
714
|
+
NftId parentNftId,
|
608
715
|
IInstanceLinkedComponent component,
|
609
|
-
address
|
716
|
+
address initialOwner
|
610
717
|
)
|
611
718
|
{
|
612
|
-
// check
|
613
|
-
|
614
|
-
if(
|
615
|
-
revert
|
719
|
+
// check sender (instance or product) is registered
|
720
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
721
|
+
if (senderInfo.nftId.eqz()) {
|
722
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
616
723
|
}
|
617
724
|
|
725
|
+
// the sender is the parent of the component to be registered
|
726
|
+
// an instance caller wanting to register a product - or -
|
727
|
+
// a product caller wantint go register a distribution, oracle or pool
|
728
|
+
parentNftId = senderInfo.nftId;
|
729
|
+
|
618
730
|
// check component is of required type
|
731
|
+
component = IInstanceLinkedComponent(componentAddress);
|
619
732
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
620
733
|
if(info.objectType != requiredType) {
|
621
734
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
@@ -626,15 +739,40 @@ contract ComponentService is
|
|
626
739
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
627
740
|
}
|
628
741
|
|
629
|
-
// check
|
630
|
-
|
631
|
-
|
742
|
+
// check release matches
|
743
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
744
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
745
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
746
|
+
}
|
747
|
+
|
748
|
+
// check component belongs to same product cluster
|
749
|
+
// parent of product must be instance, parent of other componet types must be product
|
750
|
+
if (info.parentNftId != senderInfo.nftId) {
|
751
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
752
|
+
}
|
753
|
+
|
754
|
+
// verify parent is registered instance
|
755
|
+
if (requiredType == PRODUCT()) {
|
756
|
+
if (senderInfo.objectType != INSTANCE()) {
|
757
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
758
|
+
}
|
632
759
|
|
633
|
-
|
634
|
-
|
760
|
+
instanceNftId = senderInfo.nftId;
|
761
|
+
// verify parent is registered product
|
762
|
+
} else {
|
763
|
+
if (senderInfo.objectType != PRODUCT()) {
|
764
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
765
|
+
}
|
766
|
+
|
767
|
+
instanceNftId = senderInfo.parentNftId;
|
635
768
|
}
|
769
|
+
|
770
|
+
// get initial owner and instance
|
771
|
+
initialOwner = info.initialOwner;
|
772
|
+
instance = _getInstance(registry, instanceNftId);
|
636
773
|
}
|
637
774
|
|
775
|
+
|
638
776
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
639
777
|
return COMPONENT();
|
640
778
|
}
|