@etherisc/gif-next 0.0.2-f2df3e2-873 → 0.0.2-f398177-971
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +37 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +44 -13
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +37 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +44 -13
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +55 -24
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +52 -21
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +55 -24
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +52 -21
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +252 -2210
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +346 -2685
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +67 -49
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +219 -53
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +59 -220
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -117
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +37 -13
- 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/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +75 -217
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +33 -66
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +155 -133
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +35 -64
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +463 -119
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +109 -42
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +181 -399
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +81 -94
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +11 -145
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +79 -30
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +229 -88
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +23 -273
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -326
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +265 -32
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +5 -13
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +213 -443
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +74 -75
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +439 -54
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +84 -37
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +55 -31
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +22 -35
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -25
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- 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/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
- 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 +6 -19
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
- 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 +17 -25
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +100 -4
- 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/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -18
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +21 -2
- package/contracts/components/Distribution.sol +5 -4
- package/contracts/components/IComponent.sol +16 -2
- package/contracts/components/IPoolComponent.sol +7 -6
- package/contracts/components/IProductComponent.sol +5 -4
- package/contracts/components/Pool.sol +8 -8
- package/contracts/components/Product.sol +21 -17
- package/contracts/instance/IInstance.sol +28 -53
- package/contracts/instance/IInstanceService.sol +15 -10
- package/contracts/instance/Instance.sol +90 -171
- package/contracts/instance/InstanceAccessManager.sol +35 -21
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +56 -5
- package/contracts/instance/InstanceService.sol +96 -266
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +47 -20
- package/contracts/instance/base/KeyValueStore.sol +0 -31
- package/contracts/instance/base/Lifecycle.sol +7 -4
- package/contracts/instance/module/IComponents.sol +3 -3
- package/contracts/instance/module/IDistribution.sol +3 -2
- package/contracts/instance/module/IPolicy.sol +5 -5
- package/contracts/instance/service/ApplicationService.sol +58 -227
- package/contracts/instance/service/BundleService.sol +65 -119
- package/contracts/instance/service/ClaimService.sol +232 -34
- package/contracts/instance/service/DistributionService.sol +51 -134
- package/contracts/instance/service/IApplicationService.sol +5 -21
- package/contracts/instance/service/IBundleService.sol +32 -10
- package/contracts/instance/service/IClaimService.sol +37 -39
- package/contracts/instance/service/IDistributionService.sol +10 -22
- package/contracts/instance/service/IPolicyService.sol +15 -72
- package/contracts/instance/service/IPoolService.sol +18 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +112 -277
- package/contracts/instance/service/PoolService.sol +121 -21
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +10 -10
- package/contracts/registry/IRegistryService.sol +0 -2
- package/contracts/registry/RegistryService.sol +14 -10
- package/contracts/shared/IPolicyHolder.sol +23 -9
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/NftOwnable.sol +0 -2
- package/contracts/shared/PolicyHolder.sol +30 -17
- package/contracts/shared/Registerable.sol +10 -9
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/types/Amount.sol +44 -0
- package/contracts/types/Fee.sol +7 -6
- package/contracts/types/ObjectType.sol +5 -1
- package/package.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
| @@ -4,33 +4,47 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
         | 
| 5 5 | 
             
            import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
         | 
| 6 6 |  | 
| 7 | 
            +
            import {NftId} from "../../contracts/types/NftId.sol";
         | 
| 8 | 
            +
            import {RoleId} from "../types/RoleId.sol";
         | 
| 9 | 
            +
            import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
         | 
| 10 | 
            +
            import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 13 | 
            +
            import {IService} from "../shared/IService.sol";
         | 
| 14 | 
            +
            import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            import {IDistributionComponent} from "../components/IDistributionComponent.sol";
         | 
| 17 | 
            +
            import {IPoolComponent} from "../components/IPoolComponent.sol";
         | 
| 18 | 
            +
            import {IProductComponent} from "../components/IProductComponent.sol";
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 21 | 
            +
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 22 | 
            +
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 23 | 
            +
             | 
