@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1bd1936-188
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/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +72 -139
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +116 -110
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +33 -72
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +66 -89
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +101 -122
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +65 -20
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +139 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -71
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +60 -30
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +152 -173
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +108 -170
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +164 -211
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -77
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +44 -83
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +50 -144
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +147 -169
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +75 -138
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- 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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +117 -176
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -71
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +86 -94
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +165 -233
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +64 -82
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +127 -173
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +57 -72
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
- 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/IRegistry.sol/IRegistry.json +56 -155
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
- 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 +96 -314
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +142 -163
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +150 -159
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +185 -127
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +320 -164
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +38 -96
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +226 -82
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +56 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +36 -75
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +109 -170
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +65 -132
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
- package/contracts/accounting/AccountingService.sol +6 -5
- package/contracts/accounting/AccountingServiceManager.sol +6 -4
- package/contracts/accounting/IAccountingService.sol +1 -1
- package/contracts/authorization/AccessAdmin.sol +19 -22
- package/contracts/authorization/AccessAdminLib.sol +9 -12
- package/contracts/authorization/AccessManagerCloneable.sol +48 -24
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -3
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
- package/contracts/distribution/Distribution.sol +2 -0
- package/contracts/distribution/DistributionService.sol +20 -24
- package/contracts/distribution/DistributionServiceManager.sol +6 -4
- package/contracts/examples/fire/FirePool.sol +4 -0
- package/contracts/examples/fire/FireProduct.sol +4 -0
- package/contracts/examples/flight/FlightLib.sol +5 -1
- package/contracts/examples/flight/FlightOracle.sol +8 -0
- package/contracts/examples/flight/FlightPool.sol +4 -0
- package/contracts/examples/flight/FlightProduct.sol +29 -4
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
- package/contracts/instance/Instance.sol +11 -7
- package/contracts/instance/InstanceAdmin.sol +17 -10
- package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
- package/contracts/instance/InstanceReader.sol +15 -15
- package/contracts/instance/InstanceService.sol +20 -18
- package/contracts/instance/InstanceServiceManager.sol +6 -4
- package/contracts/instance/base/Cloneable.sol +10 -4
- package/contracts/instance/base/ObjectSet.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +2 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
- package/contracts/oracle/IOracleService.sol +4 -0
- package/contracts/oracle/Oracle.sol +4 -3
- package/contracts/oracle/OracleService.sol +67 -37
- package/contracts/oracle/OracleServiceManager.sol +6 -4
- package/contracts/pool/BasicPool.sol +4 -2
- package/contracts/pool/BasicPoolAuthorization.sol +4 -5
- package/contracts/pool/BundleService.sol +19 -25
- package/contracts/pool/BundleServiceManager.sol +7 -5
- package/contracts/pool/IPoolService.sol +6 -5
- package/contracts/pool/Pool.sol +3 -1
- package/contracts/pool/PoolLib.sol +102 -5
- package/contracts/pool/PoolService.sol +101 -67
- package/contracts/pool/PoolServiceManager.sol +6 -4
- package/contracts/product/ApplicationService.sol +34 -13
- package/contracts/product/ApplicationServiceManager.sol +6 -4
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +4 -5
- package/contracts/product/ClaimService.sol +34 -10
- package/contracts/product/ClaimServiceManager.sol +7 -5
- package/contracts/product/IPolicyService.sol +1 -0
- package/contracts/product/PolicyService.sol +57 -44
- package/contracts/product/PolicyServiceManager.sol +6 -4
- package/contracts/product/PricingService.sol +8 -7
- package/contracts/product/PricingServiceManager.sol +6 -4
- package/contracts/product/Product.sol +2 -0
- package/contracts/product/RiskService.sol +40 -8
- package/contracts/product/RiskServiceManager.sol +6 -4
- package/contracts/registry/IRegistry.sol +14 -20
- package/contracts/registry/IRegistryService.sol +14 -10
- package/contracts/registry/IRelease.sol +3 -0
- package/contracts/registry/Registry.sol +78 -124
- package/contracts/registry/RegistryAdmin.sol +22 -11
- package/contracts/registry/RegistryAuthorization.sol +3 -4
- package/contracts/registry/RegistryService.sol +82 -99
- package/contracts/registry/RegistryServiceManager.sol +11 -4
- package/contracts/registry/ReleaseAdmin.sol +16 -9
- package/contracts/registry/ReleaseRegistry.sol +74 -64
- package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
- package/contracts/registry/TokenRegistry.sol +15 -6
- package/contracts/shared/Component.sol +22 -27
- package/contracts/shared/ComponentService.sol +130 -45
- package/contracts/shared/ComponentServiceManager.sol +7 -5
- package/contracts/shared/ContractLib.sol +93 -359
- package/contracts/shared/IComponent.sol +3 -5
- package/contracts/shared/IComponentService.sol +14 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +3 -14
- package/contracts/shared/IRegistryLinked.sol +3 -1
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +64 -29
- package/contracts/shared/NftOwnable.sol +22 -9
- package/contracts/shared/PolicyHolder.sol +4 -2
- package/contracts/shared/Registerable.sol +20 -37
- package/contracts/shared/RegistryLinked.sol +23 -4
- package/contracts/shared/Service.sol +9 -8
- package/contracts/shared/TokenHandler.sol +1 -4
- package/contracts/staking/IStaking.sol +2 -2
- package/contracts/staking/Staking.sol +33 -28
- package/contracts/staking/StakingLib.sol +1 -3
- package/contracts/staking/StakingManager.sol +6 -3
- package/contracts/staking/StakingReader.sol +17 -9
- package/contracts/staking/StakingService.sol +13 -16
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +8 -8
- package/contracts/staking/TargetHandler.sol +5 -4
- package/contracts/type/Version.sol +16 -15
- package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
- package/contracts/upgradeability/ProxyManager.sol +54 -46
- package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
- package/package.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
- package/contracts/shared/IVersionable.sol +0 -19
- package/contracts/shared/Versionable.sol +0 -47
| @@ -18,8 +18,6 @@ import {IStaking} from "../staking/IStaking.sol"; | |
| 18 18 | 
             
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 19 19 | 
             
            import {TokenRegistry} from "./TokenRegistry.sol";
         | 
