@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
@@ -1,28 +1,43 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {EnumerableSet} from "@
|
5
|
-
import {ShortString, ShortStrings} from "@
|
4
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
5
|
+
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
7
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
8
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
6
9
|
|
7
|
-
import {AccessManagedSimple} from "./AccessManagedSimple.sol";
|
8
|
-
import {AccessManagerSimple} from "./AccessManagerSimple.sol";
|
9
10
|
import {IAccess} from "./module/IAccess.sol";
|
10
11
|
import {IBundle} from "./module/IBundle.sol";
|
11
12
|
import {IPolicy} from "./module/IPolicy.sol";
|
12
13
|
import {IRisk} from "./module/IRisk.sol";
|
13
14
|
import {ISetup} from "./module/ISetup.sol";
|
14
15
|
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
15
|
-
import {KeyValueStore} from "
|
16
|
+
import {KeyValueStore} from "./base/KeyValueStore.sol";
|
17
|
+
import {IInstance} from "./IInstance.sol";
|
18
|
+
import {InstanceReader} from "./InstanceReader.sol";
|
19
|
+
import {BundleManager} from "./BundleManager.sol";
|
16
20
|
import {NftId} from "../types/NftId.sol";
|
17
21
|
import {NumberId} from "../types/NumberId.sol";
|
18
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
|
22
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
|
19
23
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
20
24
|
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
21
25
|
import {StateId, ACTIVE} from "../types/StateId.sol";
|
26
|
+
import {ERC165} from "../shared/ERC165.sol";
|
27
|
+
import {Registerable} from "../shared/Registerable.sol";
|
28
|
+
import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
|
29
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
30
|
+
import {IDistributionService} from "./service/IDistributionService.sol";
|
31
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
32
|
+
import {IProductService} from "./service/IProductService.sol";
|
33
|
+
import {VersionPart} from "../types/Version.sol";
|
34
|
+
import {InstanceBase} from "./InstanceBase.sol";
|
22
35
|
|
23
36
|
contract Instance is
|
24
|
-
|
25
|
-
|
37
|
+
AccessManagedUpgradeable,
|
38
|
+
IInstance,
|
39
|
+
// Initializable,
|
40
|
+
InstanceBase
|
26
41
|
{
|
27
42
|
|
28
43
|
uint64 public constant ADMIN_ROLE = type(uint64).min;
|
@@ -31,20 +46,34 @@ contract Instance is
|
|
31
46
|
|
32
47
|
uint32 public constant EXECUTION_DELAY = 0;
|
33
48
|
|
49
|
+
bool private _initialized;
|
50
|
+
|
34
51
|
mapping(ShortString name => RoleId roleId) internal _role;
|
35
52
|
mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
|
36
53
|
RoleId [] internal _roles;
|
37
54
|
|
38
55
|
mapping(ShortString name => address target) internal _target;
|
39
56
|
|
40
|
-
|
57
|
+
AccessManagerUpgradeable internal _accessManager;
|
58
|
+
InstanceReader internal _instanceReader;
|
59
|
+
BundleManager internal _bundleManager;
|
41
60
|
|
42
|
-
|
43
|
-
|
61
|
+
function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
|
62
|
+
public
|
63
|
+
initializer
|
44
64
|
{
|
45
|
-
|
65
|
+
require(!_initialized, "Contract instance has already been initialized");
|
66
|
+
|
67
|
+
__AccessManaged_init(accessManagerAddress);
|
68
|
+
|
69
|
+
_accessManager = AccessManagerUpgradeable(accessManagerAddress);
|
46
70
|
_createRole(RoleIdLib.toRoleId(ADMIN_ROLE), "AdminRole", false, false);
|
47
71
|
_createRole(RoleIdLib.toRoleId(PUBLIC_ROLE), "PublicRole", false, false);
|
72
|
+
|
73
|
+
_initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
74
|
+
|
75
|
+
_registerInterface(type(IInstance).interfaceId);
|
76
|
+
_initialized = true;
|
48
77
|
}
|
49
78
|
|
50
79
|
//--- Role ------------------------------------------------------//
|
@@ -181,11 +210,11 @@ contract Instance is
|
|
181
210
|
}
|
182
211
|
|
183
212
|
//--- DistributionSetup ------------------------------------------------------//
|
184
|
-
function createDistributionSetup(NftId distributionNftId, ISetup.
|
213
|
+
function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
|
185
214
|
create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
|
186
215
|
}
|
187
216
|
|
188
|
-
function updateDistributionSetup(NftId distributionNftId, ISetup.
|
217
|
+
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
|
189
218
|
update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
|
190
219
|
}
|
191
220
|
|
@@ -194,16 +223,16 @@ contract Instance is
|
|
194
223
|
}
|
195
224
|
|
196
225
|
//--- PoolSetup ------------------------------------------------------//
|
197
|
-
function createPoolSetup(NftId
|
198
|
-
create(_toNftKey32(
|
226
|
+
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
|
227
|
+
create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
|
199
228
|
}
|
200
229
|
|
201
|
-
function updatePoolSetup(NftId
|
202
|
-
update(_toNftKey32(
|
230
|
+
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
|
231
|
+
update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
|
203
232
|
}
|
204
233
|
|
205
|
-
function updatePoolSetupState(NftId
|
206
|
-
updateState(_toNftKey32(
|
234
|
+
function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
|
235
|
+
updateState(_toNftKey32(poolNftId, POOL()), newState);
|
207
236
|
}
|
208
237
|
|
209
238
|
//--- DistributorType ---------------------------------------------------//
|
@@ -387,4 +416,39 @@ contract Instance is
|
|
387
416
|
function toPolicyKey32(NftId policyNftId) public pure returns (Key32) {
|
388
417
|
return policyNftId.toKey32(POLICY());
|
389
418
|
}
|
419
|
+
|
420
|
+
function getComponentOwnerService() external view returns (IComponentOwnerService) {
|
421
|
+
return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
|
422
|
+
}
|
423
|
+
|
424
|
+
function getDistributionService() external view returns (IDistributionService) {
|
425
|
+
return IDistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
|
426
|
+
}
|
427
|
+
|
428
|
+
function getProductService() external view returns (IProductService) {
|
429
|
+
return IProductService(_registry.getServiceAddress("ProductService", VersionPart.wrap(3)));
|
430
|
+
}
|
431
|
+
|
432
|
+
function getPoolService() external view returns (IPoolService) {
|
433
|
+
return IPoolService(_registry.getServiceAddress("PoolService", VersionPart.wrap(3)));
|
434
|
+
}
|
435
|
+
|
436
|
+
function setInstanceReader(InstanceReader instanceReader) external restricted() {
|
437
|
+
require(instanceReader.getInstanceNftId() == getNftId(), "NFT ID of InstanceReader does not match");
|
438
|
+
_instanceReader = instanceReader;
|
439
|
+
}
|
440
|
+
|
441
|
+
function getInstanceReader() external view returns (InstanceReader) {
|
442
|
+
return _instanceReader;
|
443
|
+
}
|
444
|
+
|
445
|
+
function setBundleManager(BundleManager bundleManager) external restricted() {
|
446
|
+
require(address(_bundleManager) == address(0), "BundleManager is set");
|
447
|
+
require(bundleManager.getInstanceNftId() == getNftId(), "NFT ID of BundleManager does not match");
|
448
|
+
_bundleManager = bundleManager;
|
449
|
+
}
|
450
|
+
|
451
|
+
function getBundleManager() external view returns (BundleManager) {
|
452
|
+
return _bundleManager;
|
453
|
+
}
|
390
454
|
}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {EnumerableSet} from "@
|
5
|
-
import {ShortString, ShortStrings} from "@
|
4
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
5
|
+
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
7
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
6
8
|
|
7
|
-
import {AccessManagedSimple} from "./AccessManagedSimple.sol";
|
8
|
-
import {AccessManagerSimple} from "./AccessManagerSimple.sol";
|
9
9
|
import {IBundle} from "./module/IBundle.sol";
|
10
10
|
import {IPolicy} from "./module/IPolicy.sol";
|
11
11
|
import {IRisk} from "./module/IRisk.sol";
|
@@ -21,7 +21,7 @@ import {StateId, ACTIVE} from "../types/StateId.sol";
|
|
21
21
|
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
22
22
|
|
23
23
|
contract InstanceAccessManager is
|
24
|
-
|
24
|
+
AccessManagedUpgradeable
|
25
25
|
{
|
26
26
|
string public constant ADMIN_ROLE_NAME = "AdminRole";
|
27
27
|
string public constant PUBLIC_ROLE_NAME = "PublicRole";
|
@@ -76,12 +76,12 @@ contract InstanceAccessManager is
|
|
76
76
|
mapping(ShortString name => address target) internal _targetForName;
|
77
77
|
address [] internal _targets;
|
78
78
|
|
79
|
-
|
79
|
+
AccessManagerUpgradeable internal _accessManager;
|
80
80
|
|
81
81
|
constructor(address accessManager)
|
82
|
-
AccessManagedSimple(accessManager)
|
83
82
|
{
|
84
|
-
_accessManager =
|
83
|
+
_accessManager = AccessManagerUpgradeable(accessManager);
|
84
|
+
__AccessManaged_init(accessManager);
|
85
85
|
|
86
86
|
_createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
|
87
87
|
_createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
5
|
+
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
|
+
|
7
|
+
import {IAccess} from "./module/IAccess.sol";
|
8
|
+
import {IBundle} from "./module/IBundle.sol";
|
9
|
+
import {IPolicy} from "./module/IPolicy.sol";
|
10
|
+
import {IRisk} from "./module/IRisk.sol";
|
11
|
+
import {ISetup} from "./module/ISetup.sol";
|
12
|
+
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
13
|
+
import {KeyValueStore} from "./base/KeyValueStore.sol";
|
14
|
+
import {IInstance} from "./IInstance.sol";
|
15
|
+
import {InstanceReader} from "./InstanceReader.sol";
|
16
|
+
import {BundleManager} from "./BundleManager.sol";
|
17
|
+
import {NftId} from "../types/NftId.sol";
|
18
|
+
import {NumberId} from "../types/NumberId.sol";
|
19
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
|
20
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
21
|
+
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
22
|
+
import {StateId, ACTIVE} from "../types/StateId.sol";
|
23
|
+
import {ERC165} from "../shared/ERC165.sol";
|
24
|
+
import {Registerable} from "../shared/Registerable.sol";
|
25
|
+
import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
|
26
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
27
|
+
import {IDistributionService} from "./service/IDistributionService.sol";
|
28
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
29
|
+
import {IProductService} from "./service/IProductService.sol";
|
30
|
+
import {VersionPart} from "../types/Version.sol";
|
31
|
+
import {IInstanceBase} from "./IInstanceBase.sol";
|
32
|
+
|
33
|
+
contract InstanceBase is
|
34
|
+
IInstanceBase,
|
35
|
+
KeyValueStore,
|
36
|
+
ERC165,
|
37
|
+
Registerable
|
38
|
+
{
|
39
|
+
|
40
|
+
|
41
|
+
}
|
@@ -0,0 +1,315 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {DistributorType} from "../types/DistributorType.sol";
|
7
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
8
|
+
import {Key32} from "../types/Key32.sol";
|
9
|
+
import {NftId} from "../types/NftId.sol";
|
10
|
+
import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
|
11
|
+
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
|
12
|
+
import {Registerable} from "../shared/Registerable.sol";
|
13
|
+
import {RiskId} from "../types/RiskId.sol";
|
14
|
+
import {UFixed, MathLib, UFixedLib} from "../types/UFixed.sol";
|
15
|
+
import {Version} from "../types/Version.sol";
|
16
|
+
import {StateId} from "../types/StateId.sol";
|
17
|
+
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
19
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
20
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
21
|
+
import {IInstance} from "./IInstance.sol";
|
22
|
+
import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
|
23
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
24
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
25
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
26
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
27
|
+
import {TimestampLib} from "../types/Timestamp.sol";
|
28
|
+
|
29
|
+
|
30
|
+
contract InstanceReader {
|
31
|
+
bool private _initialized;
|
32
|
+
|
33
|
+
IRegistry internal _registry;
|
34
|
+
NftId internal _instanceNftId;
|
35
|
+
IInstance internal _instance;
|
36
|
+
IKeyValueStore internal _store;
|
37
|
+
|
38
|
+
constructor(
|
39
|
+
address registry,
|
40
|
+
NftId instanceNftId
|
41
|
+
)
|
42
|
+
{
|
43
|
+
initialize(registry, instanceNftId);
|
44
|
+
}
|
45
|
+
|
46
|
+
function initialize(address registry, NftId instanceNftId) public {
|
47
|
+
require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
|
48
|
+
|
49
|
+
require(
|
50
|
+
address(registry) != address(0),
|
51
|
+
"ERROR:CRD-001:REGISTRY_ZERO");
|
52
|
+
|
53
|
+
require(
|
54
|
+
instanceNftId.gtz(),
|
55
|
+
"ERROR:CRD-002:NFT_ID_ZERO");
|
56
|
+
|
57
|
+
_registry = IRegistry(registry);
|
58
|
+
_instanceNftId = instanceNftId;
|
59
|
+
IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
|
60
|
+
|
61
|
+
require(
|
62
|
+
instanceInfo.objectType == INSTANCE(),
|
63
|
+
"ERROR:CRD-003:PARENT_NOT_INSTANCE");
|
64
|
+
|
65
|
+
_instance = IInstance(instanceInfo.objectAddress);
|
66
|
+
_store = IKeyValueStore(instanceInfo.objectAddress);
|
67
|
+
|
68
|
+
_initialized = true;
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
// module specific functions
|
73
|
+
|
74
|
+
function getPolicyInfo(NftId policyNftId)
|
75
|
+
public
|
76
|
+
view
|
77
|
+
returns (IPolicy.PolicyInfo memory info)
|
78
|
+
{
|
79
|
+
bytes memory data = _store.getData(toPolicyKey(policyNftId));
|
80
|
+
if (data.length > 0) {
|
81
|
+
return abi.decode(data, (IPolicy.PolicyInfo));
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
function getPolicyState(NftId policyNftId)
|
86
|
+
public
|
87
|
+
view
|
88
|
+
returns (StateId state)
|
89
|
+
{
|
90
|
+
return _instance.getState(toPolicyKey(policyNftId));
|
91
|
+
}
|
92
|
+
|
93
|
+
function getRiskInfo(RiskId riskId)
|
94
|
+
public
|
95
|
+
view
|
96
|
+
returns (IRisk.RiskInfo memory info)
|
97
|
+
{
|
98
|
+
bytes memory data = _store.getData(riskId.toKey32());
|
99
|
+
if (data.length > 0) {
|
100
|
+
return abi.decode(data, (IRisk.RiskInfo));
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
function getTokenHandler(NftId productNftId)
|
105
|
+
public
|
106
|
+
view
|
107
|
+
returns (address tokenHandler)
|
108
|
+
{
|
109
|
+
bytes memory data = _store.getData(toTreasuryKey(productNftId));
|
110
|
+
|
111
|
+
if (data.length > 0) {
|
112
|
+
ITreasury.TreasuryInfo memory info = abi.decode(data, (ITreasury.TreasuryInfo));
|
113
|
+
return address(info.tokenHandler);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
function getTreasuryInfo(NftId productNftId)
|
118
|
+
public
|
119
|
+
view
|
120
|
+
returns (ITreasury.TreasuryInfo memory info)
|
121
|
+
{
|
122
|
+
bytes memory data = _store.getData(toTreasuryKey(productNftId));
|
123
|
+
if (data.length > 0) {
|
124
|
+
return abi.decode(data, (ITreasury.TreasuryInfo));
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
function getBundleInfo(NftId bundleNftId)
|
129
|
+
public
|
130
|
+
view
|
131
|
+
returns (IBundle.BundleInfo memory info)
|
132
|
+
{
|
133
|
+
bytes memory data = _store.getData(toBundleKey(bundleNftId));
|
134
|
+
if (data.length > 0) {
|
135
|
+
return abi.decode(data, (IBundle.BundleInfo));
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
function getDistributorTypeInfo(DistributorType distributorType)
|
140
|
+
public
|
141
|
+
view
|
142
|
+
returns (IDistribution.DistributorTypeInfo memory info)
|
143
|
+
{
|
144
|
+
bytes memory data = _store.getData(distributorType.toKey32());
|
145
|
+
if (data.length > 0) {
|
146
|
+
return abi.decode(data, (IDistribution.DistributorTypeInfo));
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
function getDistributorInfo(NftId distributorNftId)
|
151
|
+
public
|
152
|
+
view
|
153
|
+
returns (IDistribution.DistributorInfo memory info)
|
154
|
+
{
|
155
|
+
bytes memory data = _store.getData(toDistributorKey(distributorNftId));
|
156
|
+
if (data.length > 0) {
|
157
|
+
return abi.decode(data, (IDistribution.DistributorInfo));
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
function getDistributionSetupInfo(NftId distributionNftId)
|
162
|
+
public
|
163
|
+
view
|
164
|
+
returns (ISetup.DistributionSetupInfo memory info)
|
165
|
+
{
|
166
|
+
bytes memory data = _store.getData(toDistributionKey(distributionNftId));
|
167
|
+
if (data.length > 0) {
|
168
|
+
return abi.decode(data, (ISetup.DistributionSetupInfo));
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
function getPoolSetupInfo(NftId poolNftId)
|
173
|
+
public
|
174
|
+
view
|
175
|
+
returns (ISetup.PoolSetupInfo memory info)
|
176
|
+
{
|
177
|
+
bytes memory data = _store.getData(toPoolKey(poolNftId));
|
178
|
+
if (data.length > 0) {
|
179
|
+
return abi.decode(data, (ISetup.PoolSetupInfo));
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
function getProductSetupInfo(NftId productNftId)
|
184
|
+
public
|
185
|
+
view
|
186
|
+
returns (ISetup.ProductSetupInfo memory info)
|
187
|
+
{
|
188
|
+
bytes memory data = _store.getData(toProductKey(productNftId));
|
189
|
+
if (data.length > 0) {
|
190
|
+
return abi.decode(data, (ISetup.ProductSetupInfo));
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
function getReferralInfo(ReferralId referralId)
|
195
|
+
public
|
196
|
+
view
|
197
|
+
returns (IDistribution.ReferralInfo memory info)
|
198
|
+
{
|
199
|
+
bytes memory data = _store.getData(referralId.toKey32());
|
200
|
+
if (data.length > 0) {
|
201
|
+
return abi.decode(data, (IDistribution.ReferralInfo));
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
|
206
|
+
function getMetadata(Key32 key)
|
207
|
+
public
|
208
|
+
view
|
209
|
+
returns (IKeyValueStore.Metadata memory metadata)
|
210
|
+
{
|
211
|
+
return _store.getMetadata(key);
|
212
|
+
}
|
213
|
+
|
214
|
+
|
215
|
+
function toReferralId(
|
216
|
+
NftId distributionNftId,
|
217
|
+
string memory referralCode
|
218
|
+
)
|
219
|
+
public
|
220
|
+
pure
|
221
|
+
returns (ReferralId referralId)
|
222
|
+
{
|
223
|
+
return ReferralLib.toReferralId(
|
224
|
+
distributionNftId,
|
225
|
+
referralCode);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
229
|
+
function getDiscountPercentage(ReferralId referralId)
|
230
|
+
public
|
231
|
+
view
|
232
|
+
returns (
|
233
|
+
UFixed discountPercentage,
|
234
|
+
ReferralStatus status
|
235
|
+
)
|
236
|
+
{
|
237
|
+
IDistribution.ReferralInfo memory info = getReferralInfo(
|
238
|
+
referralId);
|
239
|
+
|
240
|
+
if (info.expiryAt.eqz()) {
|
241
|
+
return (
|
242
|
+
UFixedLib.zero(),
|
243
|
+
REFERRAL_ERROR_UNKNOWN());
|
244
|
+
}
|
245
|
+
|
246
|
+
if (info.expiryAt < TimestampLib.blockTimestamp()) {
|
247
|
+
return (
|
248
|
+
UFixedLib.zero(),
|
249
|
+
REFERRAL_ERROR_EXPIRED());
|
250
|
+
}
|
251
|
+
|
252
|
+
if (info.usedReferrals >= info.maxReferrals) {
|
253
|
+
return (
|
254
|
+
UFixedLib.zero(),
|
255
|
+
REFERRAL_ERROR_EXHAUSTED());
|
256
|
+
}
|
257
|
+
|
258
|
+
return (
|
259
|
+
info.discountPercentage,
|
260
|
+
REFERRAL_OK()
|
261
|
+
);
|
262
|
+
}
|
263
|
+
|
264
|
+
|
265
|
+
function toTreasuryKey(NftId productNftId) public pure returns (Key32) {
|
266
|
+
return productNftId.toKey32(TREASURY());
|
267
|
+
}
|
268
|
+
|
269
|
+
|
270
|
+
function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
|
271
|
+
return policyNftId.toKey32(POLICY());
|
272
|
+
}
|
273
|
+
|
274
|
+
|
275
|
+
function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
|
276
|
+
return distributorNftId.toKey32(DISTRIBUTOR());
|
277
|
+
}
|
278
|
+
|
279
|
+
function toDistributionKey(NftId distributionNftId) public pure returns (Key32) {
|
280
|
+
return distributionNftId.toKey32(DISTRIBUTION());
|
281
|
+
}
|
282
|
+
|
283
|
+
function toBundleKey(NftId poolNftId) public pure returns (Key32) {
|
284
|
+
return poolNftId.toKey32(BUNDLE());
|
285
|
+
}
|
286
|
+
|
287
|
+
function toPoolKey(NftId poolNftId) public pure returns (Key32) {
|
288
|
+
return poolNftId.toKey32(POOL());
|
289
|
+
}
|
290
|
+
|
291
|
+
function toProductKey(NftId productNftId) public pure returns (Key32) {
|
292
|
+
return productNftId.toKey32(PRODUCT());
|
293
|
+
}
|
294
|
+
|
295
|
+
// low level function
|
296
|
+
function getInstance() external view returns (IInstance instance) {
|
297
|
+
return _instance;
|
298
|
+
}
|
299
|
+
|
300
|
+
function getInstanceStore() external view returns (IKeyValueStore store) {
|
301
|
+
return _store;
|
302
|
+
}
|
303
|
+
|
304
|
+
function getInstanceNftId() external view returns (NftId nftId) {
|
305
|
+
return _instanceNftId;
|
306
|
+
}
|
307
|
+
|
308
|
+
function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
|
309
|
+
return UFixedLib.toUFixed(value, exp);
|
310
|
+
}
|
311
|
+
|
312
|
+
function toInt(UFixed value) public pure returns (uint256) {
|
313
|
+
return UFixedLib.toInt(value);
|
314
|
+
}
|
315
|
+
}
|