| 7 24 | 
             
            import {Instance} from "./Instance.sol";
         | 
| 8 25 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 9 26 | 
             
            import {InstanceAccessManager} from "./InstanceAccessManager.sol";
         | 
| 10 27 | 
             
            import {IInstanceService} from "./IInstanceService.sol";
         | 
| 11 28 | 
             
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 12 29 | 
             
            import {BundleManager} from "./BundleManager.sol";
         | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 16 | 
            -
            import {Service} from "../../contracts/shared/Service.sol";
         | 
| 17 | 
            -
            import {NftId} from "../../contracts/types/NftId.sol";
         | 
| 18 | 
            -
            import {RoleId} from "../types/RoleId.sol";
         | 
| 19 | 
            -
            import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
         | 
| 20 | 
            -
            import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
         | 
| 30 | 
            +
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 31 | 
            +
            import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
         | 
| 21 32 |  | 
| 22 33 | 
             
            contract InstanceService is
         | 
| 23 34 | 
             
                Service,
         | 
| 24 35 | 
             
                IInstanceService
         | 
| 25 36 | 
             
            {
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                // TODO update to real hash when instance is stable
         | 
| 39 | 
            +
                bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                IRegistryService internal _registryService;
         | 
| 26 42 | 
             
                address internal _masterOzAccessManager;
         | 
| 27 43 | 
             
                address internal _masterInstanceAccessManager;
         | 
| 28 44 | 
             
                address internal _masterInstance;
         | 
| 29 45 | 
             
                address internal _masterInstanceReader;
         | 
| 30 46 | 
             
                address internal _masterInstanceBundleManager;
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                // TODO update to real hash when instance is stable
         | 
| 33 | 
            -
                bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
         | 
| 47 | 
            +
                address internal _masterInstanceStore;
         | 
| 34 48 |  | 
| 35 49 | 
             
                modifier onlyInstanceOwner(NftId instanceNftId) {        
         | 
| 36 50 | 
             
                    if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
         | 
| @@ -57,21 +71,12 @@ contract InstanceService is | |
| 57 71 | 
             
                function createInstanceClone()
         | 
| 58 72 | 
             
                    external 
         | 
| 59 73 | 
             
                    returns (
         | 
| 60 | 
            -
                        AccessManagerUpgradeableInitializeable clonedOzAccessManager,
         | 
| 61 | 
            -
                        InstanceAccessManager clonedInstanceAccessManager, 
         | 
| 62 74 | 
             
                        Instance clonedInstance,
         | 
| 63 | 
            -
                        NftId clonedInstanceNftId | 
| 64 | 
            -
                        InstanceReader clonedInstanceReader,
         | 
| 65 | 
            -
                        BundleManager clonedBundleManager
         | 
| 75 | 
            +
                        NftId clonedInstanceNftId
         | 
| 66 76 | 
             
                    )
         | 
| 67 77 | 
             
                {
         | 
| 68 78 | 
             
                    address instanceOwner = msg.sender;
         | 
| 69 | 
            -
                     | 
| 70 | 
            -
                    IRegistryService registryService = IRegistryService(
         | 
| 71 | 
            -
                        registry.getServiceAddress(
         | 
| 72 | 
            -
                            REGISTRY(), getVersion().toMajorPart()));
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                    clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
         | 
| 79 | 
            +
                    AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
         | 
| 75 80 | 
             
                        Clones.clone(_masterOzAccessManager));
         | 
| 76 81 |  | 
| 77 82 | 
             
                    // initially grants ADMIN_ROLE to this (being the instance service). 
         | 
| @@ -83,239 +88,54 @@ contract InstanceService is | |
| 83 88 | 
             
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 84 89 | 
             
                    clonedInstance.initialize(
         | 
| 85 90 | 
             
                        address(clonedOzAccessManager),
         | 
| 86 | 
            -
                        address( | 
| 91 | 
            +
                        address(getRegistry()), 
         | 
| 87 92 | 
             
                        instanceOwner);
         | 
| 93 | 
            +
                    // initialize and set before instance reader
         | 
| 94 | 
            +
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 95 | 
            +
                    clonedInstanceStore.initialize(address(clonedInstance));
         | 
| 96 | 
            +
                    clonedInstance.setInstanceStore(clonedInstanceStore);
         | 
| 88 97 |  | 
| 89 | 
            -
                    clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 98 | 
            +
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 90 99 | 
             
                    clonedInstanceReader.initialize(address(clonedInstance));
         | 
| 91 100 | 
             
                    clonedInstance.setInstanceReader(clonedInstanceReader);
         | 
| 92 101 |  | 
| 93 | 
            -
                    clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
         | 
| 102 | 
            +
                    BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
         | 
| 94 103 | 
             
                    clonedBundleManager.initialize(address(clonedInstance));
         | 
| 95 104 | 
             
                    clonedInstance.setBundleManager(clonedBundleManager);
         | 
| 96 105 |  | 
| 97 | 
            -
                    clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
         | 
| 106 | 
            +
                    InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
         | 
| 98 107 | 
             
                    clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
         | 
| 99 108 | 
             
                    clonedInstanceAccessManager.initialize(address(clonedInstance));
         | 
| 100 109 | 
             
                    clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
         | 
| 101 110 |  | 
| 102 111 | 
             
                    // TODO amend setters with instance specific , policy manager ...
         | 
| 103 112 |  | 
| 104 | 
            -
                     | 
| 113 | 
            +
                    // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
         | 
| 114 | 
            +
                    InstanceAuthorizationsLib.grantInitialAuthorizations(
         | 
| 115 | 
            +
                        clonedInstanceAccessManager, 
         | 
| 116 | 
            +
                        clonedInstance, 
         | 
| 117 | 
            +
                        clonedBundleManager, 
         | 
| 118 | 
            +
                        clonedInstanceStore, 
         | 
| 119 | 
            +
                        instanceOwner,
         | 
| 120 | 
            +
                        getRegistry(),
         | 
| 121 | 
            +
                        getVersion().toMajorPart());
         | 
| 105 122 |  | 
| 106 123 | 
             
                    clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
         | 
| 107 124 |  | 
| 108 | 
            -
                    IRegistry.ObjectInfo memory info =  | 
| 125 | 
            +
                    IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
         | 
| 109 126 | 
             
                    clonedInstanceNftId = info.nftId;
         | 
| 110 127 |  | 
| 111 128 | 
             
                    emit LogInstanceCloned(
         | 
| 112 129 | 
             
                        address(clonedOzAccessManager), 
         | 
| 113 130 | 
             
                        address(clonedInstanceAccessManager), 
         | 
| 114 | 
            -
                        address(clonedInstance), | 
| 131 | 
            +
                        address(clonedInstance),
         | 
| 132 | 
            +
                        address(clonedInstanceStore),
         | 
| 115 133 | 
             
                        address(clonedBundleManager), 
         | 
| 116 134 | 
             
                        address(clonedInstanceReader), 
         | 
| 117 135 | 
             
                        clonedInstanceNftId);
         | 
| 118 136 | 
             
                }
         | 
| 119 137 |  | 
| 120 | 
            -
                function  | 
| 121 | 
            -
                    InstanceAccessManager clonedAccessManager, 
         | 
| 122 | 
            -
                    Instance clonedInstance, 
         | 
| 123 | 
            -
                    BundleManager clonedBundleManager,
         | 
| 124 | 
            -
                    address instanceOwner) 
         | 
| 125 | 
            -
                        internal 
         | 
| 126 | 
            -
                {
         | 
| 127 | 
            -
                    _createCoreAndGifRoles(clonedAccessManager);
         | 
| 128 | 
            -
                    _createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
         | 
| 129 | 
            -
                    _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
         | 
| 130 | 
            -
                    _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
         | 
| 131 | 
            -
                    _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
         | 
| 132 | 
            -
                    _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);    
         | 
| 133 | 
            -
                    _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);    
         | 