| 20 20 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 21 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 22 | 
            -
            import {VersionLib, Version} from "../type/Version.sol";
         | 
| 23 21 |  | 
| 24 22 | 
             
            /// @dev IMPORTANT
         | 
| 25 23 | 
             
            // Each NFT minted by registry is accosiated with:
         | 
| @@ -33,27 +31,20 @@ import {VersionLib, Version} from "../type/Version.sol"; | |
| 33 31 | 
             
            // 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet. 
         | 
| 34 32 | 
             
            //                          Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
         | 
| 35 33 |  | 
| 36 | 
            -
             | 
| 37 | 
            -
            function GIF_INITIAL_RELEASE() pure returns (VersionPart) {
         | 
| 38 | 
            -
                return VersionPartLib.toVersionPart(3);
         | 
| 39 | 
            -
            }
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 34 | 
             
            /// @dev Chain Registry contract implementing IRegistry.
         | 
| 43 35 | 
             
            /// IRegistry for method details.
         | 
| 44 36 | 
             
            contract Registry is
         | 
| 45 37 | 
             
                Initializable,
         | 
| 46 38 | 
             
                AccessManaged,
         | 
| 47 | 
            -
                Versionable,
         | 
| 48 39 | 
             
                IRegistry
         | 
| 49 40 | 
             
            {
         | 
| 50 41 | 
             
                /// @dev Protocol NFT ID
         | 
| 51 42 | 
             
                NftId public immutable PROTOCOL_NFT_ID;
         | 
| 52 43 |  | 
| 53 | 
            -
                /// @dev  | 
| 44 | 
            +
                /// @dev Gobal registry NFT ID
         | 
| 54 45 | 
             
                NftId public immutable GLOBAL_REGISTRY_NFT_ID;
         | 
| 55 46 |  | 
| 56 | 
            -
                /// @dev  | 
| 47 | 
            +
                /// @dev Gobal registry address on mainnet.
         | 
| 57 48 | 
             
                address public immutable GLOBAL_REGISTRY_ADDRESS;
         | 
| 58 49 |  | 
| 59 50 | 
             
                /// @dev Registry NFT ID
         | 
| @@ -77,9 +68,8 @@ contract Registry is | |
| 77 68 | 
             
                mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
         | 
| 78 69 | 
             
                uint256[] private _chainId;
         | 
| 79 70 |  | 
| 80 | 
            -
                /// @dev keep track of object info | 
| 71 | 
            +
                /// @dev keep track of object info and address reverse lookup
         | 
| 81 72 | 
             
                mapping(NftId nftId => ObjectInfo info) private _info;
         | 
| 82 | 
            -
                mapping(NftId nftId => bytes data) private _data;
         | 
| 83 73 | 
             
                mapping(address object => NftId nftId) private _nftIdByAddress;
         | 
| 84 74 |  | 
| 85 75 | 
             
                /// @dev keep track of service addresses by version and domain
         | 
| @@ -156,8 +146,7 @@ contract Registry is | |
| 156 146 | 
             
                function registerRegistry(
         | 
| 157 147 | 
             
                    NftId nftId,
         | 
| 158 148 | 
             
                    uint256 chainId, 
         | 
| 159 | 
            -
                    address registryAddress | 
| 160 | 
            -
                    VersionPart release
         | 
| 149 | 
            +
                    address registryAddress
         | 
| 161 150 | 
             
                )
         | 
| 162 151 | 
             
                    external
         | 
| 163 152 | 
             
                    restricted()
         | 
| @@ -191,19 +180,20 @@ contract Registry is | |
| 191 180 | 
             
                            nftId: nftId,
         | 
| 192 181 | 
             
                            parentNftId: REGISTRY_NFT_ID,
         | 
| 193 182 | 
             
                            objectType: REGISTRY(),
         | 
| 194 | 
            -
                            release: release,
         | 
| 195 183 | 
             
                            isInterceptor: false,
         | 
| 196 | 
            -
                            objectAddress: registryAddress | 
| 184 | 
            +
                            objectAddress: registryAddress,
         | 
| 185 | 
            +
                            initialOwner: NFT_LOCK_ADDRESS,
         | 
| 186 | 
            +
                            data: ""  
         | 
| 187 | 
            +
                        }),
         | 
