@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac4bee9-682
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/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
- 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 -13
- 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 +139 -157
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -96
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +152 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
- 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 +29 -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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +151 -132
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +133 -127
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +249 -188
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +530 -229
- 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 +78 -40
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
- 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 +113 -135
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -133
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
- 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 -139
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
- 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 -91
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +102 -47
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +72 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +97 -119
- 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 +205 -103
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -60
- 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 +87 -115
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +213 -195
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +97 -130
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +294 -255
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +83 -47
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +82 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +69 -33
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +142 -92
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -82
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
- 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 +56 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -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 +128 -73
- 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 +154 -61
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +87 -47
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +138 -88
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
- 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 +116 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
- 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 +123 -225
- 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 -66
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +425 -155
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +103 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +21 -2
- 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/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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -91
- 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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
- 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 +154 -166
- 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 +81 -51
- 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 +82 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
- 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 +2 -2
- 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/UFixedLib.dbg.json +1 -1
- 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 +44 -12
- 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 +65 -61
- package/contracts/authorization/Authorization.sol +106 -38
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +6 -16
- package/contracts/distribution/DistributionService.sol +55 -36
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- 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 +12 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +17 -28
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +29 -80
- package/contracts/instance/module/IComponents.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +47 -36
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +88 -41
- package/contracts/pool/IBundleService.sol +11 -5
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +25 -24
- package/contracts/pool/Pool.sol +118 -126
- package/contracts/pool/PoolService.sol +203 -131
- package/contracts/product/ApplicationService.sol +9 -1
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +99 -58
- package/contracts/product/IClaimService.sol +2 -1
- package/contracts/product/IPolicyService.sol +6 -1
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +6 -0
- package/contracts/product/PolicyService.sol +76 -27
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +56 -56
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +6 -3
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +22 -4
- package/contracts/registry/RegistryAdmin.sol +29 -31
- package/contracts/registry/RegistryService.sol +37 -55
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +202 -208
- package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
- package/contracts/shared/Component.sol +58 -97
- package/contracts/shared/ComponentService.sol +285 -147
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +17 -1
- 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/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +66 -32
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/Registerable.sol +15 -7
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/Service.sol +4 -7
- 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 +31 -24
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +69 -23
- 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/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- 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
@@ -5,14 +5,13 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
5
5
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
6
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
-
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
8
|
+
import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
9
9
|
import {Service} from "../shared/Service.sol";
|
10
10
|
|
11
11
|
|
12
12
|
abstract contract ComponentVerifyingService is
|
13
13
|
Service
|
14
14
|
{
|
15
|
-
|
16
15
|
error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
|
17
16
|
error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
|
18
17
|
|
@@ -28,12 +27,12 @@ abstract contract ComponentVerifyingService is
|
|
28
27
|
view
|
29
28
|
returns(
|
30
29
|
NftId componentNftId,
|
31
|
-
IRegistry.ObjectInfo memory
|
30
|
+
IRegistry.ObjectInfo memory objectInfo,
|
32
31
|
IInstance instance
|
33
32
|
)
|
34
33
|
{
|
35
34
|
componentNftId = getRegistry().getNftIdForAddress(msg.sender);
|
36
|
-
(
|
35
|
+
(objectInfo, instance) = _getAndVerifyComponentInfo(
|
37
36
|
componentNftId,
|
38
37
|
expectedType,
|
39
38
|
true); // only active
|
@@ -83,7 +82,15 @@ abstract contract ComponentVerifyingService is
|
|
83
82
|
}
|
84
83
|
}
|
85
84
|
|
86
|
-
|
85
|
+
if (info.objectType == STAKING()) {
|
86
|
+
return (info, instance);
|
87
|
+
}
|
88
|
+
|
89
|
+
if (info.objectType == PRODUCT()) {
|
90
|
+
instance = _getInstance(registry, info.parentNftId);
|
91
|
+
} else {
|
92
|
+
instance = _getInstanceForComponent(registry, info.parentNftId);
|
93
|
+
}
|
87
94
|
|
88
95
|
// ensure component is not locked
|
89
96
|
if (onlyActive) {
|
@@ -94,23 +101,28 @@ abstract contract ComponentVerifyingService is
|
|
94
101
|
}
|
95
102
|
|
96
103
|
|
97
|
-
|
98
|
-
function _getProductNftId(
|
99
|
-
InstanceReader instanceReader,
|
100
|
-
NftId componentNftId
|
101
|
-
)
|
104
|
+
function _getInstanceForComponent(IRegistry registry, NftId productNftId)
|
102
105
|
internal
|
103
|
-
virtual
|
104
106
|
view
|
105
|
-
returns (
|
107
|
+
returns (IInstance instance)
|
106
108
|
{
|
107
|
-
return
|
109
|
+
return _getInstance(
|
110
|
+
registry,
|
111
|
+
registry.getObjectInfo(
|
112
|
+
productNftId).parentNftId);
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
/// @dev returns the product nft id from the registry.
|
117
|
+
/// assumes the component nft id is valid and represents a product linked component.
|
118
|
+
function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
|
119
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
108
120
|
}
|
109
121
|
|
110
122
|
|
111
123
|
/// @dev returns an IInstance contract reference for the specified instance nft id
|
112
|
-
function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
|
124
|
+
function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
|
113
125
|
return IInstance(
|
114
|
-
|
126
|
+
registry.getObjectAddress(instanceNftId));
|
115
127
|
}
|
116
128
|
}
|
@@ -5,6 +5,7 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
|
|
5
5
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
6
|
|
7
7
|
import {IPolicyHolder} from "./IPolicyHolder.sol";
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
9
|
|
9
10
|
library ContractLib {
|
10
11
|
|
@@ -12,6 +13,7 @@ library ContractLib {
|
|
12
13
|
return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
|
13
14
|
}
|
14
15
|
|
16
|
+
|
15
17
|
function isAccessManaged(address target) external view returns (bool) {
|
16
18
|
if (!isContract(target)) {
|
17
19
|
return false;
|
@@ -24,7 +26,21 @@ library ContractLib {
|
|
24
26
|
return success;
|
25
27
|
}
|
26
28
|
|
29
|
+
|
30
|
+
function isRegistry(address registry) public view returns (bool) {
|
31
|
+
if (!isContract(registry)) {
|
32
|
+
return false;
|
33
|
+
}
|
34
|
+
|
35
|
+
return supportsInterface(registry, type(IRegistry).interfaceId);
|
36
|
+
}
|
37
|
+
|
38
|
+
|
27
39
|
function isContract(address target) public view returns (bool) {
|
40
|
+
if (target == address(0)) {
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
|
28
44
|
uint256 size;
|
29
45
|
assembly {
|
30
46
|
size := extcodesize(target)
|
@@ -32,7 +48,7 @@ library ContractLib {
|
|
32
48
|
return size > 0;
|
33
49
|
}
|
34
50
|
|
35
|
-
function supportsInterface(address target, bytes4 interfaceId)
|
51
|
+
function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
|
36
52
|
return ERC165Checker.supportsInterface(target, interfaceId);
|
37
53
|
}
|
38
54
|
}
|
@@ -17,29 +17,26 @@ interface IComponent is
|
|
17
17
|
IRegisterable,
|
18
18
|
ITransferInterceptor
|
19
19
|
{
|
20
|
+
error ErrorComponentProductNftIdZero();
|
21
|
+
error ErrorComponentProductNftIdNonzero();
|
22
|
+
error ErrorComponentNameLengthZero();
|
23
|
+
|
20
24
|
error ErrorComponentNotChainNft(address caller);
|
21
25
|
|
26
|
+
error ErrorComponentTokenAddressNonzero();
|
22
27
|
error ErrorComponentTokenAddressZero();
|
23
|
-
error ErrorComponentNameLengthZero();
|
24
28
|
error ErrorComponentWalletAddressZero();
|
25
29
|
error ErrorComponentWalletAddressIsSameAsCurrent();
|
26
30
|
error ErrorComponentWalletNotComponent();
|
27
31
|
|
28
32
|
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
29
33
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
30
|
-
event LogComponentTokenHandlerApproved(address token, Amount limit);
|
31
|
-
|
32
|
-
/// @dev approves token hanlder to spend up to the specified amount of tokens
|
33
|
-
/// reverts if component wallet is not component itself
|
34
|
-
/// only component owner (nft holder) is authorizes to call this function
|
35
|
-
function approveTokenHandler(Amount spendingLimitAmount) external;
|
34
|
+
event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
|
36
35
|
|
37
|
-
/// @dev
|
38
|
-
/// if
|
39
|
-
///
|
40
|
-
|
41
|
-
/// covers the current component balance must exist
|
42
|
-
function setWallet(address walletAddress) external;
|
36
|
+
/// @dev Approves token hanlder to spend up to the specified amount of tokens.
|
37
|
+
/// Reverts if component wallet is not token handler itself.
|
38
|
+
/// Only component owner (nft holder) is authorizes to call this function.
|
39
|
+
function approveTokenHandler(IERC20Metadata token, Amount spendingLimitAmount) external;
|
43
40
|
|
44
41
|
/// @dev returns the name of this component
|
45
42
|
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
@@ -1,19 +1,39 @@
|
|
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";
|
4
5
|
|
5
6
|
import {Amount} from "../type/Amount.sol";
|
6
7
|
import {Fee} from "../type/Fee.sol";
|
7
8
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
8
9
|
import {IService} from "../shared/IService.sol";
|
9
10
|
import {NftId} from "../type/NftId.sol";
|
11
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
10
12
|
import {UFixed} from "../type/UFixed.sol";
|
13
|
+
import {VersionPart} from "../type/Version.sol";
|
11
14
|
|
12
15
|
/// @dev component base class
|
13
16
|
/// component examples are staking, product, distribution, pool and oracle
|
14
17
|
interface IComponentService is
|
15
18
|
IService
|
16
19
|
{
|
20
|
+
error ErrorComponentServiceNotInstanceLinkedComponent(address component);
|
21
|
+
error ErrorComponentServiceSenderNotRegistered(address sender);
|
22
|
+
error ErrorComponentServiceNotComponent(address component);
|
23
|
+
error ErrorComponentServiceTypeNotSupported(address component, ObjectType invalidType);
|
24
|
+
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
25
|
+
error ErrorComponentServiceAlreadyRegistered(address component);
|
26
|
+
error ErrorComponentServiceReleaseMismatch(address component, VersionPart componentRelease, VersionPart parentRelease);
|
27
|
+
error ErrorComponentServiceSenderNotComponentParent(NftId senderNftId, NftId compnentParentNftId);
|
28
|
+
error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
|
29
|
+
error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
|
30
|
+
|
31
|
+
error ErrorProductServiceNoDistributionExpected(NftId productNftId);
|
32
|
+
error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
|
33
|
+
error ErrorProductServiceNoOraclesExpected(NftId productNftId);
|
34
|
+
error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
|
35
|
+
error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
|
36
|
+
|
17
37
|
error ErrorComponentServiceNewWalletAddressZero();
|
18
38
|
error ErrorComponentServiceWalletAddressZero();
|
19
39
|
error ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
@@ -22,7 +42,9 @@ interface IComponentService is
|
|
22
42
|
error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
|
23
43
|
error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
|
24
44
|
|
45
|
+
event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
|
25
46
|
event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
|
47
|
+
event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
|
26
48
|
event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
|
27
49
|
event LogComponentServiceProductFeesUpdated(NftId productNftId);
|
28
50
|
event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
|
@@ -38,13 +60,21 @@ interface IComponentService is
|
|
38
60
|
|
39
61
|
//-------- component ----------------------------------------------------//
|
40
62
|
|
41
|
-
/// @dev
|
63
|
+
/// @dev Approves the callers token handler to spend up to the specified amount of tokens.
|
64
|
+
/// Reverts if the component's token handler wallet is not the token handler itself.
|
65
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount) external;
|
66
|
+
|
67
|
+
/// @dev Approves the staking token handler.
|
68
|
+
/// Reverts if the staking token handler wallet is not the token handler itself.
|
69
|
+
function approveStakingTokenHandler(IERC20Metadata token, Amount amount) external;
|
70
|
+
|
71
|
+
/// @dev Sets the components associated wallet address
|
42
72
|
function setWallet(address newWallet) external;
|
43
73
|
|
44
|
-
/// @dev
|
74
|
+
/// @dev Locks the component associated with the caller
|
45
75
|
function lock() external;
|
46
76
|
|
47
|
-
/// @dev
|
77
|
+
/// @dev Unlocks the component associated with the caller
|
48
78
|
function unlock() external;
|
49
79
|
|
50
80
|
/// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
|
@@ -52,10 +82,13 @@ interface IComponentService is
|
|
52
82
|
/// @return withdrawnAmount the amount that was actually withdrawn
|
53
83
|
function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
|
54
84
|
|
85
|
+
/// @dev Registers the provided component with the product (sender)
|
86
|
+
function registerComponent(address component) external returns (NftId componentNftId);
|
87
|
+
|
55
88
|
//-------- product ------------------------------------------------------//
|
56
89
|
|
57
|
-
/// @dev
|
58
|
-
function registerProduct() external;
|
90
|
+
/// @dev Registers the specified product component for the instance (sender)
|
91
|
+
function registerProduct(address product) external returns (NftId productNftId);
|
59
92
|
|
60
93
|
function setProductFees(
|
61
94
|
Fee memory productFee, // product fee on net premium
|
@@ -67,9 +100,6 @@ interface IComponentService is
|
|
67
100
|
|
68
101
|
//-------- distribution -------------------------------------------------//
|
69
102
|
|
70
|
-
/// @dev registers the sending component as a distribution component
|
71
|
-
function registerDistribution() external;
|
72
|
-
|
73
103
|
function setDistributionFees(
|
74
104
|
Fee memory distributionFee, // distribution fee for sales that do not include commissions
|
75
105
|
Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
|
@@ -82,16 +112,8 @@ interface IComponentService is
|
|
82
112
|
function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
83
113
|
function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
84
114
|
|
85
|
-
//-------- oracle -------------------------------------------------------//
|
86
|
-
|
87
|
-
/// @dev registers the sending component as an oracle component
|
88
|
-
function registerOracle() external;
|
89
|
-
|
90
115
|
//-------- pool ---------------------------------------------------------//
|
91
116
|
|
92
|
-
/// @dev registers the sending component as a pool component
|
93
|
-
function registerPool() external;
|
94
|
-
|
95
117
|
function setPoolFees(
|
96
118
|
Fee memory poolFee, // pool fee on net premium
|
97
119
|
Fee memory stakingFee, // pool fee on staked capital from investor
|
@@ -9,19 +9,15 @@ import {IComponent} from "../shared/IComponent.sol";
|
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
10
|
import {IInstance} from "../instance/IInstance.sol";
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
12
13
|
|
13
14
|
/// @dev component base class
|
14
15
|
/// component examples are product, distribution, pool and oracle
|
15
16
|
interface IInstanceLinkedComponent is
|
16
17
|
IComponent
|
17
18
|
{
|
18
|
-
error
|
19
|
-
error
|
20
|
-
|
21
|
-
/// @dev registers this component with the registry and instance.
|
22
|
-
/// a component may only be linked once
|
23
|
-
/// only initial component owner (nft holder) is authorizes to call this function
|
24
|
-
function register() external;
|
19
|
+
error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
|
20
|
+
error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
|
25
21
|
|
26
22
|
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
27
23
|
/// only component owner (nft holder) is authorizes to call this function
|
@@ -42,8 +38,4 @@ interface IInstanceLinkedComponent is
|
|
42
38
|
/// @dev returns the initial component authorization specification.
|
43
39
|
function getAuthorization() external view returns (IAuthorization authorization);
|
44
40
|
|
45
|
-
/// @dev defines the product to which this component is linked to
|
46
|
-
/// this is only relevant for pool and distribution components
|
47
|
-
function getProductNftId() external view returns (NftId productNftId);
|
48
|
-
|
49
41
|
}
|
@@ -6,8 +6,10 @@ import {StateId} from "../type/StateId.sol";
|
|
6
6
|
|
7
7
|
interface ILifecycle {
|
8
8
|
|
9
|
-
error ErrorNoLifecycle(ObjectType objectType);
|
9
|
+
error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
|
10
|
+
error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
|
10
11
|
error ErrorInvalidStateTransition(
|
12
|
+
address contractAddress,
|
11
13
|
ObjectType objectType,
|
12
14
|
StateId fromStateId,
|
13
15
|
StateId toStateId
|
@@ -5,6 +5,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
|
5
5
|
|
6
6
|
import {IRegistryLinked} from "./IRegistryLinked.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
9
|
|
9
10
|
interface INftOwnable is
|
10
11
|
IERC165,
|
@@ -12,6 +13,7 @@ interface INftOwnable is
|
|
12
13
|
{
|
13
14
|
error ErrorNftOwnableInitialOwnerZero();
|
14
15
|
error ErrorNftOwnableNotOwner(address account);
|
16
|
+
error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
|
15
17
|
|
16
18
|
error ErrorNftOwnableAlreadyLinked(NftId nftId);
|
17
19
|
error ErrorNftOwnableContractNotRegistered(address contractAddress);
|
@@ -3,11 +3,22 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {INftOwnable} from "./INftOwnable.sol";
|
5
5
|
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
+
import {VersionPart} from "../type/Version.sol";
|
6
7
|
|
8
|
+
/// @title IRegisterable
|
9
|
+
/// @dev Marks contracts that are intended to be registered in the registry.
|
10
|
+
///
|
7
11
|
interface IRegisterable is
|
8
12
|
INftOwnable
|
9
13
|
{
|
14
|
+
/// @dev retuns the GIF release version for this contract.
|
15
|
+
/// This
|
16
|
+
function getRelease() external pure returns (VersionPart release);
|
10
17
|
|
18
|
+
/// @dev retuns the object info relevant for registering for this contract
|
19
|
+
/// IMPORTANT information returned by this function may only be used
|
20
|
+
/// before the contract is registered in the registry.
|
21
|
+
/// Once registered this information MUST only be accessed via the registry.
|
11
22
|
function getInitialInfo()
|
12
23
|
external
|
13
24
|
view
|
@@ -17,7 +17,7 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
17
17
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
19
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
|
20
|
+
import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
22
22
|
import {RoleId, RoleIdLib} from "../type/RoleId.sol";
|
23
23
|
import {IAccess} from "../instance/module/IAccess.sol";
|
@@ -48,18 +48,6 @@ abstract contract InstanceLinkedComponent is
|
|
48
48
|
IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
|
49
49
|
}
|
50
50
|
|
51
|
-
function getInstance() public view override returns (IInstance instance) {
|
52
|
-
return _getInstanceLinkedComponentStorage()._instance;
|
53
|
-
}
|
54
|
-
|
55
|
-
function getProductNftId() public view override returns (NftId productNftId) {
|
56
|
-
return getComponentInfo().productNftId;
|
57
|
-
}
|
58
|
-
|
59
|
-
function getAuthorization() external view returns (IAuthorization authorization) {
|
60
|
-
return _getInstanceLinkedComponentStorage()._initialAuthorization;
|
61
|
-
}
|
62
|
-
|
63
51
|
/// @inheritdoc IInstanceLinkedComponent
|
64
52
|
function withdrawFees(Amount amount)
|
65
53
|
external
|
@@ -71,6 +59,16 @@ abstract contract InstanceLinkedComponent is
|
|
71
59
|
return _withdrawFees(amount);
|
72
60
|
}
|
73
61
|
|
62
|
+
/// @inheritdoc IInstanceLinkedComponent
|
63
|
+
function getInstance() public view override returns (IInstance instance) {
|
64
|
+
return _getInstanceLinkedComponentStorage()._instance;
|
65
|
+
}
|
66
|
+
|
67
|
+
/// @inheritdoc IInstanceLinkedComponent
|
68
|
+
function getAuthorization() external view returns (IAuthorization authorization) {
|
69
|
+
return _getInstanceLinkedComponentStorage()._initialAuthorization;
|
70
|
+
}
|
71
|
+
|
74
72
|
function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
|
75
73
|
assembly {
|
76
74
|
$.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
|
@@ -79,50 +77,94 @@ abstract contract InstanceLinkedComponent is
|
|
79
77
|
|
80
78
|
function _initializeInstanceLinkedComponent(
|
81
79
|
address registry,
|
82
|
-
NftId
|
80
|
+
NftId parentNftId,
|
83
81
|
string memory name,
|
84
82
|
address token,
|
85
83
|
ObjectType componentType,
|
86
84
|
IAuthorization authorization,
|
87
85
|
bool isInterceptor,
|
88
86
|
address initialOwner,
|
89
|
-
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
90
87
|
bytes memory componentData // data that will saved with the component info in the instance store
|
91
88
|
)
|
92
89
|
internal
|
93
90
|
virtual
|
94
91
|
onlyInitializing()
|
95
92
|
{
|
93
|
+
// validate registry, nft ids and get parent nft id
|
94
|
+
NftId instanceNftId = _checkAndGetInstanceNftId(
|
95
|
+
registry,
|
96
|
+
parentNftId,
|
97
|
+
componentType);
|
98
|
+
|
96
99
|
// set and check linked instance
|
97
100
|
InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
|
98
101
|
$._instance = IInstance(
|
99
102
|
IRegistry(registry).getObjectAddress(instanceNftId));
|
100
103
|
|
101
|
-
|
102
|
-
revert ErrorComponentNotInstance(instanceNftId);
|
103
|
-
}
|
104
|
-
|
104
|
+
// set component specific parameters
|
105
105
|
_initializeComponent(
|
106
|
-
$._instance.authority(),
|
106
|
+
$._instance.authority(), // instance linked components need to point to instance admin
|
107
107
|
registry,
|
108
|
-
|
108
|
+
parentNftId,
|
109
109
|
name,
|
110
110
|
token,
|
111
111
|
componentType,
|
112
112
|
isInterceptor,
|
113
113
|
initialOwner,
|
114
|
-
|
114
|
+
"", // registry data
|
115
115
|
componentData);
|
116
116
|
|
117
|
-
// set
|
117
|
+
// set instance linked specific parameters
|
118
118
|
$._instanceReader = $._instance.getInstanceReader();
|
119
119
|
$._initialAuthorization = authorization;
|
120
120
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
121
121
|
|
122
|
+
// register interfaces
|
122
123
|
_registerInterface(type(IAccessManaged).interfaceId);
|
123
124
|
_registerInterface(type(IInstanceLinkedComponent).interfaceId);
|
124
125
|
}
|
125
126
|
|
127
|
+
|
128
|
+
function _checkAndGetInstanceNftId(
|
129
|
+
address registryAddress,
|
130
|
+
NftId parentNftId,
|
131
|
+
ObjectType componentType
|
132
|
+
)
|
133
|
+
internal
|
134
|
+
view
|
135
|
+
returns (NftId instanceNftId)
|
136
|
+
{
|
137
|
+
// if product, then parent is already instance
|
138
|
+
if (componentType == PRODUCT()) {
|
139
|
+
_checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
|
140
|
+
return parentNftId;
|
141
|
+
}
|
142
|
+
|
143
|
+
// if not product parent is product, and parent of product is instance
|
144
|
+
IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
|
145
|
+
return registry.getObjectInfo(parentNftId).parentNftId;
|
146
|
+
}
|
147
|
+
|
148
|
+
/// @dev checks the and gets registry.
|
149
|
+
/// validates registry using a provided nft id and expected object type.
|
150
|
+
function _checkAndGetRegistry(
|
151
|
+
address registryAddress,
|
152
|
+
NftId objectNftId,
|
153
|
+
ObjectType requiredType
|
154
|
+
)
|
155
|
+
internal
|
156
|
+
view
|
157
|
+
returns (IRegistry registry)
|
158
|
+
{
|
159
|
+
registry = IRegistry(registryAddress);
|
160
|
+
IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
|
161
|
+
|
162
|
+
if (info.objectType != requiredType) {
|
163
|
+
revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
|
126
168
|
/// @dev for instance linked components the wallet address stored in the instance store.
|
127
169
|
/// updating needs to go throug component service
|
128
170
|
function _setWallet(address newWallet) internal virtual override onlyOwner {
|
@@ -139,7 +181,7 @@ abstract contract InstanceLinkedComponent is
|
|
139
181
|
info = _getInstanceReader().getComponentInfo(getNftId());
|
140
182
|
|
141
183
|
// check if also registered with instance
|
142
|
-
if (info.
|
184
|
+
if (address(info.tokenHandler) != address(0)) {
|
143
185
|
return info;
|
144
186
|
}
|
145
187
|
}
|
@@ -160,12 +202,4 @@ abstract contract InstanceLinkedComponent is
|
|
160
202
|
{
|
161
203
|
return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
|
162
204
|
}
|
163
|
-
|
164
|
-
|
165
|
-
/// @dev returns the service address for the specified domain
|
166
|
-
/// gets address via lookup from registry using the major version form the linked instance
|
167
|
-
function _getServiceAddress(ObjectType domain) internal view returns (address service) {
|
168
|
-
VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
|
169
|
-
return getRegistry().getServiceAddress(domain, majorVersion);
|
170
|
-
}
|
171
205
|
}
|
@@ -94,7 +94,7 @@ abstract contract KeyValueStore is
|
|
94
94
|
|
95
95
|
// update state
|
96
96
|
if(state != KEEP_STATE()) {
|
97
|
-
checkTransition(metadata.objectType, stateOld, state);
|
97
|
+
checkTransition(stateOld, metadata.objectType, stateOld, state);
|
98
98
|
metadata.state = state;
|
99
99
|
|
100
100
|
// solhint-disable-next-line avoid-tx-origin
|
@@ -49,8 +49,9 @@ abstract contract Lifecycle is
|
|
49
49
|
}
|
50
50
|
|
51
51
|
function checkTransition(
|
52
|
+
StateId stateId,
|
52
53
|
ObjectType objectType,
|
53
|
-
StateId
|
54
|
+
StateId expectedFromId,
|
54
55
|
StateId toId
|
55
56
|
)
|
56
57
|
public
|
@@ -58,12 +59,22 @@ abstract contract Lifecycle is
|
|
58
59
|
{
|
59
60
|
// revert if no life cycle support
|
60
61
|
if (_initialState[objectType].eqz()) {
|
61
|
-
revert ErrorNoLifecycle(objectType);
|
62
|
+
revert ErrorNoLifecycle(address(this), objectType);
|
63
|
+
}
|
64
|
+
|
65
|
+
// revert if current state is not expected `from` state
|
66
|
+
if(stateId != expectedFromId) {
|
67
|
+
revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
|
62
68
|
}
|
63
69
|
|
64
70
|
// enforce valid state transition
|
65
|
-
if (!_isValidTransition[objectType][
|
66
|
-
revert ErrorInvalidStateTransition(
|
71
|
+
if (!_isValidTransition[objectType][stateId][toId]) {
|
72
|
+
revert ErrorInvalidStateTransition(
|
73
|
+
address(this),
|
74
|
+
objectType,
|
75
|
+
stateId,
|
76
|
+
toId
|
77
|
+
);
|
67
78
|
}
|
68
79
|
}
|
69
80
|
|
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {InitializableERC165} from "./InitializableERC165.sol";
|
5
5
|
import {INftOwnable} from "./INftOwnable.sol";
|
6
6
|
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
7
8
|
import {RegistryLinked} from "./RegistryLinked.sol";
|
8
9
|
|
9
10
|
contract NftOwnable is
|
@@ -27,18 +28,36 @@ contract NftOwnable is
|
|
27
28
|
_;
|
28
29
|
}
|
29
30
|
|
31
|
+
modifier onlyNftOwner(NftId nftId) {
|
32
|
+
if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
|
33
|
+
revert ErrorNftOwnableNotOwner(msg.sender);
|
34
|
+
}
|
35
|
+
_;
|
36
|
+
}
|
37
|
+
|
38
|
+
modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
|
39
|
+
_checkNftType(nftId, expectedObjectType);
|
40
|
+
_;
|
41
|
+
}
|
42
|
+
|
43
|
+
function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
|
44
|
+
if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
|
45
|
+
revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
30
49
|
|
31
50
|
/// @dev initialization for upgradable contracts
|
32
51
|
// used in _initializeRegisterable
|
33
52
|
function _initializeNftOwnable(
|
34
|
-
address
|
35
|
-
address
|
53
|
+
address registry,
|
54
|
+
address initialOwner
|
36
55
|
)
|
37
56
|
internal
|
38
57
|
virtual
|
39
58
|
onlyInitializing()
|
40
59
|
{
|
41
|
-
_initializeRegistryLinked(
|
60
|
+
_initializeRegistryLinked(registry);
|
42
61
|
_initializeERC165();
|
43
62
|
|
44
63
|
if(initialOwner == address(0)) {
|
@@ -100,6 +119,7 @@ contract NftOwnable is
|
|
100
119
|
|
101
120
|
|
102
121
|
function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
|
122
|
+
// solhint-disable-next-line no-inline-assembly
|
103
123
|
assembly {
|
104
124
|
$.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
|
105
125
|
}
|