| 134 | 
            -
                    _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);    
         | 
| 135 | 
            -
                    _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
         | 
| 136 | 
            -
                    _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
         | 
| 137 | 
            -
                    _grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
         | 
| 138 | 
            -
                }
         | 
| 139 | 
            -
             | 
| 140 | 
            -
                function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
         | 
| 141 | 
            -
                    // default roles controlled by ADMIN_ROLE -> core roles
         | 
| 142 | 
            -
                    // all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
         | 
| 143 | 
            -
                    clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
         | 
| 144 | 
            -
                    clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
         | 
| 145 | 
            -
                    clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
         | 
| 146 | 
            -
                    clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
         | 
| 147 | 
            -
                    clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
         | 
| 148 | 
            -
                    clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
         | 
| 149 | 
            -
                    clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
         | 
| 150 | 
            -
                    clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
         | 
| 151 | 
            -
                    // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
         | 
| 152 | 
            -
                    clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
         | 
| 153 | 
            -
                    clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
         | 
| 154 | 
            -
                    clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
         | 
| 155 | 
            -
                }
         | 
| 156 | 
            -
             | 
| 157 | 
            -
                function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
         | 
| 158 | 
            -
                    clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
         | 
| 159 | 
            -
                    clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
         | 