| 197 188 | 
             
                        false); // do not update address lookup for objects on a different chain
         | 
| 198 189 | 
             
                }
         | 
| 199 190 |  | 
| 200 191 | 
             
                // TODO limit service owner to registry admin?
         | 
| 201 192 | 
             
                /// @inheritdoc IRegistry
         | 
| 202 193 | 
             
                function registerService(
         | 
| 203 | 
            -
                    ObjectInfo memory info,
         | 
| 204 | 
            -
                     | 
| 205 | 
            -
                    ObjectType domain | 
| 206 | 
            -
                    bytes memory data
         | 
| 194 | 
            +
                    ObjectInfo memory info, 
         | 
| 195 | 
            +
                    VersionPart version, 
         | 
| 196 | 
            +
                    ObjectType domain
         | 
| 207 197 | 
             
                )
         | 
| 208 198 | 
             
                    external
         | 
| 209 199 | 
             
                    restricted()
         | 
| @@ -216,13 +206,12 @@ contract Registry is | |
| 216 206 | 
             
                    }
         | 
| 217 207 |  | 
| 218 208 | 
             
                    // version is defined
         | 
| 219 | 
            -
                     | 
| 220 | 
            -
                    if(release.eqz()) {
         | 
| 209 | 
            +
                    if(version.eqz()) {
         | 
| 221 210 | 
             
                        revert ErrorRegistryServiceVersionZero(service);
         | 
| 222 211 | 
             
                    }
         | 
| 223 212 | 
             
                    // service domain is defined
         | 
| 224 213 | 
             
                    if(domain.eqz()) {
         | 
| 225 | 
            -
                        revert ErrorRegistryServiceDomainZero(service,  | 
| 214 | 
            +
                        revert ErrorRegistryServiceDomainZero(service, version);
         | 
| 226 215 | 
             
                    }
         | 
| 227 216 |  | 
| 228 217 | 
             
                    // service has proper type
         | 
| @@ -232,31 +221,30 @@ contract Registry is | |
| 232 221 |  | 
| 233 222 | 
             
                    // service parent has registry type
         | 
| 234 223 | 
             
                    if(info.parentNftId != REGISTRY_NFT_ID) {
         | 
| 235 | 
            -
                        revert ErrorRegistryServiceParentNotRegistry(service,  | 
| 224 | 
            +
                        revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
         | 
| 236 225 | 
             
                    }
         | 
| 237 226 |  | 
| 238 227 | 
             
                    // service has not already been registered
         | 
| 239 | 
            -
                    if(_service[ | 
| 240 | 
            -
                        revert ErrorRegistryServiceDomainAlreadyRegistered(service,  | 
| 228 | 
            +
                    if(_service[version][domain] != address(0)) {
         | 
| 229 | 
            +
                        revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
         | 
| 241 230 | 
             
                    }
         | 
| 242 231 |  | 
| 243 | 
            -
                    _service[ | 
| 232 | 
            +
                    _service[version][domain] = service;
         | 
| 244 233 |  | 
| 245 | 
            -
                    emit LogRegistryServiceRegistered( | 
| 234 | 
            +
                    emit LogRegistryServiceRegistered(version, domain);
         | 
| 246 235 |  | 
| 247 | 
            -
                    nftId = _register(info | 
| 236 | 
            +
                    nftId = _register(info);
         | 
| 248 237 | 
             
                }
         | 
| 249 238 |  | 
| 250 239 |  | 
| 251 240 | 
             
                /// @inheritdoc IRegistry
         | 
| 252 | 
            -
                function register(ObjectInfo memory info | 
| 241 | 
            +
                function register(ObjectInfo memory info)
         | 
| 253 242 | 
             
                    external
         | 
| 254 243 | 
             
                    restricted()
         | 
| 255 244 | 
             
                    returns(NftId nftId)
         | 
| 256 245 | 
             
                {
         | 
| 257 246 | 
             
                    address objectAddress = info.objectAddress;
         | 
| 258 247 | 
             
                    ObjectType objectType = info.objectType;
         | 
| 259 | 
            -
                    VersionPart parentRelease = _info[info.parentNftId].release;
         | 
| 260 248 |  | 
| 261 249 | 
             
                    // specialized functions have to be used to register registries and services
         | 
| 262 250 | 
             
                    if(objectType == REGISTRY() || objectType == STAKING() || objectType == SERVICE()) {
         | 
| @@ -280,21 +268,18 @@ contract Registry is | |
| 280 268 | 
             
                        }
         | 
| 281 269 | 
             
                    }
         | 
| 282 270 |  | 
| 283 | 
            -
                     | 
| 284 | 
            -
             | 
| 285 | 
            -
                    nftId = _register(info, initialOwner, data);
         | 
| 271 | 
            +
                    nftId = _register(info);
         | 
| 286 272 | 
             
                }
         | 
| 287 273 |  | 
| 288 274 |  | 
| 289 275 | 
             
                /// @inheritdoc IRegistry
         | 
| 290 | 
            -
                function registerWithCustomType(ObjectInfo memory info | 
| 276 | 
            +
                function registerWithCustomType(ObjectInfo memory info)
         | 
| 291 277 | 
             
                    external
         | 
| 292 278 | 
             
                    restricted()
         | 
| 293 279 | 
             
                    returns(NftId nftId)
         | 
| 294 280 | 
             
                {
         | 
| 295 281 | 
             
                    ObjectType objectType = info.objectType;
         | 
| 296 282 | 
             
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 297 | 
            -
                    VersionPart parentRelease = _info[info.parentNftId].release;
         | 
| 298 283 |  | 
| 299 284 | 
             
                    if(_coreTypes[objectType]) {
         | 
| 300 285 | 
             
                        revert ErrorRegistryCoreTypeRegistration();
         | 
| @@ -310,36 +295,13 @@ contract Registry is | |
| 310 295 | 
             
                        revert ErrorRegistryTypeCombinationInvalid(info.objectAddress, objectType, parentType);
         | 
| 311 296 | 
             
                    }
         | 
| 312 297 |  | 
| 313 | 
            -
                     | 
| 314 | 
            -
             | 
| 315 | 
            -
                    nftId = _register(info, initialOwner, data);
         | 
| 298 | 
            +
                    nftId = _register(info);
         | 
| 316 299 | 
             
                }
         | 
| 317 300 |  | 
| 318 | 
            -
                function _checkRelease(
         | 
| 319 | 
            -
                    VersionPart objectRelease, 
         | 
| 320 | 
            -
                    VersionPart parentRelease,
         | 
| 321 | 
            -
                    ObjectType parentType
         | 
| 322 | 
            -
                ) internal view
         | 
| 323 | 
            -
                {
         | 
| 324 | 
            -
                    VersionPart senderRelease = _info[_nftIdByAddress[msg.sender]].release;
         | 
| 325 | 
            -
             | 
| 326 | 
            -
                    // assume:
         | 
| 327 | 
            -
                    // 1) only address with role can reach this function -> caller is registered registry service
         | 
| 328 | 
            -
                    // 2) locked registry service can not call registry -> no "caller is locked" check is needed
         | 
| 329 | 
            -
                    if(parentType == PROTOCOL()) {
         | 
| 330 | 
            -
                        // STAKING for PROTOCOL, parent release is 0
         | 
| 331 | 
            -
                        if(senderRelease != objectRelease) {
         | 
| 332 | 
            -
                            revert ErrorRegistryReleaseMismatch(objectRelease, parentRelease, senderRelease);
         | 
| 333 | 
            -
                        }
         | 
| 334 | 
            -
                    }
         | 
| 335 | 
            -
                    else if(senderRelease != objectRelease || senderRelease != parentRelease) {
         | 
| 336 | 
            -
                        revert ErrorRegistryReleaseMismatch(objectRelease, parentRelease, senderRelease);
         | 
| 337 | 
            -
                    }
         | 
| 338 | 
            -
                }
         | 
| 339 301 |  | 
| 340 302 | 
             
                /// @dev earliest GIF major version 
         | 
| 341 303 | 
             
                function getInitialRelease() external view returns (VersionPart) {
         | 
| 342 | 
            -
                    return  | 
| 304 | 
            +
                    return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
         | 
| 343 305 | 
             
                }
         | 
| 344 306 |  | 
| 345 307 | 
             
                /// @dev next GIF release version to be released
         | 
| @@ -404,20 +366,13 @@ contract Registry is | |
| 404 366 | 
             
                    return _info[nftId].parentNftId;
         | 
| 405 367 | 
             
                }
         | 
| 406 368 |  | 
| 407 | 
            -
                function isObjectType(address contractAddress, ObjectType expectedObjectType | 
| 369 | 
            +
                function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
         | 
| 408 370 | 
             
                    NftId nftId = _nftIdByAddress[contractAddress];
         | 
| 409 | 
            -
                    return isObjectType(nftId, expectedObjectType | 
| 371 | 
            +
                    return isObjectType(nftId, expectedObjectType);
         | 
| 410 372 | 
             
                }
         | 
| 411 373 |  | 
| 412 | 
            -
                function isObjectType(NftId nftId, ObjectType expectedObjectType | 
| 413 | 
            -
                    return  | 
| 414 | 
            -
                        _info[nftId].objectType == expectedObjectType &&
         | 
| 415 | 
            -
                        _info[nftId].release == release
         | 
| 416 | 
            -
                    );
         | 
| 417 | 
            -
                }
         | 
| 418 | 
            -
             | 
| 419 | 
            -
                function getObjectRelease(NftId nftId) external view returns (VersionPart release)  {
         | 
| 420 | 
            -
                    return _info[nftId].release;
         | 
| 374 | 
            +
                function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
         | 
| 375 | 
            +
                    return _info[nftId].objectType == expectedObjectType;
         | 
| 421 376 | 
             
                }
         | 
| 422 377 |  | 
| 423 378 | 
             
                function getObjectAddress(NftId nftId) external view returns (address) {
         | 
| @@ -428,14 +383,6 @@ contract Registry is | |
| 428 383 | 
             
                    return _info[_nftIdByAddress[object]];
         | 
| 429 384 | 
             
                }
         | 
| 430 385 |  | 
| 431 | 
            -
                function getObjectData(NftId nftId) external view returns (bytes memory data) {
         | 
| 432 | 
            -
                    return _data[nftId];
         | 
| 433 | 
            -
                }
         | 
| 434 | 
            -
             | 
| 435 | 
            -
                function getObjectData(address objectAddress) external view returns (bytes memory data) {
         | 
| 436 | 
            -
                    return _data[_nftIdByAddress[objectAddress]];
         | 
| 437 | 
            -
                }
         | 
| 438 | 
            -
             | 
| 439 386 | 
             
                function isRegistered(NftId nftId) public view returns (bool) {
         | 
| 440 387 | 
             
                    return _info[nftId].objectType.gtz();
         | 
| 441 388 | 
             
                }
         | 
| @@ -494,12 +441,6 @@ contract Registry is | |
| 494 441 | 
             
                    return ownerOf(address(this));
         | 
| 495 442 | 
             
                }
         | 
| 496 443 |  | 
| 497 | 
            -
                // Versionable
         | 
| 498 | 
            -
             | 
| 499 | 
            -
                function getVersion() public pure override returns (Version) {
         | 
| 500 | 
            -
                    return VersionLib.toVersion(GIF_INITIAL_RELEASE().toInt(), 0 , 0);
         | 
| 501 | 
            -
                }
         | 
| 502 | 
            -
             | 
| 503 444 | 
             
                // IERC165
         | 
| 504 445 |  | 
| 505 446 | 
             
                function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
         | 
| @@ -513,49 +454,62 @@ contract Registry is | |
| 513 454 | 
             
                // Internals
         | 
| 514 455 |  | 
| 515 456 | 
             
                /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
         | 
| 516 | 
            -
                function _register(ObjectInfo memory info | 
| 457 | 
            +
                function _register(ObjectInfo memory info)
         | 
| 517 458 | 
             
                    internal
         | 
| 518 459 | 
             
                    returns(NftId nftId)
         | 
| 519 460 | 
             
                {
         | 
| 461 | 
            +
                    ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
         | 
| 462 | 
            +
                    bool isInterceptor = info.isInterceptor;
         | 
| 463 | 
            +
                    address objectAddress = info.objectAddress; // do not care here, can be 0
         | 
| 464 | 
            +
                    address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
         | 
| 465 | 
            +
             | 
| 520 466 | 
             
                    NftId parentNftId = info.parentNftId; // do not care here, can not be 0
         | 
| 521 467 | 
             
                    ObjectInfo memory parentInfo = _info[parentNftId];
         | 
| 468 | 
            +
                    address parentAddress = parentInfo.objectAddress; // can be 0
         | 
| 469 | 
            +
             | 
| 470 | 
            +
                    // parent is contract -> need to check? -> check before minting
         | 
| 471 | 
            +
                    // special case: staking: to protocol possible as well
         | 
| 472 | 
            +
                    // NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
         | 
| 473 | 
            +
                    // special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
         | 
| 474 | 
            +
                    // special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
         | 
| 475 | 
            +
                    // Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
         | 
| 476 | 
            +
                    // But it MUST be registered -> parentType != 0 && parentNftId != 0
         | 
| 477 | 
            +
                    /*if(objectType != STAKE()) {
         | 
| 478 | 
            +
                        if(parentAddress == address(0)) {
         | 
| 479 | 
            +
                            revert ErrorRegistryParentAddressZero();
         | 
| 480 | 
            +
                        }
         | 
| 481 | 
            +
                    }*/
         | 
| 522 482 |  | 
| 523 483 | 
             
                    // global registry is never parent when not on mainnet
         | 
| 524 484 | 
             
                    if(block.chainid != 1) {
         | 
| 525 485 | 
             
                        if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
         | 
| 526 | 
            -
                            revert ErrorRegistryGlobalRegistryAsParent( | 
| 486 | 
            +
                            revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
         | 
| 527 487 | 
             
                        }
         | 
| 528 488 | 
             
                    }
         | 
| 529 489 |  | 
| 530 490 | 
             
                    address interceptorAddress = _getInterceptor(
         | 
| 531 | 
            -
                         | 
| 532 | 
            -
                         | 
| 533 | 
            -
                         | 
| 491 | 
            +
                        isInterceptor, 
         | 
| 492 | 
            +
                        objectType, 
         | 
| 493 | 
            +
                        objectAddress, 
         | 
| 534 494 | 
             
                        parentInfo.isInterceptor, 
         | 
| 535 | 
            -
                         | 
| 536 | 
            -
             | 
| 537 | 
            -
                    uint256 tokenId = CHAIN_NFT.mint(
         | 
| 538 | 
            -
                        initialOwner,
         | 
| 539 | 
            -
                        interceptorAddress,
         | 
| 540 | 
            -
                        EMPTY_URI);
         | 
| 495 | 
            +
                        parentAddress);
         | 
| 541 496 |  | 
| 497 | 
            +
                    uint256 tokenId = CHAIN_NFT.getNextTokenId();
         | 
| 542 498 | 
             
                    nftId = NftIdLib.toNftId(tokenId);
         | 
| 543 499 | 
             
                    info.nftId = nftId;
         | 
| 544 500 |  | 
| 545 501 | 
             
                    _info[nftId] = info;
         | 
| 546 | 
            -
                     | 
| 547 | 
            -
             | 
| 548 | 
            -
                     | 
| 549 | 
            -
                    _setAddressForNftId(nftId, info.objectAddress);
         | 
| 502 | 
            +
                    _setAddressForNftId(nftId, objectAddress);
         | 
| 503 | 
            +
             | 
| 504 | 
            +
                    emit LogRegistryObjectRegistered(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
         | 
| 550 505 |  | 
| 551 | 
            -
                     | 
| 552 | 
            -
             | 
| 553 | 
            -
                         | 
| 554 | 
            -
                         | 
| 555 | 
            -
                         | 
| 556 | 
            -
             | 
| 557 | 
            -
             | 
| 558 | 
            -
                        initialOwner);
         | 
| 506 | 
            +
                    // calls nft receiver(1) and interceptor(2)
         | 
| 507 | 
            +
                    uint256 mintedTokenId = CHAIN_NFT.mint(
         | 
| 508 | 
            +
                        owner,
         | 
| 509 | 
            +
                        interceptorAddress,
         | 
| 510 | 
            +
                        EMPTY_URI);
         | 
| 511 | 
            +
             | 
| 512 | 
            +
                    assert(mintedTokenId == tokenId);        
         | 
| 559 513 | 
             
                }
         | 
| 560 514 |  | 
| 561 515 | 
             
                /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
         | 
| @@ -607,10 +561,10 @@ contract Registry is | |
| 607 561 | 
             
                            nftId: protocolNftId,
         | 
| 608 562 | 
             
                            parentNftId: NftIdLib.zero(),
         | 
| 609 563 | 
             
                            objectType: PROTOCOL(),
         | 
| 610 | 
            -
                            release: VersionPartLib.toVersionPart(0),
         | 
| 611 564 | 
             
                            isInterceptor: false, 
         | 
| 612 | 
            -
                            objectAddress: address(0) | 
| 613 | 
            -
             | 
| 565 | 
            +
                            objectAddress: address(0),
         | 
| 566 | 
            +
                            initialOwner: NFT_LOCK_ADDRESS,
         | 
| 567 | 
            +
                            data: ""}),
         | 
| 614 568 | 
             
                        true);
         | 
| 615 569 | 
             
                }
         | 
| 616 570 |  | 
| @@ -630,9 +584,10 @@ contract Registry is | |
| 630 584 | 
             
                            nftId: GLOBAL_REGISTRY_NFT_ID,
         | 
| 631 585 | 
             
                            parentNftId: PROTOCOL_NFT_ID,
         | 
| 632 586 | 
             
                            objectType: REGISTRY(),
         | 
| 633 | 
            -
                            release: getRelease(),
         | 
| 634 587 | 
             
                            isInterceptor: false,
         | 
| 635 | 
            -
                            objectAddress: GLOBAL_REGISTRY_ADDRESS | 
| 588 | 
            +
                            objectAddress: GLOBAL_REGISTRY_ADDRESS, 
         | 
| 589 | 
            +
                            initialOwner: NFT_LOCK_ADDRESS,
         | 
| 590 | 
            +
                            data: ""}),
         | 
| 636 591 | 
             
                        block.chainid == 1);// update address lookup for global registry only on mainnet
         | 
| 637 592 |  | 
| 638 593 | 
             
                    // if not on mainnet: register this registry with global registry as parent
         | 
| @@ -648,9 +603,10 @@ contract Registry is | |
| 648 603 | 
             
                                nftId: registryNftId,
         | 
| 649 604 | 
             
                                parentNftId: GLOBAL_REGISTRY_NFT_ID,
         | 
| 650 605 | 
             
                                objectType: REGISTRY(),
         | 
| 651 | 
            -
                                release: getRelease(),
         | 
| 652 606 | 
             
                                isInterceptor: false,
         | 
| 653 | 
            -
                                objectAddress: address(this) | 
| 607 | 
            +
                                objectAddress: address(this),
         | 
| 608 | 
            +
                                initialOwner: NFT_LOCK_ADDRESS,
         | 
| 609 | 
            +
                                data: ""}),
         | 
