@etherisc/gif-next 0.0.2-fb8d07b-779 → 0.0.2-fbe22f0-239
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 +136 -2
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +858 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +588 -92
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +208 -143
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +543 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +663 -31
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +648 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +818 -273
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +657 -181
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- 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/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- 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/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1371 -129
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +132 -21
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +293 -656
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +89 -91
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -122
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +149 -57
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +243 -55
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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 +2 -2
- 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/IAccess.sol/IAccess.json +59 -16
- 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/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1091 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1292 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +560 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +272 -91
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +140 -40
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +217 -58
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +785 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +20 -20
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -84
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -247
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1352 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +616 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +256 -180
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +140 -52
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +981 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +548 -0
- 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 +208 -224
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +228 -95
- 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 +222 -330
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +197 -109
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +162 -112
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +124 -29
- 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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +24 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +5 -5
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -20
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +130 -11
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +172 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +130 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -11
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +153 -20
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- 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/shared/Versionable.sol/Versionable.json +2 -2
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +126 -11
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +171 -38
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- 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/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- 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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +230 -0
- package/contracts/components/Distribution.sol +53 -57
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +5 -2
- package/contracts/components/IPoolComponent.sol +54 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +153 -142
- package/contracts/components/Product.sol +109 -128
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +41 -8
- package/contracts/instance/IInstanceService.sol +15 -4
- package/contracts/instance/Instance.sol +65 -240
- package/contracts/instance/InstanceAccessManager.sol +87 -78
- package/contracts/instance/InstanceReader.sol +12 -25
- package/contracts/instance/InstanceService.sol +347 -95
- package/contracts/instance/InstanceServiceManager.sol +10 -12
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/module/IAccess.sol +27 -18
- package/contracts/instance/module/ISetup.sol +7 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +298 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +45 -27
- package/contracts/instance/service/DistributionServiceManager.sol +10 -12
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +54 -0
- package/contracts/instance/service/IPolicyService.sol +88 -0
- package/contracts/instance/service/IPoolService.sol +6 -23
- package/contracts/instance/service/IProductService.sol +6 -73
- package/contracts/instance/service/PolicyService.sol +524 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +40 -124
- package/contracts/instance/service/PoolServiceManager.sol +10 -12
- package/contracts/instance/service/ProductService.sol +233 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +38 -33
- package/contracts/registry/IRegistryService.sol +45 -13
- package/contracts/registry/Registry.sol +223 -250
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +86 -224
- package/contracts/registry/RegistryServiceManager.sol +18 -36
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +11 -9
- package/contracts/shared/ERC165.sol +12 -11
- package/contracts/shared/INftOwnable.sol +6 -1
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +93 -42
- package/contracts/shared/PolicyHolder.sol +52 -0
- package/contracts/shared/ProxyManager.sol +6 -5
- package/contracts/shared/Registerable.sol +15 -24
- package/contracts/shared/Service.sol +18 -13
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/ObjectType.sol +5 -1
- package/contracts/types/RoleId.sol +10 -9
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- 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 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/instance/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -125
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,87 +1,127 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
// import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
|
+
|
6
|
+
import {ERC165} from "./ERC165.sol";
|
4
7
|
import {INftOwnable} from "./INftOwnable.sol";
|
5
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
6
9
|
import {NftId, zeroNftId} from "../types/NftId.sol";
|
7
10
|
|
8
|
-
contract NftOwnable is
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
contract NftOwnable is
|
12
|
+
ERC165,
|
13
|
+
INftOwnable
|
14
|
+
{
|
15
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
|
16
|
+
bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
|
17
|
+
|
18
|
+
struct NftOwnableStorage {
|
19
|
+
IRegistry _registry;
|
20
|
+
NftId _nftId;
|
21
|
+
address _initialOwner;
|
22
|
+
}
|
13
23
|
|
14
24
|
/// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
|
15
25
|
modifier onlyOwner() {
|
16
|
-
|
17
|
-
|
18
|
-
// owner == address(0) is eg uninitialized upgradable contract
|
19
|
-
if (owner != address(0) && msg.sender != owner) {
|
26
|
+
if (msg.sender != getOwner()) {
|
20
27
|
revert ErrorNotOwner(msg.sender);
|
21
28
|
}
|
22
29
|
_;
|
23
30
|
}
|
24
31
|
|
25
|
-
|
26
|
-
|
32
|
+
|
33
|
+
/// @dev initialization for upgradable contracts
|
34
|
+
// used in _initializeRegisterable
|
35
|
+
function initializeNftOwnable(
|
36
|
+
address initialOwner,
|
37
|
+
address registryAddress
|
38
|
+
)
|
39
|
+
public
|
40
|
+
virtual
|
41
|
+
onlyInitializing()
|
42
|
+
{
|
43
|
+
_setInitialOwner(initialOwner);
|
44
|
+
_setRegistry(registryAddress);
|
45
|
+
initializeERC165();
|
46
|
+
registerInterface(type(INftOwnable).interfaceId);
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
function initializeOwner(address initialOwner)
|
51
|
+
public
|
52
|
+
initializer()
|
53
|
+
{
|
54
|
+
_setInitialOwner(initialOwner);
|
55
|
+
initializeERC165();
|
56
|
+
registerInterface(type(INftOwnable).interfaceId);
|
27
57
|
}
|
28
58
|
|
59
|
+
|
29
60
|
/// @dev links this contract to nft after registration
|
30
61
|
// needs to be done once per registered contract and
|
31
62
|
// reduces registry calls to check ownership
|
32
63
|
// does not need any protection as function can only do the "right thing"
|
33
|
-
function linkToRegisteredNftId()
|
34
|
-
|
35
|
-
|
64
|
+
function linkToRegisteredNftId()
|
65
|
+
public
|
66
|
+
virtual
|
67
|
+
{
|
68
|
+
NftOwnableStorage storage $ = _getNftOwnableStorage();
|
69
|
+
|
70
|
+
if ($._nftId.gtz()) {
|
71
|
+
revert ErrorAlreadyLinked(address($._registry), $._nftId);
|
36
72
|
}
|
37
73
|
|
38
|
-
if (address(_registry) == address(0)) {
|
74
|
+
if (address($._registry) == address(0)) {
|
39
75
|
revert ErrorRegistryNotInitialized();
|
40
76
|
}
|
41
77
|
|
42
78
|
address contractAddress = address(this);
|
43
79
|
|
44
|
-
if (
|
80
|
+
if (!$._registry.isRegistered(contractAddress)) {
|
45
81
|
revert ErrorContractNotRegistered(contractAddress);
|
46
82
|
}
|
47
83
|
|
48
|
-
_nftId = _registry.getNftId(contractAddress);
|
84
|
+
$._nftId = $._registry.getNftId(contractAddress);
|
49
85
|
}
|
50
86
|
|
51
87
|
|
52
88
|
function getRegistry() public view virtual override returns (IRegistry) {
|
53
|
-
return _registry;
|
89
|
+
return _getNftOwnableStorage()._registry;
|
54
90
|
}
|
55
91
|
|
56
|
-
|
57
92
|
function getNftId() public view virtual override returns (NftId) {
|
58
|
-
return _nftId;
|
93
|
+
return _getNftOwnableStorage()._nftId;
|
59
94
|
}
|
60
95
|
|
96
|
+
function getInitialOwner() public view returns (address) {
|
97
|
+
return _getNftOwnableStorage()._initialOwner;
|
98
|
+
}
|
61
99
|
|
62
100
|
function getOwner() public view virtual override returns (address) {
|
63
|
-
|
64
|
-
|
101
|
+
NftOwnableStorage storage $ = _getNftOwnableStorage();
|
102
|
+
|
103
|
+
if ($._nftId.gtz()) {
|
104
|
+
return $._registry.ownerOf($._nftId);
|
65
105
|
}
|
66
106
|
|
67
|
-
return _initialOwner;
|
107
|
+
return $._initialOwner;
|
68
108
|
}
|
69
109
|
|
70
|
-
|
71
|
-
///
|
72
|
-
|
73
|
-
function _initializeNftOwnable(
|
74
|
-
address initialOwner,
|
75
|
-
address registryAddress
|
76
|
-
)
|
110
|
+
/// @dev set initialOwner
|
111
|
+
/// initial owner may only be set during initialization
|
112
|
+
function _setInitialOwner(address initialOwner)
|
77
113
|
internal
|
78
114
|
virtual
|
115
|
+
onlyInitializing()
|
79
116
|
{
|
80
|
-
|
81
|
-
|
82
|
-
|
117
|
+
if(initialOwner == address(0)) {
|
118
|
+
revert ErrorInitialOwnerZero();
|
119
|
+
}
|
83
120
|
|
121
|
+
_getNftOwnableStorage()._initialOwner = initialOwner;
|
122
|
+
}
|
84
123
|
|
124
|
+
// TODO check if function can be refactored to work with a registry address set in an initializer
|
85
125
|
/// @dev used in constructor of registry service manager
|
86
126
|
// links ownership of registry service manager ot nft owner of registry service
|
87
127
|
function _linkToNftOwnable(
|
@@ -92,27 +132,31 @@ contract NftOwnable is INftOwnable {
|
|
92
132
|
onlyOwner()
|
93
133
|
returns (NftId)
|
94
134
|
{
|
95
|
-
|
96
|
-
|
135
|
+
NftOwnableStorage storage $ = _getNftOwnableStorage();
|
136
|
+
|
137
|
+
if ($._nftId.gtz()) {
|
138
|
+
revert ErrorAlreadyLinked(address($._registry), $._nftId);
|
97
139
|
}
|
98
140
|
|
99
141
|
_setRegistry(registryAddress);
|
100
142
|
|
101
|
-
if (
|
143
|
+
if (!$._registry.isRegistered(nftOwnableAddress)) {
|
102
144
|
revert ErrorContractNotRegistered(nftOwnableAddress);
|
103
145
|
}
|
104
146
|
|
105
|
-
_nftId = _registry.getNftId(nftOwnableAddress);
|
147
|
+
$._nftId = $._registry.getNftId(nftOwnableAddress);
|
106
148
|
|
107
|
-
return _nftId;
|
149
|
+
return $._nftId;
|
108
150
|
}
|
109
151
|
|
110
152
|
|
111
153
|
function _setRegistry(address registryAddress)
|
112
154
|
private
|
113
155
|
{
|
114
|
-
|
115
|
-
|
156
|
+
NftOwnableStorage storage $ = _getNftOwnableStorage();
|
157
|
+
|
158
|
+
if (address($._registry) != address(0)) {
|
159
|
+
revert ErrorRegistryAlreadyInitialized(address($._registry));
|
116
160
|
}
|
117
161
|
|
118
162
|
if (registryAddress == address(0)) {
|
@@ -123,9 +167,9 @@ contract NftOwnable is INftOwnable {
|
|
123
167
|
revert ErrorNotRegistry(registryAddress);
|
124
168
|
}
|
125
169
|
|
126
|
-
_registry = IRegistry(registryAddress);
|
170
|
+
$._registry = IRegistry(registryAddress);
|
127
171
|
|
128
|
-
try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
|
172
|
+
try $._registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
|
129
173
|
if (!isRegistry) {
|
130
174
|
revert ErrorNotRegistry(registryAddress);
|
131
175
|
}
|
@@ -133,4 +177,11 @@ contract NftOwnable is INftOwnable {
|
|
133
177
|
revert ErrorNotRegistry(registryAddress);
|
134
178
|
}
|
135
179
|
}
|
180
|
+
|
181
|
+
|
182
|
+
function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
|
183
|
+
assembly {
|
184
|
+
$.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
|
185
|
+
}
|
186
|
+
}
|
136
187
|
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
|
6
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
7
|
+
|
8
|
+
import {ERC165} from "./ERC165.sol";
|
9
|
+
import {IPolicyHolder} from "./IPolicyHolder.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {NftId} from "../types/NftId.sol";
|
12
|
+
import {NumberId} from "../types/NumberId.sol";
|
13
|
+
|
14
|
+
contract PolicyHolder is
|
15
|
+
ERC165,
|
16
|
+
IPolicyHolder
|
17
|
+
{
|
18
|
+
|
19
|
+
/// @dev empty default implementation
|
20
|
+
function policyCreated(NftId policyNftId) external virtual { }
|
21
|
+
|
22
|
+
/// @dev empty default implementation
|
23
|
+
function payoutProcessed(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external virtual { }
|
24
|
+
|
25
|
+
/// @dev determines beneficiary address that will be used in payouts targeting this contract
|
26
|
+
/// returned address will override GIF default where the policy nft holder is treated as beneficiary
|
27
|
+
function getBeneficiary(NftId policyId, NumberId claimId) external virtual view returns (address beneficiary) {
|
28
|
+
// TODO add implementation
|
29
|
+
}
|
30
|
+
|
31
|
+
//--- IERC165 functions ---------------//
|
32
|
+
function onERC721Received(
|
33
|
+
address, // operator
|
34
|
+
address, // from
|
35
|
+
uint256, // tokenId
|
36
|
+
bytes calldata // data
|
37
|
+
)
|
38
|
+
external
|
39
|
+
virtual
|
40
|
+
returns (bytes4)
|
41
|
+
{
|
42
|
+
return IERC721Receiver.onERC721Received.selector;
|
43
|
+
}
|
44
|
+
|
45
|
+
function _setBeneficiary(address beneficiary) internal {
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
function _setBeneficiary(NftId policyId, address beneficiary) internal {
|
50
|
+
|
51
|
+
}
|
52
|
+
}
|
@@ -27,8 +27,9 @@ contract ProxyManager is
|
|
27
27
|
|
28
28
|
/// @dev only used to capture proxy owner
|
29
29
|
constructor()
|
30
|
-
|
31
|
-
|
30
|
+
{
|
31
|
+
initializeOwner(msg.sender);
|
32
|
+
}
|
32
33
|
|
33
34
|
/// @dev deploy initial contract
|
34
35
|
function deploy(address initialImplementation, bytes memory initializationData)
|
@@ -38,6 +39,7 @@ contract ProxyManager is
|
|
38
39
|
returns (IVersionable versionable)
|
39
40
|
{
|
40
41
|
if (_isDeployed) { revert ErrorAlreadyDeployed(); }
|
42
|
+
_isDeployed = true;
|
41
43
|
|
42
44
|
address currentProxyOwner = getOwner(); // used by implementation
|
43
45
|
address initialProxyAdminOwner = address(this); // used by proxy
|
@@ -49,7 +51,6 @@ contract ProxyManager is
|
|
49
51
|
data
|
50
52
|
);
|
51
53
|
|
52
|
-
_isDeployed = true;
|
53
54
|
versionable = IVersionable(address(_proxy));
|
54
55
|
|
55
56
|
emit LogProxyDeployed(address(_proxy), initialImplementation);
|
@@ -81,11 +82,11 @@ contract ProxyManager is
|
|
81
82
|
}
|
82
83
|
|
83
84
|
function getDeployData(address implementation, address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
|
84
|
-
return abi.encodeWithSelector(IVersionable.
|
85
|
+
return abi.encodeWithSelector(IVersionable.initializeVersionable.selector, implementation, proxyOwner, deployData);
|
85
86
|
}
|
86
87
|
|
87
88
|
function getUpgradeData(address implementation, address proxyOwner, bytes memory upgradeData) public pure returns (bytes memory data) {
|
88
|
-
return abi.encodeWithSelector(IVersionable.
|
89
|
+
return abi.encodeWithSelector(IVersionable.upgradeVersionable.selector, implementation, proxyOwner, upgradeData);
|
89
90
|
}
|
90
91
|
|
91
92
|
function getProxy() public returns (UpgradableProxyWithAdmin) {
|
@@ -11,11 +11,7 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
11
11
|
import {IRegisterable} from "./IRegisterable.sol";
|
12
12
|
import {Versionable} from "./Versionable.sol";
|
13
13
|
|
14
|
-
import {ERC165} from "./ERC165.sol";
|
15
|
-
|
16
14
|
contract Registerable is
|
17
|
-
ERC165,
|
18
|
-
Initializable,
|
19
15
|
NftOwnable,
|
20
16
|
IRegisterable
|
21
17
|
{
|
@@ -37,7 +33,7 @@ contract Registerable is
|
|
37
33
|
}
|
38
34
|
}
|
39
35
|
|
40
|
-
function
|
36
|
+
function initializeRegisterable(
|
41
37
|
address registryAddress,
|
42
38
|
NftId parentNftId,
|
43
39
|
ObjectType objectType,
|
@@ -45,12 +41,11 @@ contract Registerable is
|
|
45
41
|
address initialOwner,
|
46
42
|
bytes memory data
|
47
43
|
)
|
48
|
-
|
49
|
-
//onlyInitializing//TODO uncomment when "fully" upgradeable
|
44
|
+
public
|
50
45
|
virtual
|
46
|
+
onlyInitializing
|
51
47
|
{
|
52
|
-
|
53
|
-
_initializeNftOwnable(
|
48
|
+
initializeNftOwnable(
|
54
49
|
initialOwner,
|
55
50
|
registryAddress);
|
56
51
|
|
@@ -63,7 +58,7 @@ contract Registerable is
|
|
63
58
|
$._isInterceptor = isInterceptor;
|
64
59
|
$._data = data;
|
65
60
|
|
66
|
-
|
61
|
+
registerInterface(type(IRegisterable).interfaceId);
|
67
62
|
}
|
68
63
|
|
69
64
|
|
@@ -71,20 +66,16 @@ contract Registerable is
|
|
71
66
|
public
|
72
67
|
view
|
73
68
|
virtual
|
74
|
-
returns (IRegistry.ObjectInfo memory
|
69
|
+
returns (IRegistry.ObjectInfo memory info)
|
75
70
|
{
|
76
|
-
RegisterableStorage
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
$._data
|
86
|
-
),
|
87
|
-
bytes("")
|
88
|
-
);
|
71
|
+
RegisterableStorage memory $ = _getRegisterableStorage();
|
72
|
+
info = IRegistry.ObjectInfo(
|
73
|
+
zeroNftId(),
|
74
|
+
$._parentNftId,
|
75
|
+
$._objectType,
|
76
|
+
$._isInterceptor,
|
77
|
+
address(this),
|
78
|
+
getInitialOwner(),
|
79
|
+
$._data);
|
89
80
|
}
|
90
81
|
}
|
@@ -1,21 +1,26 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IService} from "./IService.sol";
|
6
|
-
import {IVersionable} from "./IVersionable.sol";
|
4
|
+
import {ObjectType, SERVICE} from "../types/ObjectType.sol";
|
7
5
|
import {NftId, zeroNftId} from "../types/NftId.sol";
|
8
|
-
import {RegisterableUpgradable} from "./RegisterableUpgradable.sol";
|
9
|
-
import {SERVICE} from "../types/ObjectType.sol";
|
10
6
|
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
7
|
+
|
8
|
+
import {Versionable} from "./Versionable.sol";
|
9
|
+
import {IService} from "./IService.sol";
|
10
|
+
import {IVersionable} from "./IVersionable.sol";
|
11
11
|
import {Versionable} from "./Versionable.sol";
|
12
|
+
import {Registerable} from "./Registerable.sol";
|
13
|
+
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
|
12
16
|
|
13
17
|
/// @dev service base contract
|
14
18
|
abstract contract Service is
|
15
|
-
|
19
|
+
Registerable,
|
20
|
+
Versionable,
|
16
21
|
IService
|
17
22
|
{
|
18
|
-
function
|
23
|
+
function getDomain() public pure virtual override returns(ObjectType);
|
19
24
|
|
20
25
|
function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
|
21
26
|
return getVersion().toMajorPart();
|
@@ -31,21 +36,21 @@ abstract contract Service is
|
|
31
36
|
return VersionLib.toVersion(3,0,0);
|
32
37
|
}
|
33
38
|
|
34
|
-
function
|
39
|
+
function initializeService(
|
35
40
|
address registry,
|
36
41
|
address initialOwner
|
37
42
|
)
|
38
|
-
|
43
|
+
public
|
39
44
|
virtual
|
40
|
-
|
45
|
+
onlyInitializing()
|
41
46
|
{
|
42
47
|
// service must provide its name and version upon registration
|
43
|
-
bytes memory data = abi.encode(
|
48
|
+
bytes memory data = abi.encode(getDomain(), getMajorVersion());
|
44
49
|
NftId registryNftId = _getRegistryNftId(registry);
|
45
50
|
bool isInterceptor = false;
|
46
51
|
|
47
|
-
|
48
|
-
|
52
|
+
initializeRegisterable(registry, registryNftId, SERVICE(), isInterceptor, initialOwner, data);
|
53
|
+
registerInterface(type(IService).interfaceId);
|
49
54
|
}
|
50
55
|
|
51
56
|
// this is just a conveniene function, actual validation will be done upon registration
|
@@ -31,7 +31,8 @@ abstract contract Versionable is
|
|
31
31
|
_disableInitializers();
|
32
32
|
}
|
33
33
|
// TODO write test where new version of private _updateVersionHistory is added and used...
|
34
|
-
|
34
|
+
|
35
|
+
function initializeVersionable(
|
35
36
|
address implementation,
|
36
37
|
address activatedBy,
|
37
38
|
bytes memory data
|
@@ -44,7 +45,7 @@ abstract contract Versionable is
|
|
44
45
|
}
|
45
46
|
|
46
47
|
// TODO activatedBy MUST ALWAYS be an owner?
|
47
|
-
function
|
48
|
+
function upgradeVersionable(
|
48
49
|
address implementation,
|
49
50
|
address activatedBy,
|
50
51
|
bytes memory data
|
@@ -13,6 +13,6 @@ contract TestRegisterable is Registerable {
|
|
13
13
|
// solhint-disable-next-line no-empty-blocks
|
14
14
|
{
|
15
15
|
bytes memory data = "";
|
16
|
-
|
16
|
+
initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
|
17
17
|
}
|
18
18
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {ObjectType, PRODUCT} from "../../contracts/types/ObjectType.sol";
|
4
5
|
import {NftId} from "../../contracts/types/NftId.sol";
|
5
6
|
import {Version, VersionLib} from "../../contracts/types/Version.sol";
|
6
7
|
import {Service} from "../../contracts/shared/Service.sol";
|
@@ -15,10 +16,10 @@ contract TestService is Service {
|
|
15
16
|
constructor(address registry, NftId registryNftId, address initialOwner)
|
16
17
|
// solhint-disable-next-line no-empty-blocks
|
17
18
|
{
|
18
|
-
|
19
|
+
initializeService(registry, initialOwner);
|
19
20
|
}
|
20
21
|
|
21
|
-
function
|
22
|
-
return
|
22
|
+
function getDomain() public pure override returns(ObjectType) {
|
23
|
+
return PRODUCT();
|
23
24
|
}
|
24
25
|
}
|
@@ -11,35 +11,37 @@ library LibNftIdSet {
|
|
11
11
|
mapping(NftId nftid => uint256 index) at;
|
12
12
|
}
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
error ErrorNftIdSetAlreadyAdded(NftId nftId);
|
15
|
+
error ErrorNftIdSetNotInSet(NftId nftId);
|
16
|
+
|
17
|
+
|
18
|
+
function add(Set storage set, NftId nftId) external {
|
19
|
+
if (set.at[nftId] > 0) {
|
20
|
+
revert ErrorNftIdSetAlreadyAdded(nftId);
|
21
21
|
}
|
22
|
+
|
23
|
+
set.ids.push(nftId);
|
24
|
+
set.at[nftId] = set.ids.length;
|
22
25
|
}
|
23
26
|
|
24
|
-
function remove(Set storage set, NftId nftId) external
|
27
|
+
function remove(Set storage set, NftId nftId) external {
|
25
28
|
uint256 nftIdIndex = set.at[nftId];
|
26
29
|
|
27
|
-
if (nftIdIndex
|
28
|
-
|
29
|
-
uint256 lastIndex = set.ids.length - 1;
|
30
|
-
|
31
|
-
if (lastIndex != toDeleteIndex) {
|
32
|
-
NftId lastId = set.ids[lastIndex];
|
33
|
-
set.ids[toDeleteIndex] = lastId;
|
34
|
-
set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
|
35
|
-
}
|
36
|
-
|
37
|
-
set.ids.pop();
|
38
|
-
delete set.at[nftId];
|
39
|
-
return true;
|
40
|
-
} else {
|
41
|
-
return false;
|
30
|
+
if (nftIdIndex == 0) {
|
31
|
+
revert ErrorNftIdSetNotInSet(nftId);
|
42
32
|
}
|
33
|
+
|
34
|
+
uint256 toDeleteIndex = nftIdIndex - 1;
|
35
|
+
uint256 lastIndex = set.ids.length - 1;
|
36
|
+
|
37
|
+
if (lastIndex != toDeleteIndex) {
|
38
|
+
NftId lastId = set.ids[lastIndex];
|
39
|
+
set.ids[toDeleteIndex] = lastId;
|
40
|
+
set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
|
41
|
+
}
|
42
|
+
|
43
|
+
set.ids.pop();
|
44
|
+
delete set.at[nftId];
|
43
45
|
}
|
44
46
|
|
45
47
|
function isEmpty(Set storage set) external view returns(bool empty) {
|
@@ -50,7 +52,7 @@ library LibNftIdSet {
|
|
50
52
|
return set.at[nftId] > 0;
|
51
53
|
}
|
52
54
|
|
53
|
-
function
|
55
|
+
function size(Set storage set) external view returns(uint256 length) {
|
54
56
|
return set.ids.length;
|
55
57
|
}
|
56
58
|
|
@@ -90,10 +90,14 @@ function RISK() pure returns (ObjectType) {
|
|
90
90
|
return toObjectType(200);
|
91
91
|
}
|
92
92
|
|
93
|
-
function
|
93
|
+
function APPLICATION() pure returns (ObjectType) {
|
94
94
|
return toObjectType(210);
|
95
95
|
}
|
96
96
|
|
97
|
+
function POLICY() pure returns (ObjectType) {
|
98
|
+
return toObjectType(211);
|
99
|
+
}
|
100
|
+
|
97
101
|
function BUNDLE() pure returns (ObjectType) {
|
98
102
|
return toObjectType(220);
|
99
103
|
}
|
@@ -24,22 +24,23 @@ function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "Produc
|
|
24
24
|
|
25
25
|
function ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(0); }
|
26
26
|
|
27
|
-
// TODO correct numbers (maybe they are already defined in RegistryService)
|
28
27
|
function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(100); }
|
29
28
|
function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(200); }
|
30
29
|
function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(300); }
|
31
30
|
function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(400); }
|
32
31
|
|
33
|
-
function DISTRIBUTION_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1000); }
|
34
|
-
function POLICY_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1100); }
|
35
|
-
function BUNDLE_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1200); }
|
36
|
-
function POOL_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1300); }
|
37
|
-
function PRODUCT_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1400); }
|
38
32
|
|
39
|
-
function
|
40
|
-
function
|
33
|
+
function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2000); }
|
34
|
+
function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2100); }
|
35
|
+
function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2200); }
|
36
|
+
function PRODUCT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2300); }
|
37
|
+
function POLICY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2400); }
|
38
|
+
function BUNDLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2500); }
|
41
39
|
|
42
|
-
|
40
|
+
|
41
|
+
function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1500); }
|
42
|
+
function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1600); }
|
43
|
+
function RELEASE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1700); }
|
43
44
|
|
44
45
|
// @dev Returns true iff role ids a and b are identical
|
45
46
|
function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@etherisc/gif-next",
|
3
|
-
"version": "0.0.2-
|
3
|
+
"version": "0.0.2-fbe22f0-239",
|
4
4
|
"description": "This is the repository for the next version of the Generic Insurance Framework (GIF) smart contracts. ",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
@@ -32,8 +32,8 @@
|
|
32
32
|
"@nomicfoundation/hardhat-foundry": "^1.1.1",
|
33
33
|
"@nomicfoundation/hardhat-toolbox": "^3.0.0",
|
34
34
|
"@nomicfoundation/hardhat-verify": "^1.1.1",
|
35
|
-
"@typescript-eslint/eslint-plugin": "^
|
36
|
-
"@typescript-eslint/parser": "^
|
35
|
+
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
36
|
+
"@typescript-eslint/parser": "^7.1.0",
|
37
37
|
"dotenv": "^16.3.1",
|
38
38
|
"eslint": "^8.50.0",
|
39
39
|
"hardhat": "^2.17.2",
|