| 160 | 
            -
                    clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
         | 
| 161 | 
            -
                }   
         | 
| 162 | 
            -
             | 
| 163 | 
            -
                function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 164 | 
            -
                    // configure authorization for distribution service on instance
         | 
| 165 | 
            -
                    address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart());
         | 
| 166 | 
            -
                    clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
         | 
| 167 | 
            -
                    bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
         | 
| 168 | 
            -
                    instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
         | 
| 169 | 
            -
                    instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
         | 
| 170 | 
            -
                    instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
         | 
| 171 | 
            -
                    instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
         | 
| 172 | 
            -
                    instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
         | 
| 173 | 
            -
                    instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
         | 
| 174 | 
            -
                    instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
         | 
| 175 | 
            -
                    instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
         | 
| 176 | 
            -
                    instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
         | 
| 177 | 
            -
                    instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
         | 
| 178 | 
            -
                    instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
         | 
| 179 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 180 | 
            -
                        "Instance",
         | 
| 181 | 
            -
                        instanceDistributionServiceSelectors, 
         | 
| 182 | 
            -
                        DISTRIBUTION_SERVICE_ROLE());        
         | 
| 183 | 
            -
                }
         | 
| 184 | 
            -
             | 
| 185 | 
            -
                function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 186 | 
            -
                    // configure authorization for pool service on instance
         | 
| 187 | 
            -
                    address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart());
         | 
| 188 | 
            -
                    clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
         | 
| 189 | 
            -
                    bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
         | 
| 190 | 
            -
                    instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
         | 
| 191 | 
            -
                    instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
         | 
| 192 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 193 | 
            -
                        "Instance",
         | 
| 194 | 
            -
                        instancePoolServiceSelectors, 
         | 
| 195 | 
            -
                        POOL_SERVICE_ROLE());
         | 
| 196 | 
            -
                }
         | 
| 197 | 
            -
             | 
| 198 | 
            -
                function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 199 | 
            -
                    // configure authorization for product service on instance
         | 
| 200 | 
            -
                    address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getVersion().toMajorPart());
         | 
| 201 | 
            -
                    clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
         | 
| 202 | 
            -
                    bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
         | 
| 203 | 
            -
                    instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
         | 
| 204 | 
            -
                    instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
         | 
| 205 | 
            -
                    instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
         | 
| 206 | 
            -
                    instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
         | 
| 207 | 
            -
                    instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
         | 
| 208 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 209 | 
            -
                        "Instance",
         | 
| 210 | 
            -
                        instanceProductServiceSelectors, 
         | 