| 654 610 | 
             
                            true);
         | 
| 655 611 | 
             
                    }
         | 
| 656 612 | 
             
                }
         | 
| @@ -674,7 +630,6 @@ contract Registry is | |
| 674 630 | 
             
                    // register the registry info
         | 
| 675 631 | 
             
                    _registerForNft(
         | 
| 676 632 | 
             
                        info,
         | 
| 677 | 
            -
                        NFT_LOCK_ADDRESS, // initial owner of any registry
         | 
| 678 633 | 
             
                        updateAddressLookup); 
         | 
| 679 634 | 
             
                }
         | 
| 680 635 |  | 
| @@ -692,10 +647,10 @@ contract Registry is | |
| 692 647 | 
             
                            nftId: stakingNftId,
         | 
| 693 648 | 
             
                            parentNftId: REGISTRY_NFT_ID,
         | 
| 694 649 | 
             
                            objectType: STAKING(),
         | 
| 695 | 
            -
                            release: VersionPartLib.toVersionPart(3),
         | 
| 696 650 | 
             
                            isInterceptor: false,
         | 
| 697 | 
            -
                            objectAddress: _stakingAddress | 
| 698 | 
            -
             | 
| 651 | 
            +
                            objectAddress: _stakingAddress, 
         | 
| 652 | 
            +
                            initialOwner: stakingOwner,
         | 
