@etherisc/gif-next 0.0.2-a6f9f86-582 → 0.0.2-a6faeb6-912
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 +171 -2
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/BaseComponent.sol/BaseComponent.json} +241 -245
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +744 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +127 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +275 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/components/Pool.sol/Pool.json +939 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/components/Product.sol/Product.json +855 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1698 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +496 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +553 -530
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +57 -34
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +937 -31
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +532 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +540 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -77
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +10 -244
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.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/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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +827 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +728 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +760 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1049 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1147 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +197 -116
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +217 -15
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +167 -172
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +324 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +77 -36
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -6
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +111 -5
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +17 -17
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +132 -0
- package/contracts/components/Distribution.sol +163 -0
- package/contracts/components/IBaseComponent.sol +14 -2
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +66 -0
- package/contracts/components/IProductComponent.sol +35 -0
- package/contracts/components/Pool.sol +267 -0
- package/contracts/components/Product.sol +289 -0
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IAccessManagerSimple.sol +1 -1
- package/contracts/instance/IInstance.sol +56 -0
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +34 -0
- package/contracts/instance/Instance.sol +84 -20
- package/contracts/instance/InstanceAccessManager.sol +8 -8
- package/contracts/instance/InstanceBase.sol +41 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +230 -22
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +134 -0
- package/contracts/instance/base/IInstanceBase.sol +23 -0
- package/contracts/instance/base/IKeyValueStore.sol +5 -4
- package/contracts/instance/base/KeyValueStore.sol +4 -20
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/ISetup.sol +6 -1
- package/contracts/instance/module/ITreasury.sol +1 -1
- package/contracts/instance/service/ComponentOwnerService.sol +317 -0
- package/contracts/instance/service/DistributionService.sol +88 -0
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +20 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +51 -0
- package/contracts/instance/service/IProductService.sol +110 -0
- package/contracts/instance/service/PoolService.sol +287 -0
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +570 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +40 -25
- package/contracts/registry/IRegistry.sol +30 -22
- package/contracts/registry/IRegistryService.sol +36 -15
- package/contracts/registry/Registry.sol +133 -176
- package/contracts/registry/RegistryService.sol +159 -170
- package/contracts/registry/RegistryServiceManager.sol +39 -2
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/IRegisterable.sol +1 -1
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +2 -4
- package/contracts/shared/ProxyManager.sol +3 -3
- package/contracts/shared/Registerable.sol +3 -2
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +2 -2
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +6 -6
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/RoleId.sol +19 -4
- package/contracts/types/StateId.sol +4 -0
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/instance/AccessManagedSimple.sol +0 -114
- package/contracts/instance/AccessManagerSimple.sol +0 -682
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/registry/IChainNft.sol +0 -22
@@ -2,13 +2,12 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
5
|
-
import {IService} from "../
|
5
|
+
import {IService} from "../shared/IService.sol";
|
6
6
|
|
7
|
-
import {IChainNft} from "./IChainNft.sol";
|
8
7
|
import {ChainNft} from "./ChainNft.sol";
|
9
8
|
import {IRegistry} from "./IRegistry.sol";
|
10
9
|
import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
11
|
-
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
10
|
+
import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
|
12
11
|
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
13
12
|
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
14
13
|
|
@@ -29,63 +28,40 @@ contract Registry is
|
|
29
28
|
ERC165,
|
30
29
|
IRegistry
|
31
30
|
{
|
32
|
-
|
33
|
-
error NotRegistryService();
|
34
|
-
error ZeroParentAddress();
|
35
|
-
error ContractAlreadyRegistered(address objectAddress);
|
36
|
-
error InvalidServiceVersion(VersionPart majorVersion);
|
37
|
-
error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
|
38
|
-
|
39
|
-
// approve
|
40
|
-
error NotOwner();
|
41
|
-
error NotRegisteredContract(NftId registrarNftId);
|
42
|
-
error NotService(NftId registrarNftId);
|
43
|
-
error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
|
44
|
-
|
45
|
-
uint256 public constant MAJOR_VERSION_MIN = 3;
|
31
|
+
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
46
32
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
33
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
47
34
|
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
48
35
|
string public constant EMPTY_URI = "";
|
49
36
|
|
50
|
-
|
51
|
-
mapping(address object => NftId nftId) _nftIdByAddress;
|
37
|
+
VersionPart internal _majorVersion;
|
52
38
|
|
53
|
-
mapping(NftId
|
54
|
-
|
39
|
+
mapping(NftId nftId => ObjectInfo info) internal _info;
|
40
|
+
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
55
41
|
|
56
42
|
mapping(ObjectType objectType => mapping(
|
57
|
-
ObjectType parentType => bool)) _isValidContractCombination;
|
43
|
+
ObjectType parentType => bool)) internal _isValidContractCombination;
|
58
44
|
|
59
45
|
mapping(ObjectType objectType => mapping(
|
60
|
-
ObjectType parentType => bool)) _isValidObjectCombination;
|
46
|
+
ObjectType parentType => bool)) internal _isValidObjectCombination;
|
61
47
|
|
62
|
-
mapping(NftId nftId => string name) _string;
|
48
|
+
mapping(NftId nftId => string name) internal _string;
|
63
49
|
mapping(bytes32 serviceNameHash => mapping(
|
64
|
-
VersionPart majorVersion => address service)) _service;
|
65
|
-
|
66
|
-
NftId _registryNftId;
|
67
|
-
NftId _serviceNftId; // set in stone upon registry creation
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
/*
|
72
|
-
modifier onlyInitialOwner() {
|
73
|
-
if(
|
74
|
-
msg.sender != getOwner() ||
|
75
|
-
msg.sender != _info[_registryNftId].initialOwner) {
|
76
|
-
revert NotInitialOwner();
|
77
|
-
}
|
78
|
-
}*/
|
50
|
+
VersionPart majorVersion => address service)) internal _service;
|
51
|
+
|
52
|
+
NftId internal _registryNftId;
|
53
|
+
NftId internal _serviceNftId; // set in stone upon registry creation
|
54
|
+
ChainNft internal _chainNft;
|
55
|
+
|
79
56
|
|
80
57
|
modifier onlyOwner() {
|
81
58
|
if(msg.sender != getOwner()) {
|
82
|
-
revert NotOwner();
|
59
|
+
revert NotOwner(msg.sender);
|
83
60
|
}
|
84
61
|
_;
|
85
62
|
}
|
86
63
|
|
87
64
|
modifier onlyRegistryService() {
|
88
|
-
|
89
65
|
if(msg.sender != _info[_serviceNftId].objectAddress) {
|
90
66
|
revert NotRegistryService();
|
91
67
|
}
|
@@ -95,11 +71,13 @@ contract Registry is
|
|
95
71
|
constructor(address registryOwner, VersionPart majorVersion)
|
96
72
|
{
|
97
73
|
require(registryOwner > address(0), "Registry: registry owner is 0");
|
98
|
-
|
74
|
+
|
75
|
+
// major version at constructor time
|
76
|
+
_majorVersion = VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
|
77
|
+
emit LogInitialMajorVersionSet(_majorVersion);
|
99
78
|
|
100
79
|
// deploy NFT
|
101
|
-
|
102
|
-
_chainNft = IChainNft(_chainNftInternal);
|
80
|
+
_chainNft = new ChainNft(address(this));// adds 10kb to deployment size
|
103
81
|
|
104
82
|
// initial registry setup
|
105
83
|
_registerProtocol();
|
@@ -112,9 +90,25 @@ contract Registry is
|
|
112
90
|
_registerInterface(type(IRegistry).interfaceId);
|
113
91
|
}
|
114
92
|
|
93
|
+
// from IRegistry
|
94
|
+
|
95
|
+
/// @dev latest GIF release version
|
96
|
+
function setMajorVersion(VersionPart newMajorVersion)
|
97
|
+
external
|
98
|
+
onlyOwner
|
99
|
+
{
|
100
|
+
// ensure major version increments is one
|
101
|
+
uint256 oldMax = _majorVersion.toInt();
|
102
|
+
uint256 newMax = newMajorVersion.toInt();
|
103
|
+
if (newMax <= oldMax || newMax - oldMax != 1) {
|
104
|
+
revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
|
105
|
+
}
|
106
|
+
|
107
|
+
_majorVersion = newMajorVersion;
|
108
|
+
emit LogMajorVersionSet(_majorVersion);
|
109
|
+
}
|
110
|
+
|
115
111
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
116
|
-
// IMPORTANT: rare case when parentNftId is not registered and == next nftId -> technincally this is ZeroParentAddress error
|
117
|
-
// to catch this check parent address before minting !!!!
|
118
112
|
// TODO service registration means its approval for some type?
|
119
113
|
// TODO registration of precompile addresses
|
120
114
|
function register(ObjectInfo memory info)
|
@@ -139,8 +133,6 @@ contract Registry is
|
|
139
133
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
140
134
|
|
141
135
|
// TODO does external call
|
142
|
-
// check for receiver in registry service?
|
143
|
-
// use unsafe transfer?
|
144
136
|
uint256 mintedTokenId = _chainNft.mint(
|
145
137
|
info.initialOwner,
|
146
138
|
interceptor,
|
@@ -170,33 +162,8 @@ contract Registry is
|
|
170
162
|
_nftIdByAddress[contractAddress] = nftId;
|
171
163
|
|
172
164
|
// special case
|
173
|
-
if(objectType == SERVICE())
|
174
|
-
|
175
|
-
(
|
176
|
-
string memory serviceName,
|
177
|
-
VersionPart majorVersion
|
178
|
-
) = abi.decode(info.data, (string, VersionPart));
|
179
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
180
|
-
|
181
|
-
// TODO MUST guarantee consistency of service.getVersion() and majorVersion here
|
182
|
-
// TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup
|
183
|
-
// TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
|
184
|
-
if(
|
185
|
-
majorVersion.toInt() < MAJOR_VERSION_MIN ||
|
186
|
-
(majorVersion.toInt() > MAJOR_VERSION_MIN &&
|
187
|
-
_service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
|
188
|
-
) {
|
189
|
-
revert InvalidServiceVersion(majorVersion);
|
190
|
-
}
|
191
|
-
|
192
|
-
if(_service[serviceNameHash][majorVersion] != address(0)) {
|
193
|
-
revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
|
194
|
-
}
|
195
|
-
|
196
|
-
_string[nftId] = serviceName;
|
197
|
-
_service[serviceNameHash][majorVersion] = contractAddress;
|
198
|
-
|
199
|
-
emit LogServiceNameRegistration(serviceName, majorVersion);
|
165
|
+
if(objectType == SERVICE()) {
|
166
|
+
_registerService(info);
|
200
167
|
}
|
201
168
|
}
|
202
169
|
else
|
@@ -206,75 +173,37 @@ contract Registry is
|
|
206
173
|
}
|
207
174
|
}
|
208
175
|
|
209
|
-
emit LogRegistration(
|
176
|
+
emit LogRegistration(info);
|
210
177
|
}
|
211
|
-
|
212
|
-
function
|
213
|
-
|
214
|
-
ObjectInfo memory info
|
215
|
-
) external returns (NftId nftId)
|
216
|
-
{
|
217
|
-
revert();
|
178
|
+
/// @dev earliest GIF major version
|
179
|
+
function getMajorVersionMin() external view returns (VersionPart) {
|
180
|
+
return VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
|
218
181
|
}
|
219
|
-
|
220
|
-
|
221
|
-
/// @dev
|
222
|
-
// msg.sender - registry owner
|
223
|
-
// CAN approve only registered service contract
|
224
|
-
// CAN approve any combination specified in _isValidCombination
|
225
|
-
// CAN NOT approve itself
|
226
|
-
// TODO in case where exists exactly one registered service per objectType (and major version):
|
227
|
-
// - registration and approve is a single operation, no need for separate approve() function
|
228
|
-
// - then approve can be used to adding new valid object-parent combinations???
|
229
|
-
function approve(
|
230
|
-
NftId serviceNftId,
|
231
|
-
ObjectType objectType,
|
232
|
-
ObjectType parentType
|
233
|
-
)
|
234
|
-
public
|
235
|
-
onlyOwner()
|
236
|
-
{
|
237
|
-
address serviceAddress = _info[serviceNftId].objectAddress;
|
238
|
-
|
239
|
-
if(_nftIdByAddress[serviceAddress].eqz()) {
|
240
|
-
revert NotRegisteredContract(serviceNftId);
|
241
|
-
}
|
242
|
-
|
243
|
-
if(_info[serviceNftId].objectType != SERVICE()) {
|
244
|
-
revert NotService(serviceNftId);
|
245
|
-
}
|
246
|
-
|
247
|
-
if(
|
248
|
-
_isValidContractCombination[objectType][parentType] == false &&
|
249
|
-
_isValidObjectCombination[objectType][parentType] == false) {
|
250
|
-
revert InvalidTypesCombination(objectType, parentType);
|
251
|
-
}
|
252
182
|
|
253
|
-
|
254
|
-
|
255
|
-
|
183
|
+
// TODO make distinction between active an not yet active version
|
184
|
+
// need to be thought trough, not yet clear if necessary
|
185
|
+
// need to answer question: what is the latest version during the upgrade process?
|
186
|
+
// likely setting up a new gif version does not fit into a single tx
|
187
|
+
// in this case we might want to have a period where the latest version is
|
188
|
+
// in the process of being set up while the latest active version is 1 major release smaller
|
189
|
+
/// @dev latest GIF major version (might not yet be active)
|
190
|
+
function getMajorVersionMax() external view returns (VersionPart) {
|
191
|
+
return _majorVersion;
|
256
192
|
}
|
257
193
|
|
258
|
-
/// @dev
|
259
|
-
|
260
|
-
|
261
|
-
function allowance(
|
262
|
-
NftId nftId,
|
263
|
-
ObjectType object
|
264
|
-
)
|
265
|
-
public
|
266
|
-
view
|
267
|
-
returns (bool)
|
268
|
-
{
|
269
|
-
return _isApproved[nftId][object];
|
194
|
+
/// @dev latest active GIF release version
|
195
|
+
function getMajorVersion() external view returns (VersionPart) {
|
196
|
+
return _majorVersion;
|
270
197
|
}
|
271
198
|
|
272
|
-
// from IRegistry
|
273
199
|
function getObjectCount() external view override returns (uint256) {
|
274
|
-
|
275
200
|
return _chainNft.totalSupply();
|
276
201
|
}
|
277
202
|
|
203
|
+
function getNftId() external view returns (NftId nftId) {
|
204
|
+
return _registryNftId;
|
205
|
+
}
|
206
|
+
|
278
207
|
function getNftId(address object) external view override returns (NftId id) {
|
279
208
|
return _nftIdByAddress[object];
|
280
209
|
}
|
@@ -284,7 +213,6 @@ contract Registry is
|
|
284
213
|
}
|
285
214
|
|
286
215
|
function ownerOf(address contractAddress) public view returns (address) {
|
287
|
-
|
288
216
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
289
217
|
}
|
290
218
|
|
@@ -293,7 +221,6 @@ contract Registry is
|
|
293
221
|
}
|
294
222
|
|
295
223
|
function getObjectInfo(address object) external view override returns (ObjectInfo memory) {
|
296
|
-
|
297
224
|
return _info[_nftIdByAddress[object]];
|
298
225
|
}
|
299
226
|
|
@@ -305,6 +232,10 @@ contract Registry is
|
|
305
232
|
return _nftIdByAddress[object].gtz();
|
306
233
|
}
|
307
234
|
|
235
|
+
function isRegisteredService(address object) external view override returns (bool) {
|
236
|
+
return _nftIdByAddress[object].gtz() && _info[_nftIdByAddress[object]].objectType == SERVICE();
|
237
|
+
}
|
238
|
+
|
308
239
|
function getServiceName(NftId nftId) external view returns (string memory) {
|
309
240
|
return _string[nftId];
|
310
241
|
}
|
@@ -319,7 +250,7 @@ contract Registry is
|
|
319
250
|
return _service[serviceNameHash][majorVersion];
|
320
251
|
}
|
321
252
|
|
322
|
-
function getChainNft() external view override returns (
|
253
|
+
function getChainNft() external view override returns (ChainNft) {
|
323
254
|
return _chainNft;
|
324
255
|
}
|
325
256
|
|
@@ -327,16 +258,68 @@ contract Registry is
|
|
327
258
|
return ownerOf(address(this));
|
328
259
|
}
|
329
260
|
|
330
|
-
// Internals
|
261
|
+
// Internals
|
262
|
+
|
263
|
+
function _registerService(ObjectInfo memory info)
|
264
|
+
internal
|
265
|
+
{
|
266
|
+
(
|
267
|
+
string memory serviceName,
|
268
|
+
VersionPart majorVersion
|
269
|
+
) = abi.decode(info.data, (string, VersionPart));
|
270
|
+
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
271
|
+
|
272
|
+
// ensures consistency of service.getVersion() and majorVersion here
|
273
|
+
if(majorVersion != _majorVersion) {
|
274
|
+
revert InvalidServiceVersion(majorVersion);
|
275
|
+
}
|
276
|
+
|
277
|
+
if(_service[serviceNameHash][majorVersion] != address(0)) {
|
278
|
+
revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
|
279
|
+
}
|
280
|
+
|
281
|
+
_string[info.nftId] = serviceName;
|
282
|
+
_service[serviceNameHash][majorVersion] = info.objectAddress;
|
283
|
+
|
284
|
+
emit LogServiceNameRegistration(serviceName, majorVersion);
|
285
|
+
}
|
286
|
+
|
287
|
+
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
288
|
+
function _getInterceptor(
|
289
|
+
bool isInterceptor,
|
290
|
+
address objectAddress,
|
291
|
+
bool parentIsInterceptor,
|
292
|
+
address parentObjectAddress
|
293
|
+
)
|
294
|
+
internal
|
295
|
+
view
|
296
|
+
returns (address interceptor)
|
297
|
+
{
|
298
|
+
if (objectAddress == address(0)) {
|
299
|
+
if (parentIsInterceptor) {
|
300
|
+
return parentObjectAddress;
|
301
|
+
} else {
|
302
|
+
return address(0);
|
303
|
+
}
|
304
|
+
}
|
305
|
+
|
306
|
+
if (isInterceptor) {
|
307
|
+
return objectAddress;
|
308
|
+
}
|
309
|
+
|
310
|
+
return address(0);
|
311
|
+
}
|
312
|
+
|
313
|
+
// Internals called only in constructor
|
331
314
|
|
332
315
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
333
316
|
function _registerProtocol()
|
334
317
|
internal
|
335
318
|
{
|
336
|
-
uint256 protocolId =
|
319
|
+
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
337
320
|
NftId protocolNftId = toNftId(protocolId);
|
338
321
|
|
339
|
-
|
322
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
340
323
|
|
341
324
|
_info[protocolNftId] = ObjectInfo(
|
342
325
|
protocolNftId,
|
@@ -354,22 +337,22 @@ contract Registry is
|
|
354
337
|
function _registerRegistry(address registryOwner)
|
355
338
|
internal
|
356
339
|
{
|
357
|
-
uint256 registryId =
|
340
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
358
341
|
NftId registryNftId = toNftId(registryId);
|
359
342
|
|
360
343
|
NftId parentNftId;
|
361
344
|
|
362
|
-
if(registryId !=
|
345
|
+
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
363
346
|
{// we're not the global registry
|
364
347
|
_registerGlobalRegistry();
|
365
|
-
parentNftId = toNftId(
|
348
|
+
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
366
349
|
}
|
367
350
|
else
|
368
351
|
{// we are global registry
|
369
|
-
parentNftId = toNftId(
|
352
|
+
parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
|
370
353
|
}
|
371
354
|
|
372
|
-
|
355
|
+
_chainNft.mint(registryOwner, registryId);
|
373
356
|
|
374
357
|
_info[registryNftId] = ObjectInfo(
|
375
358
|
registryNftId,
|
@@ -389,15 +372,15 @@ contract Registry is
|
|
389
372
|
function _registerGlobalRegistry()
|
390
373
|
internal
|
391
374
|
{
|
392
|
-
uint256 globalRegistryId =
|
375
|
+
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
393
376
|
|
394
|
-
|
377
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
395
378
|
|
396
379
|
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
397
380
|
|
398
381
|
_info[globalRegistryNftId] = ObjectInfo(
|
399
382
|
globalRegistryNftId,
|
400
|
-
toNftId(
|
383
|
+
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
401
384
|
REGISTRY(),
|
402
385
|
false, // isInterceptor
|
403
386
|
address(0), // objectAddress
|
@@ -409,10 +392,10 @@ contract Registry is
|
|
409
392
|
function _registerRegistryService(address registryOwner)
|
410
393
|
internal
|
411
394
|
{
|
412
|
-
uint256 serviceId =
|
395
|
+
uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
|
413
396
|
NftId serviceNftId = toNftId(serviceId);
|
414
397
|
|
415
|
-
|
398
|
+
_chainNft.mint(registryOwner, serviceId);
|
416
399
|
|
417
400
|
_info[serviceNftId] = ObjectInfo(
|
418
401
|
serviceNftId,
|
@@ -428,37 +411,11 @@ contract Registry is
|
|
428
411
|
|
429
412
|
string memory serviceName = "RegistryService";
|
430
413
|
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
431
|
-
_service[serviceNameHash][VersionLib.toVersionPart(
|
414
|
+
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
432
415
|
_string[serviceNftId] = serviceName;
|
433
416
|
_serviceNftId = serviceNftId;
|
434
417
|
}
|
435
418
|
|
436
|
-
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
437
|
-
function _getInterceptor(
|
438
|
-
bool isInterceptor,
|
439
|
-
address objectAddress,
|
440
|
-
bool parentIsInterceptor,
|
441
|
-
address parentObjectAddress
|
442
|
-
)
|
443
|
-
internal
|
444
|
-
view
|
445
|
-
returns (address interceptor)
|
446
|
-
{
|
447
|
-
if (objectAddress == address(0)) {
|
448
|
-
if (parentIsInterceptor) {
|
449
|
-
return parentObjectAddress;
|
450
|
-
} else {
|
451
|
-
return address(0);
|
452
|
-
}
|
453
|
-
}
|
454
|
-
|
455
|
-
if (isInterceptor) {
|
456
|
-
return objectAddress;
|
457
|
-
}
|
458
|
-
|
459
|
-
return address(0);
|
460
|
-
}
|
461
|
-
|
462
419
|
/// @dev defines which object - parent types relations are allowed to register
|
463
420
|
// IMPORTANT:
|
464
421
|
// 1) EACH object type MUST have only one parent type across ALL mappings
|