| 211 | 
            -
                        PRODUCT_SERVICE_ROLE());
         | 
| 212 | 
            -
                }
         | 
| 213 | 
            -
             | 
| 214 | 
            -
                function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 215 | 
            -
                    // configure authorization for application services on instance
         | 
| 216 | 
            -
                    address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getVersion().toMajorPart());
         | 
| 217 | 
            -
                    clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
         | 
| 218 | 
            -
                    bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
         | 
| 219 | 
            -
                    instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
         | 
| 220 | 
            -
                    instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
         | 
| 221 | 
            -
                    instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
         | 
| 222 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 223 | 
            -
                        "Instance",
         | 
| 224 | 
            -
                        instanceApplicationServiceSelectors, 
         | 
| 225 | 
            -
                        APPLICATION_SERVICE_ROLE());
         | 
| 226 | 
            -
                }
         | 
| 227 | 
            -
             | 
| 228 | 
            -
                function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 229 | 
            -
                    // configure authorization for policy services on instance
         | 
| 230 | 
            -
                    address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart());
         | 
| 231 | 
            -
                    clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
         | 
| 232 | 
            -
                    bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
         | 
| 233 | 
            -
                    instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
         | 
| 234 | 
            -
                    instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
         | 
| 235 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 236 | 
            -
                        "Instance",
         | 
| 237 | 
            -
                        instancePolicyServiceSelectors, 
         | 
| 238 | 
            -
                        POLICY_SERVICE_ROLE());
         | 
| 239 | 
            -
                }
         | 
| 240 | 
            -
             | 
| 241 | 
            -
                function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 242 | 
            -
                    // configure authorization for claim/payout services on instance
         | 
| 243 | 
            -
                    address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getVersion().toMajorPart());
         | 
| 244 | 
            -
                    clonedAccessManager.grantRole(CLAIM_SERVICE_ROLE(), claimServiceAddress);
         | 
| 245 | 
            -
                    bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
         | 
| 246 | 
            -
                    instanceClaimServiceSelectors[0] = clonedInstance.createClaim.selector;
         | 
| 247 | 
            -
                    instanceClaimServiceSelectors[1] = clonedInstance.updateClaim.selector;
         | 
| 248 | 
            -
                    instanceClaimServiceSelectors[2] = clonedInstance.createPayout.selector;
         | 
| 249 | 
            -
                    instanceClaimServiceSelectors[3] = clonedInstance.updatePayout.selector;
         | 
| 250 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 251 | 
            -
                        "Instance",
         | 
| 252 | 
            -
                        instanceClaimServiceSelectors, 
         | 
| 253 | 
            -
                        CLAIM_SERVICE_ROLE());
         | 
| 254 | 
            -
                }
         | 
| 255 | 
            -
             | 
| 256 | 
            -
                function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
         | 
| 257 | 
            -
                    // configure authorization for bundle service on instance
         | 
| 258 | 
            -
                    address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart());
         | 
| 259 | 
            -
                    clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
         | 
| 260 | 
            -
                    bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
         | 
| 261 | 
            -
                    instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
         | 
| 262 | 
            -
                    instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
         | 
| 263 | 
            -
                    instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
         | 
| 264 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 265 | 
            -
                        "Instance",
         | 
| 266 | 
            -
                        instanceBundleServiceSelectors, 
         | 
| 267 | 
            -
                        BUNDLE_SERVICE_ROLE());
         | 
| 268 | 
            -
             | 
| 269 | 
            -
                    // configure authorization for bundle service on bundle manager
         | 
| 270 | 
            -
                    bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
         | 
| 271 | 
            -
                    bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
         | 
| 272 | 
            -
                    bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
         | 
| 273 | 
            -
                    bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
         | 
| 274 | 
            -
                    bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
         | 
| 275 | 
            -
                    bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
         | 
| 276 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 277 | 
            -
                        "BundleManager",
         | 
| 278 | 
            -
                        bundleManagerBundleServiceSelectors, 
         | 