| 653 | 
            +
                            data: ""}),
         | 
| 699 654 | 
             
                        true); 
         | 
| 700 655 |  | 
| 701 656 | 
             
                    IStaking(_stakingAddress).initializeTokenHandler();
         | 
| @@ -703,8 +658,7 @@ contract Registry is | |
| 703 658 |  | 
| 704 659 | 
             
                /// @dev Register the provided object info for the specified NFT ID.
         | 
| 705 660 | 
             
                function _registerForNft(
         | 
| 706 | 
            -
                    ObjectInfo memory info,
         | 
| 707 | 
            -
                    address initialOwner,
         | 
| 661 | 
            +
                    ObjectInfo memory info, 
         | 
| 708 662 | 
             
                    bool updateAddressLookup
         | 
| 709 663 | 
             
                )
         | 
| 710 664 | 
             
                    internal
         | 
| @@ -716,7 +670,7 @@ contract Registry is | |
| 716 670 | 
             
                    }
         | 
| 717 671 |  | 
| 718 672 | 
             
                    // calls nft receiver
         | 
| 719 | 
            -
                    CHAIN_NFT.mint(initialOwner, info.nftId.toInt());
         | 
| 673 | 
            +
                    CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
         | 
| 720 674 | 
             
                }
         | 
| 721 675 |  | 
| 722 676 | 
             
                function _setAddressForNftId(NftId nftId, address objectAddress)
         | 
