@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da09ec0-359
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 +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +315 -98
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -144
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +257 -144
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +676 -183
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +435 -186
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1594
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +232 -208
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +393 -2515
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +359 -92
- 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 +424 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +338 -409
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +291 -108
- 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 +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -169
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +51 -42
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +526 -340
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +340 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1376 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +982 -198
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +493 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +290 -270
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +527 -128
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +181 -296
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +705 -122
- 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 +71 -160
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +449 -395
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +349 -114
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1018 -202
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +360 -89
- 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 +231 -223
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -15
- 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 +182 -232
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +100 -33
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -76
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- 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 +115 -58
- 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 +190 -210
- 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 +8 -190
- 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 +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
- 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 +74 -19
- 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 +17 -4
- 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 +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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 +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- 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/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- 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 +2 -2
- package/contracts/components/Component.sol +134 -78
- package/contracts/components/Distribution.sol +189 -57
- package/contracts/components/IComponent.sol +62 -15
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +86 -23
- package/contracts/components/IProductComponent.sol +8 -6
- package/contracts/components/Pool.sol +230 -136
- package/contracts/components/Product.sol +227 -118
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +40 -35
- package/contracts/instance/IInstanceService.sol +44 -13
- package/contracts/instance/Instance.sol +131 -171
- package/contracts/instance/InstanceAccessManager.sol +281 -154
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +90 -15
- package/contracts/instance/InstanceService.sol +173 -338
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +18 -12
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +3 -0
- package/contracts/instance/module/IPolicy.sol +43 -11
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +186 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +225 -136
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +437 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +264 -22
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +62 -0
- package/contracts/instance/service/IBundleService.sol +96 -22
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +76 -1
- package/contracts/instance/service/IPolicyService.sol +40 -54
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +200 -362
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +313 -20
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +41 -64
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +3 -2
- package/contracts/registry/IRegistryService.sol +12 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +30 -20
- package/contracts/registry/RegistryService.sol +75 -51
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -27
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +32 -20
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +17 -8
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +16 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +12 -8
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -4,45 +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 {ChainNft} from "../registry/ChainNft.sol";
|
16
|
-
import {Service} from "../../contracts/shared/Service.sol";
|
17
|
-
import {IService} from "../shared/IService.sol";
|
18
|
-
import {NftId} from "../../contracts/types/NftId.sol";
|
19
|
-
import {RoleId} from "../types/RoleId.sol";
|
20
|
-
import {
|
21
|
-
ADMIN_ROLE,
|
22
|
-
INSTANCE_OWNER_ROLE,
|
23
|
-
DISTRIBUTION_OWNER_ROLE,
|
24
|
-
POOL_OWNER_ROLE,
|
25
|
-
PRODUCT_OWNER_ROLE,
|
26
|
-
INSTANCE_SERVICE_ROLE,
|
27
|
-
DISTRIBUTION_SERVICE_ROLE,
|
28
|
-
POOL_SERVICE_ROLE,
|
29
|
-
PRODUCT_SERVICE_ROLE,
|
30
|
-
POLICY_SERVICE_ROLE,
|
31
|
-
BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
32
|
-
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
33
|
-
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
34
|
-
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
35
|
-
import {IProductComponent} from "../components/IProductComponent.sol";
|
30
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
31
|
+
import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
|
36
32
|
|
37
|
-
contract InstanceService is
|
33
|
+
contract InstanceService is
|
34
|
+
Service,
|
35
|
+
IInstanceService
|
36
|
+
{
|
38
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;
|
42
|
+
address internal _masterOzAccessManager;
|
39
43
|
address internal _masterInstanceAccessManager;
|
40
44
|
address internal _masterInstance;
|
41
45
|
address internal _masterInstanceReader;
|
42
46
|
address internal _masterInstanceBundleManager;
|
43
|
-
|
44
|
-
// TODO update to real hash when instance is stable
|
45
|
-
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
47
|
+
address internal _masterInstanceStore;
|
46
48
|
|
47
49
|
modifier onlyInstanceOwner(NftId instanceNftId) {
|
48
50
|
if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
|
@@ -50,14 +52,15 @@ contract InstanceService is Service, IInstanceService {
|
|
50
52
|
}
|
51
53
|
_;
|
52
54
|
}
|
53
|
-
|
55
|
+
// TODO check service domain?
|
56
|
+
// TODO check release version?
|
54
57
|
modifier onlyRegisteredService() {
|
55
58
|
if (! getRegistry().isRegisteredService(msg.sender)) {
|
56
59
|
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
57
60
|
}
|
58
61
|
_;
|
59
62
|
}
|
60
|
-
|
63
|
+
// TODO check release version?
|
61
64
|
modifier onlyComponent() {
|
62
65
|
if (! getRegistry().isRegisteredComponent(msg.sender)) {
|
63
66
|
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
@@ -68,258 +71,122 @@ contract InstanceService is Service, IInstanceService {
|
|
68
71
|
function createInstanceClone()
|
69
72
|
external
|
70
73
|
returns (
|
71
|
-
InstanceAccessManager clonedAccessManager,
|
72
74
|
Instance clonedInstance,
|
73
|
-
NftId clonedInstanceNftId
|
74
|
-
InstanceReader clonedInstanceReader,
|
75
|
-
BundleManager clonedBundleManager
|
75
|
+
NftId clonedInstanceNftId
|
76
76
|
)
|
77
77
|
{
|
78
78
|
address instanceOwner = msg.sender;
|
79
|
-
|
80
|
-
|
81
|
-
NftId registryNftId = registry.getNftId(registryAddress);
|
82
|
-
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
|
83
|
-
IRegistryService registryService = IRegistryService(registryServiceAddress);
|
79
|
+
AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
|
80
|
+
Clones.clone(_masterOzAccessManager));
|
84
81
|
|
85
82
|
// initially grants ADMIN_ROLE to this (being the instance service).
|
86
83
|
// This will allow the instance service to bootstrap the authorizations of the instance.
|
84
|
+
// Instance service will not use oz access manager directlly but through instance access manager instead
|
87
85
|
// Instance service will renounce ADMIN_ROLE when bootstraping is finished
|
88
|
-
|
89
|
-
clonedAccessManager.initialize(address(this), registryAddress);
|
86
|
+
clonedOzAccessManager.initialize(address(this));
|
90
87
|
|
91
88
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
92
|
-
clonedInstance.initialize(
|
89
|
+
clonedInstance.initialize(
|
90
|
+
address(clonedOzAccessManager),
|
91
|
+
address(getRegistry()),
|
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);
|
93
97
|
|
94
|
-
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
95
|
-
clonedInstanceReader.initialize(
|
98
|
+
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
99
|
+
clonedInstanceReader.initialize(address(clonedInstance));
|
96
100
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
97
101
|
|
98
|
-
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
99
|
-
clonedBundleManager.initialize(address(
|
102
|
+
BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
103
|
+
clonedBundleManager.initialize(address(clonedInstance));
|
100
104
|
clonedInstance.setBundleManager(clonedBundleManager);
|
101
105
|
|
106
|
+
InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
|
107
|
+
clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
|
108
|
+
clonedInstanceAccessManager.initialize(address(clonedInstance));
|
109
|
+
clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
|
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
|
-
// clonedInstance.linkToRegisteredNftId();
|
111
|
-
|
112
|
-
emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
|
113
|
-
}
|
114
|
-
|
115
|
-
function _grantInitialAuthorizations(
|
116
|
-
InstanceAccessManager clonedAccessManager,
|
117
|
-
Instance clonedInstance,
|
118
|
-
BundleManager clonedBundleManager,
|
119
|
-
address instanceOwner)
|
120
|
-
internal
|
121
|
-
{
|
122
|
-
_createCoreAndGifRoles(clonedAccessManager);
|
123
|
-
_createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
|
124
|
-
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
125
|
-
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
126
|
-
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
127
|
-
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
128
|
-
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
129
|
-
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
130
|
-
_grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
|
131
|
-
}
|
132
|
-
|
133
|
-
function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
|
134
|
-
// default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
|
135
|
-
clonedAccessManager.createRole(INSTANCE_OWNER_ROLE(), "InstanceOwnerRole", ADMIN_ROLE());
|
136
|
-
clonedAccessManager.createRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
|
137
|
-
clonedAccessManager.createRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
|
138
|
-
clonedAccessManager.createRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
|
139
|
-
// default roles controlled by INSTANCE_SERVICE_ROLE -> core roles, all set/granted only once during cloning
|
140
|
-
clonedAccessManager.createRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole", ADMIN_ROLE());
|
141
|
-
clonedAccessManager.createRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole", ADMIN_ROLE());
|
142
|
-
clonedAccessManager.createRole(POOL_SERVICE_ROLE(), "PoolServiceRole", ADMIN_ROLE());
|
143
|
-
clonedAccessManager.createRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole", ADMIN_ROLE());
|
144
|
-
clonedAccessManager.createRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole", ADMIN_ROLE());
|
145
|
-
clonedAccessManager.createRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole", ADMIN_ROLE());
|
146
|
-
// custom roles -> controled by component owner
|
147
|
-
}
|
148
|
-
|
149
|
-
function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
150
|
-
clonedAccessManager.createTarget(address(clonedAccessManager), "InstanceAccessManager");
|
151
|
-
clonedAccessManager.createTarget(address(clonedInstance), "Instance");
|
152
|
-
clonedAccessManager.createTarget(address(clonedBundleManager), "BundleManager");
|
153
|
-
}
|
154
|
-
|
155
|
-
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
156
|
-
// configure authorization for distribution service on instance
|
157
|
-
IRegistry registry = getRegistry();
|
158
|
-
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
159
|
-
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
160
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
|
161
|
-
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;// can instance owner set another role for this function?
|
162
|
-
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
163
|
-
clonedAccessManager.setTargetFunctionRole(
|
164
|
-
"Instance",
|
165
|
-
instanceDistributionServiceSelectors,
|
166
|
-
DISTRIBUTION_SERVICE_ROLE());
|
167
|
-
}
|
168
|
-
|
169
|
-
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
170
|
-
// configure authorization for pool service on instance
|
171
|
-
address poolServiceAddress = _registry.getServiceAddress(POOL(), getMajorVersion());
|
172
|
-
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
173
|
-
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
174
|
-
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
175
|
-
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
176
|
-
clonedAccessManager.setTargetFunctionRole(
|
177
|
-
"Instance",
|
178
|
-
instancePoolServiceSelectors,
|
179
|
-
POOL_SERVICE_ROLE());
|
180
|
-
}
|
181
|
-
|
182
|
-
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
183
|
-
// configure authorization for product service on instance
|
184
|
-
address productServiceAddress = _registry.getServiceAddress(PRODUCT(), getMajorVersion());
|
185
|
-
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
186
|
-
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
187
|
-
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
188
|
-
instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
|
189
|
-
instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
|
190
|
-
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
191
|
-
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
192
|
-
clonedAccessManager.setTargetFunctionRole(
|
193
|
-
"Instance",
|
194
|
-
instanceProductServiceSelectors,
|
195
|
-
PRODUCT_SERVICE_ROLE());
|
196
|
-
}
|
197
|
-
|
198
|
-
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
199
|
-
// configure authorization for policy service on instance
|
200
|
-
address policyServiceAddress = _registry.getServiceAddress(POLICY(), getMajorVersion());
|
201
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
|
202
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
|
203
|
-
instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
|
204
|
-
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
|
205
|
-
instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
|
206
|
-
clonedAccessManager.setTargetFunctionRole(
|
207
|
-
"Instance",
|
208
|
-
instancePolicyServiceSelectors,
|
209
|
-
POLICY_SERVICE_ROLE());
|
210
|
-
}
|
211
|
-
|
212
|
-
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
213
|
-
// configure authorization for bundle service on instance
|
214
|
-
address bundleServiceAddress = _registry.getServiceAddress(BUNDLE(), getMajorVersion());
|
215
|
-
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
216
|
-
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
|
217
|
-
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
218
|
-
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
219
|
-
clonedAccessManager.setTargetFunctionRole(
|
220
|
-
"Instance",
|
221
|
-
instanceBundleServiceSelectors,
|
222
|
-
BUNDLE_SERVICE_ROLE());
|
223
|
-
|
224
|
-
// configure authorization for bundle service on bundle manager
|
225
|
-
bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
|
226
|
-
bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
|
227
|
-
bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
|
228
|
-
bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
|
229
|
-
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
230
|
-
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
231
|
-
clonedAccessManager.setTargetFunctionRole(
|
232
|
-
"BundleManager",
|
233
|
-
bundleManagerBundleServiceSelectors,
|
234
|
-
BUNDLE_SERVICE_ROLE());
|
235
|
-
}
|
236
|
-
|
237
|
-
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
238
|
-
// configure authorization for instance service on instance
|
239
|
-
address instanceServiceAddress = _registry.getServiceAddress(INSTANCE(), getMajorVersion());
|
240
|
-
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
241
|
-
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
242
|
-
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
243
|
-
clonedAccessManager.setTargetFunctionRole(
|
244
|
-
"Instance",
|
245
|
-
instanceInstanceServiceSelectors,
|
246
|
-
INSTANCE_SERVICE_ROLE());
|
247
|
-
|
248
|
-
// configure authorizations for instance service on instance access manager
|
249
|
-
bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
|
250
|
-
accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createTarget.selector;
|
251
|
-
accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
|
252
|
-
accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
|
253
|
-
clonedAccessManager.setTargetFunctionRole(
|
254
|
-
"InstanceAccessManager",
|
255
|
-
accessManagerInstanceServiceSelectors,
|
256
|
-
INSTANCE_SERVICE_ROLE());
|
257
|
-
}
|
258
127
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
clonedAccessManager.setTargetFunctionRole(
|
268
|
-
"InstanceAccessManager",
|
269
|
-
accessManagerInstanceOwnerSelectors,
|
270
|
-
INSTANCE_OWNER_ROLE());
|
128
|
+
emit LogInstanceCloned(
|
129
|
+
address(clonedOzAccessManager),
|
130
|
+
address(clonedInstanceAccessManager),
|
131
|
+
address(clonedInstance),
|
132
|
+
address(clonedInstanceStore),
|
133
|
+
address(clonedBundleManager),
|
134
|
+
address(clonedInstanceReader),
|
135
|
+
clonedInstanceNftId);
|
271
136
|
}
|
272
137
|
|
273
|
-
function setAndRegisterMasterInstance(address instanceAddress)
|
138
|
+
function setAndRegisterMasterInstance(address instanceAddress)
|
274
139
|
external
|
275
140
|
onlyOwner
|
276
141
|
returns(NftId masterInstanceNftId)
|
277
142
|
{
|
278
|
-
|
279
|
-
|
280
|
-
|
143
|
+
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
144
|
+
if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
|
145
|
+
if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
|
146
|
+
if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
|
281
147
|
|
282
|
-
|
148
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
283
149
|
|
284
150
|
IInstance instance = IInstance(instanceAddress);
|
285
|
-
InstanceAccessManager
|
286
|
-
address
|
151
|
+
InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
|
152
|
+
address instanceAccessManagerAddress = address(instanceAccessManager);
|
287
153
|
InstanceReader instanceReader = instance.getInstanceReader();
|
288
154
|
address instanceReaderAddress = address(instanceReader);
|
289
155
|
BundleManager bundleManager = instance.getBundleManager();
|
290
156
|
address bundleManagerAddress = address(bundleManager);
|
157
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
158
|
+
address instanceStoreAddress = address(instanceStore);
|
291
159
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
160
|
+
if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
|
161
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
162
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
163
|
+
if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
|
164
|
+
|
165
|
+
if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
166
|
+
if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
|
167
|
+
if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
|
168
|
+
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
169
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
170
|
+
|
171
|
+
_masterOzAccessManager = instance.authority();
|
172
|
+
_masterInstanceAccessManager = instanceAccessManagerAddress;
|
301
173
|
_masterInstance = instanceAddress;
|
302
174
|
_masterInstanceReader = instanceReaderAddress;
|
303
175
|
_masterInstanceBundleManager = bundleManagerAddress;
|
176
|
+
_masterInstanceStore = instanceStoreAddress;
|
304
177
|
|
305
|
-
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
|
306
178
|
IInstance masterInstance = IInstance(_masterInstance);
|
307
|
-
IRegistry.ObjectInfo memory info =
|
179
|
+
IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
|
308
180
|
masterInstanceNftId = info.nftId;
|
309
|
-
|
310
|
-
// masterInstance.linkToRegisteredNftId();
|
311
181
|
}
|
312
182
|
|
313
|
-
function setMasterInstanceReader(address instanceReaderAddress)
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
|
318
|
-
require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
|
319
|
-
require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
|
183
|
+
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
184
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
185
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
186
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
320
187
|
|
321
188
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
322
|
-
|
189
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
323
190
|
|
324
191
|
_masterInstanceReader = instanceReaderAddress;
|
325
192
|
}
|
@@ -333,28 +200,63 @@ contract InstanceService is Service, IInstanceService {
|
|
333
200
|
Instance instance = Instance(instanceInfo.objectAddress);
|
334
201
|
|
335
202
|
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
336
|
-
upgradedInstanceReaderClone.initialize(address(
|
203
|
+
upgradedInstanceReaderClone.initialize(address(instance));
|
337
204
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
338
205
|
}
|
339
206
|
|
340
|
-
function getMasterInstanceReader() external view returns (address) {
|
341
|
-
return _masterInstanceReader;
|
342
|
-
}
|
343
207
|
|
344
|
-
|
345
|
-
|
208
|
+
// all gif targets MUST be childs of instanceNftId
|
209
|
+
function createGifTarget(
|
210
|
+
NftId instanceNftId,
|
211
|
+
address targetAddress,
|
212
|
+
string memory targetName,
|
213
|
+
bytes4[][] memory selectors,
|
214
|
+
RoleId[] memory roles
|
215
|
+
)
|
216
|
+
external
|
217
|
+
onlyRegisteredService
|
218
|
+
{
|
219
|
+
(
|
220
|
+
IInstance instance, // or instanceInfo
|
221
|
+
// or targetInfo
|
222
|
+
) = _validateInstanceAndComponent(instanceNftId, targetAddress);
|
223
|
+
|
224
|
+
InstanceAccessManager accessManager = instance.getInstanceAccessManager();
|
225
|
+
accessManager.createGifTarget(targetAddress, targetName);
|
226
|
+
// set proposed target config
|
227
|
+
// TODO restriction: gif targets are set only once and only here?
|
228
|
+
// assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
|
229
|
+
for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
|
230
|
+
{
|
231
|
+
accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
|
232
|
+
}
|
346
233
|
}
|
347
234
|
|
348
|
-
|
349
|
-
|
235
|
+
|
236
|
+
// TODO called by component, but target can be component helper...so needs target name
|
237
|
+
// TODO check that targetName associated with component...how???
|
238
|
+
function setComponentLocked(bool locked) onlyComponent external {
|
239
|
+
|
240
|
+
address componentAddress = msg.sender;
|
241
|
+
IRegistry registry = getRegistry();
|
242
|
+
NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
|
243
|
+
|
244
|
+
IInstance instance = IInstance(
|
245
|
+
registry.getObjectInfo(
|
246
|
+
instanceNftId).objectAddress);
|
247
|
+
|
248
|
+
instance.getInstanceAccessManager().setTargetLockedByService(
|
249
|
+
componentAddress,
|
250
|
+
locked);
|
350
251
|
}
|
351
252
|
|
352
|
-
|
353
|
-
|
253
|
+
|
254
|
+
function getMasterInstanceReader() external view returns (address) {
|
255
|
+
return _masterInstanceReader;
|
354
256
|
}
|
355
257
|
|
356
258
|
// From IService
|
357
|
-
function getDomain() public pure override
|
259
|
+
function getDomain() public pure override returns(ObjectType) {
|
358
260
|
return INSTANCE();
|
359
261
|
}
|
360
262
|
|
@@ -367,107 +269,40 @@ contract InstanceService is Service, IInstanceService {
|
|
367
269
|
initializer
|
368
270
|
virtual override
|
369
271
|
{
|
370
|
-
|
371
|
-
|
372
|
-
|
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
|
+
|
373
282
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
374
283
|
// owner is InstanceServiceManager deployer
|
375
|
-
|
376
|
-
|
377
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
284
|
+
initializeService(registryAddress, address(0), owner);
|
285
|
+
registerInterface(type(IInstanceService).interfaceId);
|
378
286
|
}
|
379
287
|
|
380
|
-
|
381
|
-
function
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
// creates gif targets only -> they have INSTANCE as parent
|
387
|
-
function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
|
288
|
+
|
289
|
+
function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
|
290
|
+
internal
|
291
|
+
view
|
292
|
+
returns (IInstance instance, NftId componentNftId)
|
293
|
+
{
|
388
294
|
IRegistry registry = getRegistry();
|
389
295
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
390
|
-
|
391
296
|
if(instanceInfo.objectType != INSTANCE()) {
|
392
297
|
revert ErrorInstanceServiceNotInstance(instanceNftId);
|
393
298
|
}
|
394
299
|
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
}
|
399
|
-
|
400
|
-
function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
|
401
|
-
IRegistry registry = getRegistry();
|
402
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
|
403
|
-
|
404
|
-
if (distributionInfo.objectType != DISTRIBUTION()) {
|
405
|
-
revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
|
406
|
-
}
|
407
|
-
|
408
|
-
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
409
|
-
Instance instance = Instance(instanceInfo.objectAddress);
|
410
|
-
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
411
|
-
|
412
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
413
|
-
fctSelectors[0] = IDistributionComponent.setFees.selector;
|
414
|
-
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
|
415
|
-
|
416
|
-
bytes4[] memory fctSelectors2 = new bytes4[](2);
|
417
|
-
fctSelectors2[0] = IDistributionComponent.processSale.selector;
|
418
|
-
fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
|
419
|
-
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
|
420
|
-
}
|
421
|
-
|
422
|
-
function grantPoolDefaultPermissions(NftId instanceNftId, address poolAddress, string memory poolName) external onlyRegisteredService {
|
423
|
-
IRegistry registry = getRegistry();
|
424
|
-
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
|
425
|
-
|
426
|
-
if (poolInfo.objectType != POOL()) {
|
427
|
-
revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
|
428
|
-
}
|
429
|
-
|
430
|
-
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
431
|
-
Instance instance = Instance(instanceInfo.objectAddress);
|
432
|
-
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
433
|
-
|
434
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
435
|
-
fctSelectors[0] = IPoolComponent.setFees.selector;
|
436
|
-
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
|
437
|
-
|
438
|
-
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
439
|
-
fctSelectors2[0] = IPoolComponent.underwrite.selector;
|
440
|
-
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
441
|
-
}
|
442
|
-
|
443
|
-
function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
|
444
|
-
IRegistry registry = getRegistry();
|
445
|
-
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
|
446
|
-
|
447
|
-
if (productInfo.objectType != PRODUCT()) {
|
448
|
-
revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
|
300
|
+
IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
|
301
|
+
if(componentInfo.parentNftId != instanceNftId) {
|
302
|
+
revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
|
449
303
|
}
|
450
304
|
|
451
|
-
|
452
|
-
|
453
|
-
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
454
|
-
|
455
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
456
|
-
fctSelectors[0] = IProductComponent.setFees.selector;
|
457
|
-
instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
|
305
|
+
instance = Instance(instanceInfo.objectAddress);
|
306
|
+
componentNftId = componentInfo.nftId;
|
458
307
|
}
|
459
|
-
|
460
|
-
function setComponentLocked(bool locked) onlyComponent external {
|
461
|
-
address componentAddress = msg.sender;
|
462
|
-
IRegistry registry = getRegistry();
|
463
|
-
NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
|
464
|
-
address instanceAddress = registry.getObjectInfo(instanceNftId).objectAddress;
|
465
|
-
IInstance instance = IInstance(instanceAddress);
|
466
|
-
|
467
|
-
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
468
|
-
// TODO setLocked by target address?
|
469
|
-
string memory componentName = ShortStrings.toString(accessManager.getTargetInfo(componentAddress).name);
|
470
|
-
accessManager.setTargetLocked(componentName, locked);
|
471
|
-
}
|
472
|
-
}
|
473
|
-
|
308
|
+
}
|
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
|
|
17
17
|
constructor(
|
18
18
|
address registryAddress
|
19
19
|
)
|
20
|
-
ProxyManager()
|
20
|
+
ProxyManager(registryAddress)
|
21
21
|
{
|
22
22
|
InstanceService instSrv = new InstanceService();
|
23
23
|
// bytes memory initCode = type(InstanceService).creationCode;
|