| 279 | 
            -
                        BUNDLE_SERVICE_ROLE());
         | 
| 280 | 
            -
                }
         | 
| 281 | 
            -
             | 
| 282 | 
            -
                function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
         | 
| 283 | 
            -
                    // configure authorization for instance service on instance
         | 
| 284 | 
            -
                    address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getVersion().toMajorPart());
         | 
| 285 | 
            -
                    clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
         | 
| 286 | 
            -
                    bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
         | 
| 287 | 
            -
                    instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
         | 
| 288 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 289 | 
            -
                        "Instance",
         | 
| 290 | 
            -
                        instanceInstanceServiceSelectors, 
         | 
| 291 | 
            -
                        INSTANCE_SERVICE_ROLE());
         | 
| 292 | 
            -
             | 
| 293 | 
            -
                    // configure authorizations for instance service on instance access manager
         | 
| 294 | 
            -
                    bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
         | 
| 295 | 
            -
                    accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
         | 
| 296 | 
            -
                    accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
         | 
| 297 | 
            -
                    accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
         | 
| 298 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 299 | 
            -
                        "InstanceAccessManager",
         | 
| 300 | 
            -
                        accessManagerInstanceServiceSelectors, 
         | 
| 301 | 
            -
                        INSTANCE_SERVICE_ROLE());
         | 
| 302 | 
            -
                }
         | 
| 303 | 
            -
             | 
| 304 | 
            -
                function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
         | 
| 305 | 
            -
                    // configure authorization for instance owner on instance access manager
         | 
| 306 | 
            -
                    // instance owner role is granted/revoked ONLY by INSTANCE_ROLE
         | 
| 307 | 
            -
                    bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
         | 
| 308 | 
            -
                    accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createRole.selector;
         | 
| 309 | 
            -
                    accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createTarget.selector;
         | 
| 310 | 
            -
                    accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
         | 
| 311 | 
            -
                    clonedAccessManager.setCoreTargetFunctionRole(
         | 
| 312 | 
            -
                        "InstanceAccessManager",
         | 
| 313 | 
            -
                        accessManagerInstanceOwnerSelectors, 
         | 
| 314 | 
            -
                        INSTANCE_OWNER_ROLE());
         | 
| 315 | 
            -
                }
         | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
                function setAndRegisterMasterInstance(address instanceAddress) 
         | 
| 138 | 
            +
                function setAndRegisterMasterInstance(address instanceAddress)
         | 
| 319 139 | 
             
                        external 
         | 
| 320 140 | 
             
                        onlyOwner 
         | 
| 321 141 | 
             
                        returns(NftId masterInstanceNftId)
         | 
| @@ -328,37 +148,36 @@ contract InstanceService is | |
| 328 148 | 
             
                    if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
         | 
| 329 149 |  | 
| 330 150 | 
             
                    IInstance instance = IInstance(instanceAddress);
         | 
| 331 | 
            -
                    AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
         | 
| 332 | 
            -
                    address ozAccessManagerAddress = address(ozAccessManager);
         | 
| 333 151 | 
             
                    InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
         | 
| 334 152 | 
             
                    address instanceAccessManagerAddress = address(instanceAccessManager);
         | 
| 335 153 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 336 154 | 
             
                    address instanceReaderAddress = address(instanceReader);
         | 
| 337 155 | 
             
                    BundleManager bundleManager = instance.getBundleManager();
         | 
| 338 156 | 
             
                    address bundleManagerAddress = address(bundleManager);
         | 
| 157 | 
            +
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 158 | 
            +
                    address instanceStoreAddress = address(instanceStore);
         | 
| 339 159 |  | 
| 340 | 
            -
                    if(ozAccessManagerAddress == address(0)) { revert ErrorInstanceServiceOzAccessManagerZero();}
         | 
| 341 160 | 
             
                    if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
         | 
| 342 161 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
         | 
| 343 162 | 
             
                    if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
         | 
| 163 | 
            +
                    if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
         | 