| @@ -7,11 +7,12 @@ import {IService} from "../shared/IService.sol"; | |
| 7 7 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 8 8 |  | 
| 9 9 | 
             
            import {AccessAdmin} from "../authorization/AccessAdmin.sol";
         | 
| 10 | 
            +
            import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
         | 
| 10 11 | 
             
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 11 12 | 
             
            import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
         | 
| 12 13 | 
             
            import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
         | 
| 13 | 
            -
            import {GIF_INITIAL_RELEASE} from "../registry/Registry.sol";
         | 
| 14 14 | 
             
            import {Str} from "../type/String.sol";
         | 
| 15 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 15 16 |  | 
| 16 17 | 
             
            /*
         | 
| 17 18 | 
             
                1) GIF_MANAGER_ROLE
         | 
| @@ -51,6 +52,7 @@ contract RegistryAdmin is | |
| 51 52 | 
             
                // completeSetup
         | 
| 52 53 | 
             
                error ErrorRegistryAdminNotRegistry(address registry);
         | 
| 53 54 |  | 
| 55 | 
            +
                address internal _registry;
         | 
| 54 56 | 
             
                address private _releaseRegistry;
         | 
| 55 57 | 
             
                address private _tokenRegistry;
         | 
| 56 58 | 
             
                address private _staking;
         | 
| @@ -60,34 +62,43 @@ contract RegistryAdmin is | |
| 60 62 | 
             
                constructor() {
         | 
| 61 63 | 
             
                    initialize(
         | 
| 62 64 | 
             
                        address(new AccessManagerCloneable()),
         | 
| 63 | 
            -
                        "RegistryAdmin" | 
| 64 | 
            -
                        GIF_INITIAL_RELEASE());
         | 
| 65 | 
            +
                        "RegistryAdmin");
         | 
| 65 66 | 
             
                }
         | 
| 66 67 |  | 
| 67 68 |  | 
| 68 69 | 
             
                function completeSetup(
         | 
| 70 | 
            +
                    address registry,
         | 
| 69 71 | 
             
                    address authorization,
         | 
| 72 | 
            +
                    VersionPart release,
         | 
| 70 73 | 
             
                    address gifAdmin, 
         | 
| 71 74 | 
             
                    address gifManager
         | 
| 72 75 | 
             
                )
         | 
| 73 76 | 
             
                    public
         | 
| 74 77 | 
             
                    virtual
         | 
| 78 | 
            +
                    reinitializer(type(uint8).max)
         | 
| 75 79 | 
             
                {
         | 
| 76 80 | 
             
                    // checks
         | 
| 77 | 
            -
                     | 
| 81 | 
            +
                    AccessAdminLib.checkRegistry(registry);
         | 
| 78 82 |  | 
| 79 | 
            -
                     | 
| 83 | 
            +
                    AccessManagerCloneable(
         | 
| 84 | 
            +
                        authority()).completeSetup(
         | 
| 85 | 
            +
                            registry, 
         | 
| 86 | 
            +
                            release); 
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                    _checkAuthorization(authorization, REGISTRY(), release, false, true);
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    _registry = registry;
         | 
| 80 91 | 
             
                    _authorization = IAuthorization(authorization);
         | 
| 81 92 |  | 
| 82 | 
            -
                    IRegistry  | 
| 83 | 
            -
                    _releaseRegistry =  | 
| 84 | 
            -
                    _tokenRegistry =  | 
| 85 | 
            -
                    _staking =  | 
| 93 | 
            +
                    IRegistry registryContract = IRegistry(registry);
         | 
| 94 | 
            +
                    _releaseRegistry = registryContract.getReleaseRegistryAddress();
         | 
| 95 | 
            +
                    _tokenRegistry = registryContract.getTokenRegistryAddress();
         | 
| 96 | 
            +
                    _staking = registryContract.getStakingAddress();
         | 
| 86 97 | 
             
                    _stakingTargetHandler = address(IStaking(_staking).getTargetHandler());
         | 
| 87 98 | 
             
                    _stakingStore = address(IStaking(_staking).getStakingStore());
         | 
| 88 99 |  | 
| 89 100 | 
             
                    // link nft ownability to registry
         | 
| 90 | 
            -
                    _linkToNftOwnable( | 
| 101 | 
            +
                    _linkToNftOwnable(_registry);
         | 
| 91 102 |  | 
| 92 103 | 
             
                    _createRoles(_authorization);
         | 
| 93 104 |  | 
| @@ -132,7 +143,7 @@ contract RegistryAdmin is | |
| 132 143 | 
             
                    internal
         | 
| 133 144 | 
             
                {
         | 
| 134 145 | 
             
                    // create unchecked registry targets
         | 
| 135 | 
            -
                    _createTarget( | 
| 146 | 
            +
                    _createTarget(_registry, registryTargetName, TargetType.Core, false);
         | 
| 136 147 | 
             
                    _createTarget(address(this), REGISTRY_ADMIN_TARGET_NAME, TargetType.Core, false);
         | 
| 137 148 | 
             
                    _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, TargetType.Core, false);
         | 
| 138 149 | 
             
                    _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, TargetType.Core, false);
         | 
| @@ -12,7 +12,6 @@ import {PUBLIC_ROLE} from "../type/RoleId.sol"; | |
| 12 12 | 
             
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 13 13 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 14 14 | 
             
            import {RoleIdLib, ADMIN_ROLE, GIF_ADMIN_ROLE, GIF_MANAGER_ROLE} from "../type/RoleId.sol";
         | 
| 15 | 
            -
            import {GIF_INITIAL_RELEASE} from "../registry/Registry.sol";
         | 
| 16 15 | 
             
            import {StakingStore} from "../staking/StakingStore.sol";
         | 
| 17 16 | 
             
            import {TargetHandler} from "../staking/TargetHandler.sol";
         | 
| 18 17 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| @@ -50,7 +49,7 @@ contract RegistryAuthorization | |
| 50 49 | 
             
                      Authorization(
         | 
| 51 50 | 
             
                           REGISTRY_TARGET_NAME, 
         | 
| 52 51 | 
             
                           REGISTRY(), 
         | 
| 53 | 
            -
                            | 
| 52 | 
            +
                           3, 
         | 
| 54 53 | 
             
                           commitHash, 
         | 
| 55 54 | 
             
                           TargetType.Core,
         | 
| 56 55 | 
             
                           false) // includeTokenHandler
         | 
| @@ -101,7 +100,7 @@ contract RegistryAuthorization | |
| 101 100 | 
             
                           AccessAdminLib.roleInfo(
         | 
| 102 101 | 
             
                                ADMIN_ROLE(),
         | 
| 103 102 | 
             
                                TargetType.Custom, // custom is only type that allows role removal
         | 
| 104 | 
            -
                                 | 
| 103 | 
            +
                                2, // TODO decide on max member count
         | 
| 105 104 | 
             
                                GIF_ADMIN_ROLE_NAME));
         | 
| 106 105 |  | 
| 107 106 | 
             
                      // gif manager role
         | 
| @@ -110,7 +109,7 @@ contract RegistryAuthorization | |
| 110 109 | 
             
                           AccessAdminLib.roleInfo(
         | 
| 111 110 | 
             
                                ADMIN_ROLE(),
         | 
| 112 111 | 
             
                                TargetType.Custom, // custom is only type that allows role removal
         | 
| 113 | 
            -
                                 | 
| 112 | 
            +
                                1, // TODO decide on max member count
         | 
| 114 113 | 
             
                                GIF_MANAGER_ROLE_NAME));
         | 
| 115 114 |  | 
| 116 115 | 
             
                 }
         |