@etherisc/gif-next 0.0.2-f2b0fa2-473 → 0.0.2-f4f92b3-338
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 +67 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +656 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +329 -90
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +171 -158
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +496 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +568 -2
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +596 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +360 -118
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +342 -147
- 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/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/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 +1657 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +162 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +232 -632
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +231 -114
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +182 -58
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +328 -67
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -23
- 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} +138 -16
- 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/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +772 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IBundleService.sol/IBundleService.json} +295 -46
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -18
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -82
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +25 -245
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +806 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +856 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -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 +339 -59
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +220 -111
- 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 +301 -188
- 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 +69 -130
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -91
- 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 +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -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/IRegisterable.sol/IRegisterable.json +0 -5
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +13 -18
- 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 +19 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +19 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -11
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +26 -18
- 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/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 +19 -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 +44 -36
- 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/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/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/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 +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/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/Component.sol +222 -0
- package/contracts/components/Distribution.sol +33 -55
- package/contracts/components/IComponent.sol +43 -0
- package/contracts/components/IDistributionComponent.sol +5 -1
- package/contracts/components/IPoolComponent.sol +11 -3
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +65 -83
- package/contracts/components/Product.sol +70 -109
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +54 -10
- package/contracts/instance/IInstanceService.sol +24 -1
- package/contracts/instance/Instance.sol +76 -243
- package/contracts/instance/InstanceAccessManager.sol +88 -78
- package/contracts/instance/InstanceReader.sol +34 -21
- package/contracts/instance/InstanceService.sol +311 -51
- 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 -17
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/ISetup.sol +3 -0
- package/contracts/instance/service/BundleService.sol +293 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +106 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +6 -23
- package/contracts/instance/service/IProductService.sol +6 -73
- package/contracts/instance/service/PolicyService.sol +538 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +109 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +232 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +47 -6
- package/contracts/registry/IRegistryService.sol +44 -14
- package/contracts/registry/Registry.sol +243 -214
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +81 -258
- package/contracts/registry/RegistryServiceManager.sol +20 -22
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +112 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/IRegisterable.sol +1 -3
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/NftOwnable.sol +7 -4
- package/contracts/shared/ProxyManager.sol +1 -1
- package/contracts/shared/Registerable.sol +11 -14
- package/contracts/shared/Service.sol +14 -8
- package/contracts/test/TestService.sol +3 -2
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/RoleId.sol +14 -6
- package/contracts/types/StateId.sol +4 -0
- package/contracts/types/Version.sol +4 -1
- package/package.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
- 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/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 -86
- package/contracts/components/IBaseComponent.sol +0 -24
- package/contracts/instance/AccessManagedSimple.sol +0 -114
- package/contracts/instance/AccessManagerSimple.sol +0 -682
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -49
- 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,95 +1,54 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
         | 
| 5 | 
            +
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 4 6 | 
             
            import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
         | 
| 5 7 | 
             
            import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
         | 