| 344 164 |  | 
| 345 165 | 
             
                    if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
         | 
| 346 166 | 
             
                    if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
         | 
| 347 | 
            -
                    if( | 
| 167 | 
            +
                    if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
         | 
| 348 168 | 
             
                    if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
         | 
| 169 | 
            +
                    if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
         | 
| 349 170 |  | 
| 350 | 
            -
                    _masterOzAccessManager =  | 
| 171 | 
            +
                    _masterOzAccessManager = instance.authority();
         | 
| 351 172 | 
             
                    _masterInstanceAccessManager = instanceAccessManagerAddress;
         | 
| 352 173 | 
             
                    _masterInstance = instanceAddress;
         | 
| 353 174 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 354 175 | 
             
                    _masterInstanceBundleManager = bundleManagerAddress;
         | 
| 176 | 
            +
                    _masterInstanceStore = instanceStoreAddress;
         | 
| 355 177 |  | 
| 356 | 
            -
                    IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getVersion().toMajorPart()));
         | 
| 357 178 | 
             
                    IInstance masterInstance = IInstance(_masterInstance);
         | 
| 358 | 
            -
                    IRegistry.ObjectInfo memory info =  | 
| 179 | 
            +
                    IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
         | 
| 359 180 | 
             
                    masterInstanceNftId = info.nftId;
         | 
| 360 | 
            -
             | 
| 361 | 
            -
                    // masterInstance.linkToRegisteredNftId();
         | 
| 362 181 | 
             
                }
         | 
| 363 182 |  | 
| 364 183 | 
             
                function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
         | 
| @@ -385,32 +204,6 @@ contract InstanceService is | |
| 385 204 | 
             
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 386 205 | 
             
                }
         | 
| 387 206 |  | 
| 388 | 
            -
                function getMasterInstanceReader() external view returns (address) {
         | 
| 389 | 
            -
                    return _masterInstanceReader;
         | 
| 390 | 
            -
                }
         | 
| 391 | 
            -
             | 
| 392 | 
            -
                // From IService
         | 
| 393 | 
            -
                function getDomain() public pure override returns(ObjectType) {
         | 
| 394 | 
            -
                    return INSTANCE();
         | 
| 395 | 
            -
                }
         | 
| 396 | 
            -
                
         | 
| 397 | 
            -
                /// @dev top level initializer
         | 
| 398 | 
            -
                function _initialize(
         | 
| 399 | 
            -
                    address owner, 
         | 
| 400 | 
            -
                    bytes memory data
         | 
| 401 | 
            -
                )
         | 
| 402 | 
            -
                    internal
         | 
| 403 | 
            -
                    initializer
         | 
| 404 | 
            -
                    virtual override
         | 
| 405 | 
            -
                {
         | 
| 406 | 
            -
                    address initialOwner;
         | 
| 407 | 
            -
                    address registryAddress;
         | 
| 408 | 
            -
                    (registryAddress, initialOwner) = abi.decode(data, (address, address));
         | 
| 409 | 
            -
                    // TODO while InstanceService is not deployed in InstanceServiceManager constructor
         | 
| 410 | 
            -
                    //      owner is InstanceServiceManager deployer
         | 
| 411 | 
            -
                    initializeService(registryAddress, address(0), owner);
         | 
| 412 | 
            -
                    registerInterface(type(IInstanceService).interfaceId);
         | 
| 413 | 
            -
                }
         | 
| 414 207 |  | 
| 415 208 | 
             
                // all gif targets MUST be childs of instanceNftId
         | 