| 6 8 |  | 
| 7 | 
            -
            import { | 
| 8 | 
            -
            import { | 
| 9 | 
            -
            import { | 
| 10 | 
            -
            import {IPolicy} from "./module/IPolicy.sol";
         | 
| 11 | 
            -
            import {IRisk} from "./module/IRisk.sol";
         | 
| 12 | 
            -
            import {ISetup} from "./module/ISetup.sol";
         | 
| 13 | 
            -
            import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
         | 
| 14 | 
            -
            import {KeyValueStore} from "./base/KeyValueStore.sol";
         | 
| 15 | 
            -
            import {NftId} from "../types/NftId.sol";
         | 
| 16 | 
            -
            import {NumberId} from "../types/NumberId.sol";
         | 
| 17 | 
            -
            import {ObjectType, BUNDLE, DISTRIBUTION, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
         | 
| 18 | 
            -
            import {RiskId, RiskIdLib} from "../types/RiskId.sol";
         | 
| 19 | 
            -
            import {RoleId, RoleIdLib} from "../types/RoleId.sol";
         | 
| 20 | 
            -
            import {StateId, ACTIVE} from "../types/StateId.sol";
         | 
| 21 | 
            -
            import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
         | 
| 9 | 
            +
            import {RoleId, RoleIdLib } from "../types/RoleId.sol";
         | 
| 10 | 
            +
            import {TimestampLib} from "../types/Timestamp.sol";
         | 
| 11 | 
            +
            import {IAccess} from "./module/IAccess.sol";
         | 
| 22 12 |  | 
| 23 13 | 
             
            contract InstanceAccessManager is
         | 
| 24 | 
            -
                 | 
| 14 | 
            +
                AccessManagedUpgradeable
         | 
| 25 15 | 
             
            {
         | 
| 16 | 
            +
                using RoleIdLib for RoleId;
         | 
| 17 | 
            +
             | 
| 26 18 | 
             
                string public constant ADMIN_ROLE_NAME = "AdminRole";
         | 
| 27 19 | 
             
                string public constant PUBLIC_ROLE_NAME = "PublicRole";
         | 
| 28 20 |  | 
| 29 21 | 
             
                uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
         | 
| 30 22 | 
             
                uint32 public constant EXECUTION_DELAY = 0;
         | 
| 31 23 |  | 
| 32 | 
            -
                struct RoleInfo {
         | 
| 33 | 
            -
                    ShortString name;
         | 
| 34 | 
            -
                    bool isCustom;
         | 
| 35 | 
            -
                    bool isLocked;
         | 
| 36 | 
            -
                    Timestamp createdAt;
         | 
| 37 | 
            -
                    Timestamp updatedAt;
         | 
| 38 | 
            -
                }
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                struct TargetInfo {
         | 
| 41 | 
            -
                    ShortString name;
         | 
| 42 | 
            -
                    bool isCustom;
         | 
| 43 | 
            -
                    bool isLocked;
         | 
| 44 | 
            -
                    Timestamp createdAt;
         | 
| 45 | 
            -
                    Timestamp updatedAt;
         | 
| 46 | 
            -
                }
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                error ErrorRoleIdInvalid(RoleId roleId);
         | 
| 49 | 
            -
                error ErrorRoleIdTooBig(RoleId roleId);
         | 
| 50 | 
            -
                error ErrorRoleIdTooSmall(RoleId roleId);
         | 
| 51 | 
            -
                error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
         | 
| 52 | 
            -
                error ErrorRoleIdNotActive(RoleId roleId);
         | 
| 53 | 
            -
                error ErrorRoleNameEmpty(RoleId roleId);
         | 
| 54 | 
            -
                error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
         | 
| 55 | 
            -
                error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
         | 
| 56 | 
            -
                error ErrorRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
         | 
| 57 | 
            -
                error ErrorSetLockedForNonexstentRole(RoleId roleId);
         | 
| 58 | 
            -
                error ErrorGrantNonexstentRole(RoleId roleId);
         | 
| 59 | 
            -
                error ErrorRevokeNonexstentRole(RoleId roleId);
         | 
| 60 | 
            -
                error ErrorRenounceNonexstentRole(RoleId roleId);
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                error ErrorTargetAddressZero();
         | 
| 63 | 
            -
                error ErrorTargetAlreadyExists(address target, ShortString name);
         | 
| 64 | 
            -
                error ErrorTargetNameEmpty(address target);
         | 
| 65 | 
            -
                error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
         | 
| 66 | 
            -
                error ErrorSetLockedForNonexstentTarget(address target);
         | 
| 67 | 
            -
             | 
| 68 24 | 
             
                // role specific state
         | 
| 69 | 
            -
                mapping(RoleId roleId => RoleInfo info) internal _role;
         | 
| 25 | 
            +
                mapping(RoleId roleId => IAccess.RoleInfo info) internal _role;
         | 
| 70 26 | 
             
                mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers; 
         | 
| 71 27 | 
             
                mapping(ShortString name => RoleId roleId) internal _roleForName;
         | 
| 72 28 | 
             
                RoleId [] internal _roles;
         | 
| 73 29 |  | 
| 74 30 | 
             
                // target specific state
         | 
| 75 | 
            -
                mapping(address target => TargetInfo info) internal _target;
         | 
| 31 | 
            +
                mapping(address target => IAccess.TargetInfo info) internal _target;
         | 
| 76 32 | 
             
                mapping(ShortString name => address target) internal _targetForName;
         | 
| 77 33 | 
             
                address [] internal _targets;
         | 
| 78 34 |  | 
| 79 | 
            -
                 | 
| 35 | 
            +
                AccessManager internal _accessManager;
         | 
| 80 36 |  | 
| 81 | 
            -
                 | 
| 82 | 
            -
                    AccessManagedSimple(accessManager)
         | 
| 37 | 
            +
                function initialize(address initialAdmin) external initializer
         | 
| 83 38 | 
             
                {
         | 
| 84 | 
            -
                     | 
| 39 | 
            +
                    // if size of the contract gets too large, this can be externalized which will reduce the contract size considerably
         | 
| 40 | 
            +
                    _accessManager = new AccessManager(address(this));
         | 
| 41 | 
            +
                    // this service required admin rights to access manager to be able to grant/revoke roles
         | 
| 42 | 
            +
                    _accessManager.grantRole(_accessManager.ADMIN_ROLE(), initialAdmin, 0);
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    __AccessManaged_init(address(_accessManager));
         | 
| 85 45 |  | 
| 86 46 | 
             
                    _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
         | 
| 87 47 | 
             
                    _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
         | 
| 88 48 | 
             
                }
         | 
| 89 49 |  | 
| 90 50 | 
             
                //--- Role ------------------------------------------------------//
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                function createDefaultRole(RoleId roleId, string memory name) external restricted() {
         | 
| 51 | 
            +
                function createGifRole(RoleId roleId, string memory name) external restricted() {
         | 
| 93 52 | 
             
                    _createRole(roleId, name, false, true);
         | 
| 94 53 | 
             
                }
         | 
| 95 54 |  | 
| @@ -99,7 +58,7 @@ contract InstanceAccessManager is | |
| 99 58 |  | 
| 100 59 | 
             
                function setRoleLocked(RoleId roleId, bool locked) external restricted() {
         | 
| 101 60 | 
             
                    if (!roleExists(roleId)) {
         | 
| 102 | 
            -
                        revert  | 
| 61 | 
            +
                        revert IAccess.ErrorIAccessSetLockedForNonexstentRole(roleId);
         | 
| 103 62 | 
             
                    }
         | 
| 104 63 |  | 
| 105 64 | 
             
                    _role[roleId].isLocked = locked;
         | 
| @@ -112,11 +71,11 @@ contract InstanceAccessManager is | |
| 112 71 |  | 
| 113 72 | 
             
                function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
         | 
| 114 73 | 
             
                    if (!roleExists(roleId)) {
         | 
| 115 | 
            -
                        revert  | 
| 74 | 
            +
                        revert IAccess.ErrorIAccessGrantNonexstentRole(roleId);
         | 
| 116 75 | 
             
                    }
         | 
| 117 76 |  | 
| 118 77 | 
             
                    if (_role[roleId].isLocked) {
         | 
| 119 | 
            -
                        revert  | 
| 78 | 
            +
                        revert IAccess.ErrorIAccessRoleIdNotActive(roleId);
         | 
| 120 79 | 
             
                    }
         | 
| 121 80 |  | 
| 122 81 | 
             
                    if (!EnumerableSet.contains(_roleMembers[roleId], member)) {
         | 
| @@ -130,7 +89,7 @@ contract InstanceAccessManager is | |
| 130 89 |  | 
| 131 90 | 
             
                function revokeRole(RoleId roleId, address member) external restricted() returns (bool revoked) {
         | 
| 132 91 | 
             
                    if (!roleExists(roleId)) {
         | 
| 133 | 
            -
                        revert  | 
| 92 | 
            +
                        revert IAccess.ErrorIAccessRevokeNonexstentRole(roleId);
         | 
| 134 93 | 
             
                    }
         | 
| 135 94 |  | 
| 136 95 | 
             
                    if (EnumerableSet.contains(_roleMembers[roleId], member)) {
         | 
| @@ -148,7 +107,7 @@ contract InstanceAccessManager is | |
| 148 107 | 
             
                    address member = msg.sender;
         | 
| 149 108 |  | 
| 150 109 | 
             
                    if (!roleExists(roleId)) {
         | 
| 151 | 
            -
                        revert  | 
| 110 | 
            +
                        revert IAccess.ErrorIAccessRenounceNonexstentRole(roleId);
         | 
| 152 111 | 
             
                    }
         | 
| 153 112 |  | 
| 154 113 | 
             
                    if (EnumerableSet.contains(_roleMembers[roleId], member)) {
         | 
| @@ -173,7 +132,7 @@ contract InstanceAccessManager is | |
| 173 132 | 
             
                    return _roleForName[ShortStrings.toShortString(name)];
         | 
| 174 133 | 
             
                }
         | 
| 175 134 |  | 
| 176 | 
            -
                function getRole(RoleId roleId) external view returns (RoleInfo memory role) {
         | 
| 135 | 
            +
                function getRole(RoleId roleId) external view returns (IAccess.RoleInfo memory role) {
         | 
| 177 136 | 
             
                    return _role[roleId];
         | 
| 178 137 | 
             
                }
         | 
| 179 138 |  | 
| @@ -190,13 +149,19 @@ contract InstanceAccessManager is | |
| 190 149 | 
             
                }
         | 
| 191 150 |  | 
| 192 151 | 
             
                //--- Target ------------------------------------------------------//
         | 
| 152 | 
            +
                function createGifTarget(address target, string memory name) external restricted() {
         | 
| 153 | 
            +
                    _createTarget(target, name, false, true);
         | 
| 154 | 
            +
                }
         | 
| 155 | 
            +
             | 
| 193 156 | 
             
                function createTarget(address target, string memory name) external restricted() {
         | 
| 194 157 | 
             
                    _createTarget(target, name, true, true);
         | 
| 195 158 | 
             
                }
         | 
| 196 159 |  | 
| 197 | 
            -
                function setTargetLocked( | 
| 198 | 
            -
                     | 
| 199 | 
            -
             | 
| 160 | 
            +
                function setTargetLocked(string memory targetName, bool locked) external restricted() {
         | 
| 161 | 
            +
                    address target = _targetForName[ShortStrings.toShortString(targetName)];
         | 
| 162 | 
            +
                    
         | 
| 163 | 
            +
                    if (target == address(0)) {
         | 
| 164 | 
            +
                        revert IAccess.ErrorIAccessSetLockedForNonexstentTarget(target);
         | 
| 200 165 | 
             
                    }
         | 
| 201 166 |  | 
| 202 167 | 
             
                    _target[target].isLocked = locked;
         | 
| @@ -214,7 +179,7 @@ contract InstanceAccessManager is | |
| 214 179 | 
             
                        _validateRoleParameters(roleId, name, isCustom);
         | 
| 215 180 | 
             
                    }
         | 
| 216 181 |  | 
| 217 | 
            -
                    RoleInfo memory role = RoleInfo(
         | 
| 182 | 
            +
                    IAccess.RoleInfo memory role = IAccess.RoleInfo(
         | 
| 218 183 | 
             
                        ShortStrings.toShortString(name), 
         | 
| 219 184 | 
             
                        isCustom,
         | 
| 220 185 | 
             
                        false, // role un-locked,
         | 
| @@ -233,35 +198,35 @@ contract InstanceAccessManager is | |
| 233 198 | 
             
                )
         | 
| 234 199 | 
             
                    internal
         | 
| 235 200 | 
             
                    view 
         | 
| 236 | 
            -
                    returns (RoleInfo memory existingRole)
         | 
| 201 | 
            +
                    returns (IAccess.RoleInfo memory existingRole)
         | 
| 237 202 | 
             
                {
         | 
| 238 203 | 
             
                    // check role id
         | 
| 239 204 | 
             
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 240 205 | 
             
                    if(roleIdInt == _accessManager.ADMIN_ROLE() || roleIdInt == _accessManager.PUBLIC_ROLE()) {
         | 
| 241 | 
            -
                        revert  | 
| 206 | 
            +
                        revert IAccess.ErrorIAccessRoleIdInvalid(roleId); 
         | 
| 242 207 | 
             
                    }
         | 
| 243 208 |  | 
| 244 209 | 
             
                    // prevent changing isCustom for existing roles
         | 
| 245 210 | 
             
                    existingRole = _role[roleId];
         | 
| 246 211 |  | 
| 247 212 | 
             
                    if (existingRole.createdAt.gtz() && isCustom != existingRole.isCustom) {
         | 
| 248 | 
            -
                        revert  | 
| 213 | 
            +
                        revert IAccess.ErrorIAccessRoleIsCustomIsImmutable(roleId, isCustom, existingRole.isCustom); 
         | 
| 249 214 | 
             
                    }
         | 
| 250 215 |  | 
| 251 216 | 
             
                    if (isCustom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
         | 
| 252 | 
            -
                        revert  | 
| 217 | 
            +
                        revert IAccess.ErrorIAccessRoleIdTooSmall(roleId); 
         | 
| 253 218 | 
             
                    } else if (!isCustom && roleIdInt >= CUSTOM_ROLE_ID_MIN) {
         | 
| 254 | 
            -
                        revert  | 
| 219 | 
            +
                        revert IAccess.ErrorIAccessRoleIdTooBig(roleId); 
         | 
| 255 220 | 
             
                    }
         | 
| 256 221 |  | 
| 257 222 | 
             
                    // role name checks
         | 
| 258 223 | 
             
                    ShortString nameShort = ShortStrings.toShortString(name);
         | 
| 259 224 | 
             
                    if (ShortStrings.byteLength(nameShort) == 0) {
         | 
| 260 | 
            -
                        revert  | 
| 225 | 
            +
                        revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
         | 
| 261 226 | 
             
                    }
         | 
| 262 227 |  | 
| 263 228 | 
             
                    if (_roleForName[nameShort] != RoleIdLib.zero() && _roleForName[nameShort] != roleId) {
         | 
| 264 | 
            -
                        revert  | 
| 229 | 
            +
                        revert IAccess.ErrorIAccessRoleNameNotUnique(_roleForName[nameShort], nameShort);
         | 
| 265 230 | 
             
                    }
         | 
| 266 231 | 
             
                }
         | 
| 267 232 |  | 
| @@ -270,7 +235,14 @@ contract InstanceAccessManager is | |
| 270 235 | 
             
                        _validateTargetParameters(target, name, isCustom);
         | 
| 271 236 | 
             
                    }
         | 
| 272 237 |  | 
| 273 | 
            -
                     | 
| 238 | 
            +
                    if (_target[target].createdAt.gtz()) {
         | 
| 239 | 
            +
                        revert IAccess.ErrorIAccessTargetAlreadyExists(target, _target[target].name);
         | 
| 240 | 
            +
                    }
         | 
| 241 | 
            +
                    if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
         | 
| 242 | 
            +
                        revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
         | 
| 243 | 
            +
                    }
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                    IAccess.TargetInfo memory info = IAccess.TargetInfo(
         | 
| 274 246 | 
             
                        ShortStrings.toShortString(name), 
         | 
| 275 247 | 
             
                        isCustom,
         | 
| 276 248 | 
             
                        _accessManager.isTargetClosed(target), // sync with state in access manager
         | 
| @@ -283,6 +255,44 @@ contract InstanceAccessManager is | |
| 283 255 | 
             
                }
         | 
| 284 256 |  | 
| 285 257 | 
             
                function _validateTargetParameters(address target, string memory name, bool isCustom) internal view {
         | 
| 258 | 
            +
                    // TODO: implement
         | 
| 259 | 
            +
                }
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                function setTargetFunctionRole(
         | 
| 262 | 
            +
                    address target,
         | 
| 263 | 
            +
                    bytes4[] calldata selectors,
         | 
| 264 | 
            +
                    uint64 roleId
         | 
| 265 | 
            +
                ) public virtual restricted() {
         | 
| 266 | 
            +
                    _accessManager.setTargetFunctionRole(target, selectors, roleId);
         | 
| 267 | 
            +
                }
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                function setTargetFunctionRole(
         | 
| 270 | 
            +
                    string memory targetName,
         | 
| 271 | 
            +
                    bytes4[] calldata selectors,
         | 
| 272 | 
            +
                    RoleId roleId
         | 
| 273 | 
            +
                ) public virtual restricted() {
         | 
| 274 | 
            +
                    address target = _targetForName[ShortStrings.toShortString(targetName)];
         | 
| 275 | 
            +
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 276 | 
            +
                    _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
         | 
| 277 | 
            +
                }
         | 
| 278 | 
            +
             | 
| 279 | 
            +
                function setTargetClosed(string memory targetName, bool closed) public restricted() {
         | 
| 280 | 
            +
                    address target = _targetForName[ShortStrings.toShortString(targetName)];
         | 
| 281 | 
            +
                    if (target == address(0)) {
         | 
| 282 | 
            +
                        revert IAccess.ErrorIAccessTargetAddressZero();
         | 
| 283 | 
            +
                    }
         | 
| 284 | 
            +
                    _accessManager.setTargetClosed(target, closed);
         | 
| 285 | 
            +
                }
         | 
| 286 | 
            +
             | 
| 287 | 
            +
                function isTargetLocked(address target) public view returns (bool locked) {
         | 
| 288 | 
            +
                    return _accessManager.isTargetClosed(target);
         | 
| 289 | 
            +
                }
         | 
| 286 290 |  | 
| 291 | 
            +
                function canCall(
         | 
| 292 | 
            +
                    address caller,
         | 
| 293 | 
            +
                    address target,
         | 
| 294 | 
            +
                    bytes4 selector
         | 
| 295 | 
            +
                ) public view virtual returns (bool immediate, uint32 delay) {
         | 
| 296 | 
            +
                    return _accessManager.canCall(caller, target, selector);
         | 
| 287 297 | 
             
                }
         | 
| 288 298 | 
             
            }
         | 
| @@ -7,14 +7,16 @@ import {DistributorType} from "../types/DistributorType.sol"; | |
| 7 7 | 
             
            import {Fee, FeeLib} from "../types/Fee.sol";
         | 
| 8 8 | 
             
            import {Key32} from "../types/Key32.sol";
         | 
| 9 9 | 
             
            import {NftId} from "../types/NftId.sol";
         | 
| 10 | 
            -
            import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY} from "../types/ObjectType.sol";
         | 
| 10 | 
            +
            import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
         | 
| 11 11 | 
             
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
         | 
| 12 12 | 
             
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 13 13 | 
             
            import {RiskId} from "../types/RiskId.sol";
         | 
| 14 14 | 
             
            import {UFixed, MathLib, UFixedLib} from "../types/UFixed.sol";
         | 
| 15 15 | 
             
            import {Version} from "../types/Version.sol";
         | 
| 16 | 
            +
            import {StateId} from "../types/StateId.sol";
         | 
| 16 17 |  | 
| 17 18 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 19 | 
            +
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 18 20 | 
             
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 19 21 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 20 22 | 
             
            import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
         | 
| @@ -26,37 +28,29 @@ import {TimestampLib} from "../types/Timestamp.sol"; | |
| 26 28 |  | 
| 27 29 |  | 
| 28 30 | 
             
            contract InstanceReader {
         | 
| 31 | 
            +
                bool private _initialized;
         | 
| 29 32 |  | 
| 30 33 | 
             
                IRegistry internal _registry;
         | 
| 31 | 
            -
                NftId internal _instanceNftId;
         | 
| 32 34 | 
             
                IInstance internal _instance;
         | 
| 33 35 | 
             
                IKeyValueStore internal _store;
         | 
| 34 36 |  | 
| 35 | 
            -
                 | 
| 36 | 
            -
                     | 
| 37 | 
            -
             | 
| 38 | 
            -
                )
         | 
| 39 | 
            -
                {
         | 
| 37 | 
            +
                function initialize(address registry, address instance) public {
         | 
| 38 | 
            +
                    require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
         | 
| 39 | 
            +
             | 
| 40 40 | 
             
                    require(
         | 
| 41 41 | 
             
                        address(registry) != address(0),
         | 
| 42 42 | 
             
                        "ERROR:CRD-001:REGISTRY_ZERO");
         | 
| 43 43 |  | 
| 44 | 
            -
                    require(
         | 
| 45 | 
            -
                        instanceNftId.gtz(),
         | 
| 46 | 
            -
                        "ERROR:CRD-002:NFT_ID_ZERO");
         | 
| 47 44 |  | 
| 48 45 | 
             
                    _registry = IRegistry(registry);
         | 
| 49 | 
            -
                    _instanceNftId = instanceNftId;
         | 
| 50 | 
            -
                    IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
         | 
| 51 46 |  | 
| 52 | 
            -
                     | 
| 53 | 
            -
             | 
| 54 | 
            -
                        "ERROR:CRD-003:PARENT_NOT_INSTANCE");
         | 
| 47 | 
            +
                    _instance = IInstance(instance);
         | 
| 48 | 
            +
                    _store = IKeyValueStore(instance);
         | 
| 55 49 |  | 
| 56 | 
            -
                     | 
| 57 | 
            -
                    _store = IKeyValueStore(instanceInfo.objectAddress);
         | 
| 50 | 
            +
                    _initialized = true;
         | 
| 58 51 | 
             
                }
         | 
| 59 52 |  | 
| 53 | 
            +
             | 
| 60 54 | 
             
                // module specific functions
         | 
| 61 55 |  | 
| 62 56 | 
             
                function getPolicyInfo(NftId policyNftId)
         | 
| @@ -70,6 +64,14 @@ contract InstanceReader { | |
| 70 64 | 
             
                    }
         | 
| 71 65 | 
             
                }
         | 
| 72 66 |  | 
| 67 | 
            +
                function getPolicyState(NftId policyNftId)
         | 
| 68 | 
            +
                    public
         | 
| 69 | 
            +
                    view
         | 
| 70 | 
            +
                    returns (StateId state)
         | 
| 71 | 
            +
                {
         | 
| 72 | 
            +
                    return _instance.getState(toPolicyKey(policyNftId));
         | 
| 73 | 
            +
                }
         | 
| 74 | 
            +
             | 
| 73 75 | 
             
                function getRiskInfo(RiskId riskId)
         | 
| 74 76 | 
             
                    public 
         | 
| 75 77 | 
             
                    view 
         | 
| @@ -104,6 +106,17 @@ contract InstanceReader { | |
| 104 106 | 
             
                        return abi.decode(data, (ITreasury.TreasuryInfo));
         | 
| 105 107 | 
             
                    }
         | 
| 106 108 | 
             
                }
         | 
| 109 | 
            +
                
         | 
| 110 | 
            +
                function getBundleInfo(NftId bundleNftId)
         | 
| 111 | 
            +
                    public 
         | 
| 112 | 
            +
                    view 
         | 
| 113 | 
            +
                    returns (IBundle.BundleInfo memory info)
         | 
| 114 | 
            +
                {
         | 
| 115 | 
            +
                    bytes memory data = _store.getData(toBundleKey(bundleNftId));
         | 
| 116 | 
            +
                    if (data.length > 0) {
         | 
| 117 | 
            +
                        return abi.decode(data, (IBundle.BundleInfo));
         | 
| 118 | 
            +
                    }
         | 
| 119 | 
            +
                }
         | 
| 107 120 |  | 
| 108 121 | 
             
                function getDistributorTypeInfo(DistributorType distributorType)
         | 
| 109 122 | 
             
                    public 
         | 
| @@ -249,6 +262,10 @@ contract InstanceReader { | |
| 249 262 | 
             
                    return distributionNftId.toKey32(DISTRIBUTION());
         | 
| 250 263 | 
             
                }
         | 
| 251 264 |  | 
| 265 | 
            +
                function toBundleKey(NftId poolNftId) public pure returns (Key32) { 
         | 
| 266 | 
            +
                    return poolNftId.toKey32(BUNDLE());
         | 
| 267 | 
            +
                }
         | 
| 268 | 
            +
             | 
| 252 269 | 
             
                function toPoolKey(NftId poolNftId) public pure returns (Key32) { 
         | 
| 253 270 | 
             
                    return poolNftId.toKey32(POOL());
         | 
| 254 271 | 
             
                }
         | 
| @@ -266,10 +283,6 @@ contract InstanceReader { | |
| 266 283 | 
             
                    return _store;
         | 
| 267 284 | 
             
                }
         | 
| 268 285 |  | 
| 269 | 
            -
                function getInstanceNftId() external view returns (NftId nftId) {
         | 
| 270 | 
            -
                    return _instanceNftId;
         | 
| 271 | 
            -
                }
         | 
| 272 | 
            -
             | 
| 273 286 | 
             
                function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
         | 
| 274 287 | 
             
                    return UFixedLib.toUFixed(value, exp);
         | 
| 275 288 | 
             
                }
         |