| 416 209 | 
             
                function createGifTarget(
         | 
| @@ -425,13 +218,13 @@ contract InstanceService is | |
| 425 218 | 
             
                {
         | 
| 426 219 | 
             
                    (
         | 
| 427 220 | 
             
                        IInstance instance, // or instanceInfo
         | 
| 428 | 
            -
                         | 
| 221 | 
            +
                        // or targetInfo
         | 
| 429 222 | 
             
                    ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
         | 
| 430 223 |  | 
| 431 224 | 
             
                    InstanceAccessManager accessManager = instance.getInstanceAccessManager();
         | 
| 432 225 | 
             
                    accessManager.createGifTarget(targetAddress, targetName);
         | 
| 433 226 | 
             
                    // set proposed target config
         | 
| 434 | 
            -
                    // TODO restriction:  | 
| 227 | 
            +
                    // TODO restriction: gif targets are set only once and only here?
         | 
| 435 228 | 
             
                    //      assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
         | 
| 436 229 | 
             
                    for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
         | 
| 437 230 | 
             
                    {
         | 
| @@ -439,6 +232,7 @@ contract InstanceService is | |
| 439 232 | 
             
                    }
         | 
| 440 233 | 
             
                }
         | 
| 441 234 |  | 
| 235 | 
            +
             | 
| 442 236 | 
             
                // TODO called by component, but target can be component helper...so needs target name
         | 
| 443 237 | 
             
                // TODO check that targetName associated with component...how???
         | 
| 444 238 | 
             
                function setComponentLocked(bool locked) onlyComponent external {
         | 
| @@ -451,11 +245,47 @@ contract InstanceService is | |
| 451 245 | 
             
                        registry.getObjectInfo(
         | 
| 452 246 | 
             
                            instanceNftId).objectAddress);
         | 
| 453 247 |  | 
| 454 | 
            -
                    instance.getInstanceAccessManager(). | 
| 248 | 
            +
                    instance.getInstanceAccessManager().setTargetLockedByService(
         | 
| 455 249 | 
             
                        componentAddress, 
         | 
| 456 250 | 
             
                        locked);
         | 
| 457 251 | 
             
                }
         | 
| 458 252 |  | 
| 253 | 
            +
             | 
| 254 | 
            +
                function getMasterInstanceReader() external view returns (address) {
         | 
| 255 | 
            +
                    return _masterInstanceReader;
         | 
| 256 | 
            +
                }
         | 
| 257 | 
            +
             | 
| 258 | 
            +
                // From IService
         | 
| 259 | 
            +
                function getDomain() public pure override returns(ObjectType) {
         | 
| 260 | 
            +
                    return INSTANCE();
         | 
| 261 | 
            +
                }
         | 
| 262 | 
            +
                
         | 
| 263 | 
            +
                /// @dev top level initializer
         | 
| 264 | 
            +
                function _initialize(
         | 
| 265 | 
            +
                    address owner, 
         | 
| 266 | 
            +
                    bytes memory data
         | 
| 267 | 
            +
                )
         | 
| 268 | 
            +
                    internal
         | 
| 269 | 
            +
                    initializer
         | 
| 270 | 
            +
                    virtual override
         | 
| 271 | 
            +
                {
         | 
| 272 | 
            +
                    (
         | 
| 273 | 
            +
                        address registryAddress,
         | 
| 274 | 
            +
                        address initialOwner
         | 
| 275 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 276 | 
            +
             | 
| 277 | 
            +
                    _registryService = IRegistryService(
         | 
| 278 | 
            +
                        IRegistry(registryAddress).getServiceAddress(
         | 
| 279 | 
            +
                            REGISTRY(), 
         | 
| 280 | 
            +
                            getVersion().toMajorPart()));
         | 
| 281 | 
            +
             | 
| 282 | 
            +
                    // TODO while InstanceService is not deployed in InstanceServiceManager constructor
         | 
| 283 | 
            +
                    //      owner is InstanceServiceManager deployer
         | 
| 284 | 
            +
                    initializeService(registryAddress, address(0), owner);
         | 
| 285 | 
            +
                    registerInterface(type(IInstanceService).interfaceId);
         | 
| 286 | 
            +
                }
         | 
| 287 | 
            +
             | 
| 288 | 
            +
             | 
| 459 289 | 
             
                function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress) 
         | 
| 460 290 | 
             
                    internal
         | 
| 461 291 | 
             
                    view
         |