@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bbb7ced-843
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 +10 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -143
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +292 -1428
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +393 -194
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +392 -2436
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +630 -351
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +578 -321
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -91
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- 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/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -290
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -235
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -302
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -220
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +438 -229
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +134 -142
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- 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 +279 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +366 -219
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +92 -0
- 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 +512 -36
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1834 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +538 -281
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +990 -233
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +144 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -96
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1492 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +410 -367
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +199 -192
- 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/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1126 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +271 -133
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +240 -221
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -31
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
- 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 +84 -159
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
- 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 +189 -150
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -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/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +22 -25
- package/contracts/instance/IInstance.sol +75 -48
- package/contracts/instance/IInstanceService.sol +77 -20
- package/contracts/instance/Instance.sol +186 -185
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +160 -83
- package/contracts/instance/InstanceService.sol +330 -236
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +269 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -37
- package/contracts/instance/module/IAccess.sol +19 -21
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +56 -23
- package/contracts/registry/IRegistryService.sol +45 -34
- package/contracts/registry/IServiceAuthorization.sol +28 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +300 -120
- package/contracts/registry/RegistryAdmin.sol +331 -0
- package/contracts/registry/RegistryService.sol +117 -171
- package/contracts/registry/RegistryServiceManager.sol +22 -31
- package/contracts/registry/ReleaseManager.sol +561 -206
- package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
- package/contracts/registry/TokenRegistry.sol +263 -58
- package/contracts/shared/AccessAdmin.sol +696 -0
- package/contracts/shared/AccessManagerCustom.sol +741 -0
- package/contracts/shared/AccessManagerExtended.sol +481 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +617 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +15 -13
- package/contracts/shared/IAccessAdmin.sol +146 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +14 -5
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +59 -86
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +131 -26
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +57 -32
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/type/ObjectType.sol +241 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +201 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +34 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +5 -5
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- 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/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -168
- package/contracts/components/Distribution.sol +0 -154
- package/contracts/components/IBaseComponent.sol +0 -35
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -66
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -258
- package/contracts/components/Product.sol +0 -295
- 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
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -25
- package/contracts/instance/InstanceAccessManager.sol +0 -303
- package/contracts/instance/InstanceBase.sol +0 -39
- package/contracts/instance/base/ComponentServiceBase.sol +0 -76
- package/contracts/instance/base/IInstanceBase.sol +0 -21
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -294
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -120
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -44
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -94
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -539
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -145
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -213
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -210
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -152
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,220 +1,421 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
5
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
6
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
4
8
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
5
10
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib,
|
9
|
-
import {VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
|
+
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
17
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
18
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
11
19
|
|
12
20
|
import {IService} from "../shared/IService.sol";
|
21
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
22
|
+
import {ILifecycle} from "../shared/ILifecycle.sol";
|
23
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
24
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
25
|
|
14
26
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {
|
27
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
16
28
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
29
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
30
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
31
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
32
|
+
import {Registry} from "./Registry.sol";
|
33
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
34
|
|
19
35
|
|
20
|
-
contract ReleaseManager is
|
36
|
+
contract ReleaseManager is
|
37
|
+
AccessManaged,
|
38
|
+
ILifecycle,
|
39
|
+
IRegistryLinked
|
21
40
|
{
|
22
41
|
using ObjectTypeLib for ObjectType;
|
23
42
|
|
24
|
-
|
25
|
-
event LogReleaseActivation(VersionPart version);
|
43
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
26
44
|
|
27
|
-
|
28
|
-
|
29
|
-
error UnexpectedServiceAuthority(address expected, address found);
|
45
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
46
|
+
event LogReleaseActivation(VersionPart version);
|
30
47
|
|
31
|
-
//
|
32
|
-
error
|
48
|
+
// constructor
|
49
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
33
50
|
|
34
|
-
//
|
35
|
-
|
36
|
-
//error ReleaseRegistrationNotFinished();
|
51
|
+
// createNextRelease
|
52
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
37
53
|
|
38
|
-
//
|
39
|
-
error
|
40
|
-
error
|
41
|
-
error
|
42
|
-
error
|
54
|
+
// prepareRelease
|
55
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
56
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
57
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
|
58
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
43
59
|
|
44
|
-
//
|
45
|
-
error
|
46
|
-
error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
|
47
|
-
|
48
|
-
// _verifyAndStoreConfig
|
49
|
-
error ConfigMissing();
|
50
|
-
error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
|
51
|
-
error ConfigSelectorZero(uint configArrayIndex);
|
52
|
-
error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
|
60
|
+
// register staking
|
61
|
+
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
53
62
|
|
63
|
+
// registerService
|
64
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
65
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerNotService(IService service);
|
67
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
54
68
|
|
55
|
-
|
56
|
-
|
69
|
+
// activateNextRelease
|
70
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
71
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
72
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
73
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
57
74
|
|
58
|
-
|
59
|
-
VersionPart
|
75
|
+
// disableRelease
|
76
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
77
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
60
78
|
|
61
|
-
|
79
|
+
// _verifyService
|
80
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
81
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
62
82
|
|
63
|
-
|
83
|
+
// _verifyServiceInfo
|
84
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
85
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
86
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
87
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
88
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
89
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
90
|
+
|
91
|
+
// _verifyReleaseAuthorizations
|
92
|
+
error ErrorReleaseManagerReleaseEmpty();
|
93
|
+
error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
|
94
|
+
|
95
|
+
// TODO get this right ...
|
96
|
+
|
97
|
+
// struct ReleaseInfo {
|
98
|
+
// VersionPart version;
|
99
|
+
// address[] addresses;
|
100
|
+
// string[] names;
|
101
|
+
// RoleId[][] serviceRoles;
|
102
|
+
// string[][] serviceRoleNames;
|
103
|
+
// RoleId[][] functionRoles;
|
104
|
+
// string[][] functionRoleNames;
|
105
|
+
// bytes4[][][] selectors;
|
106
|
+
// ObjectType[] domains;
|
107
|
+
// Timestamp activatedAt;
|
108
|
+
// Timestamp disabledAt;
|
109
|
+
// }
|
110
|
+
|
111
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
112
|
+
|
113
|
+
RegistryAdmin public immutable _admin;
|
114
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
115
|
+
Registry public immutable _registry;
|
116
|
+
IRegisterable private _staking;
|
117
|
+
address private _stakingOwner;
|
118
|
+
|
119
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
120
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
121
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
122
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
123
|
+
|
124
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
125
|
+
|
126
|
+
VersionPart immutable internal _initial;// first active version
|
127
|
+
VersionPart internal _latest; // latest active version
|
128
|
+
VersionPart internal _next; // version to create and activate
|
129
|
+
StateId internal _state; // current state of release manager
|
130
|
+
|
131
|
+
uint256 internal _awaitingRegistration; // "services left to register" counter
|
132
|
+
|
133
|
+
// deployer of this contract must be gif admin
|
134
|
+
constructor(Registry registry)
|
135
|
+
AccessManaged(msg.sender)
|
136
|
+
{
|
137
|
+
// TODO move this part to RegistryLinked constructor
|
138
|
+
if(!_isRegistry(address(registry))) {
|
139
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
140
|
+
}
|
64
141
|
|
65
|
-
|
142
|
+
_registry = registry;
|
143
|
+
setAuthority(_registry.getAuthority());
|
144
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
66
145
|
|
67
|
-
|
146
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
147
|
+
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
148
|
+
_state = getInitialState(RELEASE());
|
149
|
+
|
150
|
+
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
151
|
+
masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
|
152
|
+
//masterReleaseAccessManager.disable();
|
153
|
+
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
154
|
+
}
|
68
155
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
156
|
+
/// @dev skips previous release if was not activated
|
157
|
+
/// sets release manager into state SCHEDULED
|
158
|
+
function createNextRelease()
|
159
|
+
external
|
160
|
+
restricted() // GIF_ADMIN_ROLE
|
161
|
+
returns(VersionPart)
|
73
162
|
{
|
74
|
-
|
75
|
-
|
76
|
-
|
163
|
+
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
164
|
+
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
165
|
+
}
|
77
166
|
|
78
|
-
|
167
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
168
|
+
_awaitingRegistration = 0;
|
169
|
+
_state = SCHEDULED();
|
79
170
|
|
80
|
-
|
171
|
+
return _next;
|
81
172
|
}
|
82
173
|
|
83
|
-
// TODO
|
84
|
-
|
85
|
-
|
174
|
+
// TODO order of events
|
175
|
+
function prepareNextRelease(
|
176
|
+
IServiceAuthorization serviceAuthorization,
|
177
|
+
// TODO remove all other parameters below (except salt)
|
178
|
+
address[] memory addresses,
|
179
|
+
string[] memory names,
|
180
|
+
RoleId[][] memory serviceRoles,
|
181
|
+
string[][] memory serviceRoleNames,
|
182
|
+
RoleId[][] memory functionRoles,
|
183
|
+
string[][] memory functionRoleNames,
|
184
|
+
bytes4[][][] memory selectors,
|
185
|
+
bytes32 salt
|
186
|
+
)
|
86
187
|
external
|
87
|
-
restricted //
|
88
|
-
returns(
|
188
|
+
restricted() // GIF_MANAGER_ROLE
|
189
|
+
returns(
|
190
|
+
address authority,
|
191
|
+
VersionPart version,
|
192
|
+
bytes32 releaseSalt
|
193
|
+
)
|
89
194
|
{
|
90
|
-
|
91
|
-
|
195
|
+
// verify release manager is in proper state to start deploying a next release
|
196
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
197
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
92
198
|
}
|
93
|
-
|
94
|
-
|
95
|
-
if(
|
96
|
-
revert
|
97
|
-
authority(),
|
98
|
-
serviceAuthority);
|
199
|
+
|
200
|
+
// verify prepareNextRelease is only called once per release
|
201
|
+
if(_awaitingRegistration > 0) {
|
202
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
99
203
|
}
|
100
204
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
205
|
+
// verify authorizaion contract release matches with expected version
|
206
|
+
if (serviceAuthorization.getRelease() != _next) {
|
207
|
+
revert ErrorReleaseManagerVersionMismatch(_next, serviceAuthorization.getRelease());
|
208
|
+
}
|
105
209
|
|
106
|
-
|
107
|
-
|
108
|
-
|
210
|
+
// sanity check to ensure service domain list is not empty
|
211
|
+
if (serviceAuthorization.getServiceDomains().length == 0) {
|
212
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
213
|
+
}
|
109
214
|
|
110
|
-
|
215
|
+
// store release specific service authorization
|
216
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
111
217
|
|
112
|
-
|
113
|
-
|
114
|
-
nftId = _registry.registerService(info, version, domain);
|
218
|
+
version = getNextVersion();
|
115
219
|
|
116
|
-
//
|
117
|
-
|
220
|
+
// ensures unique salt
|
221
|
+
releaseSalt = keccak256(
|
222
|
+
bytes.concat(
|
223
|
+
bytes32(version.toInt()),
|
224
|
+
salt));
|
225
|
+
|
226
|
+
// TODO cleanup
|
227
|
+
// releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
|
228
|
+
// AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
229
|
+
// releaseAccessManager.initialize(address(this), version);
|
230
|
+
|
231
|
+
authority = _admin.authority();
|
232
|
+
|
233
|
+
// TODO refactor/remove old service authz
|
234
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
235
|
+
|
236
|
+
_releaseInfo[version].version = version;
|
237
|
+
_releaseInfo[version].salt = releaseSalt;
|
238
|
+
_releaseInfo[version].addresses = addresses;
|
239
|
+
_releaseInfo[version].names = names;
|
240
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
241
|
+
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
242
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
243
|
+
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
244
|
+
_releaseInfo[version].selectors = selectors;
|
118
245
|
|
119
|
-
|
246
|
+
|
247
|
+
_releaseAccessManager[version] = authority;
|
248
|
+
_awaitingRegistration = addresses.length;
|
249
|
+
_state = DEPLOYING();
|
250
|
+
|
251
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
120
252
|
}
|
121
253
|
|
122
|
-
|
123
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
254
|
+
|
124
255
|
function registerService(IService service)
|
125
256
|
external
|
126
257
|
restricted // GIF_MANAGER_ROLE
|
127
258
|
returns(NftId nftId)
|
128
259
|
{
|
129
|
-
if(!
|
130
|
-
revert
|
260
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
261
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
131
262
|
}
|
132
263
|
|
133
264
|
(
|
134
|
-
IRegistry.ObjectInfo memory info,
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
VersionPart version = getNextVersion();
|
139
|
-
ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
140
|
-
_verifyServiceInfo(info, version, domain);
|
141
|
-
|
142
|
-
// setup and grant unique role if service does registrations
|
143
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
144
|
-
bytes4[] memory selector = new bytes4[](1);
|
145
|
-
selector[0] = _selector[version][domain];
|
146
|
-
if(selector[0] != 0) {
|
147
|
-
_accessManager.setAndGrantUniqueRole(
|
148
|
-
address(service),
|
149
|
-
registryService,
|
150
|
-
selector);
|
151
|
-
}
|
152
|
-
|
153
|
-
_awaitingRegistration--;
|
154
|
-
|
155
|
-
// activate release
|
156
|
-
if(_awaitingRegistration == 0) {
|
157
|
-
_latest = version;
|
158
|
-
_active[registryService] = true;
|
265
|
+
IRegistry.ObjectInfo memory info,
|
266
|
+
ObjectType domain,
|
267
|
+
VersionPart version
|
268
|
+
) = _verifyService(service);
|
159
269
|
|
160
|
-
|
270
|
+
// redundant with state var
|
271
|
+
if (_awaitingRegistration == 0) {
|
272
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
161
273
|
}
|
162
274
|
|
275
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
276
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
277
|
+
// TODO temp, while typescript addresses computation is not implemented
|
278
|
+
/*if(address(service) != serviceAddress) {
|
279
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
280
|
+
}*/
|
281
|
+
|
282
|
+
_setServiceAuthorizations(
|
283
|
+
_releaseAccessManager[version],
|
284
|
+
// TODO temp, while typescript addresses computation is not implemented
|
285
|
+
address(service),//serviceAddress,
|
286
|
+
_releaseInfo[version].names[serviceIdx],
|
287
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
288
|
+
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
289
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
290
|
+
_releaseInfo[version].functionRoleNames[serviceIdx],
|
291
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
292
|
+
|
293
|
+
_awaitingRegistration = serviceIdx;
|
294
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
295
|
+
_state = DEPLOYING();
|
296
|
+
|
297
|
+
// checked in registry
|
298
|
+
_releaseInfo[version].domains.push(domain);
|
299
|
+
|
300
|
+
// register service with registry
|
163
301
|
nftId = _registry.registerService(info, version, domain);
|
302
|
+
service.linkToRegisteredNftId();
|
164
303
|
|
165
|
-
//
|
166
|
-
|
304
|
+
// setup service authorization
|
305
|
+
_admin.authorizeService(
|
306
|
+
_serviceAuthorization[version],
|
307
|
+
service);
|
308
|
+
|
309
|
+
// TODO consider to extend this to REGISTRY
|
310
|
+
// special roles for registry/staking/pool service
|
311
|
+
if (domain == STAKING()
|
312
|
+
|| domain == POOL()
|
313
|
+
) {
|
314
|
+
_admin.grantServiceRoleForAllVersions(service, domain);
|
315
|
+
}
|
167
316
|
}
|
168
317
|
|
169
|
-
|
318
|
+
|
319
|
+
function activateNextRelease()
|
170
320
|
external
|
171
321
|
restricted // GIF_ADMIN_ROLE
|
172
322
|
{
|
173
|
-
|
323
|
+
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
324
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
325
|
+
}
|
326
|
+
|
327
|
+
VersionPart version = _next;
|
174
328
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
175
329
|
|
176
|
-
// release
|
330
|
+
// release exists, registry service is a MUST
|
331
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
177
332
|
if(service == address(0)) {
|
178
|
-
revert
|
333
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
179
334
|
}
|
180
335
|
|
181
336
|
// release fully deployed
|
182
337
|
if(_awaitingRegistration > 0) {
|
183
|
-
revert
|
338
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
184
339
|
}
|
185
340
|
|
186
|
-
//
|
341
|
+
// release is not activated
|
342
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
343
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
344
|
+
}
|
187
345
|
|
188
346
|
_latest = version;
|
189
|
-
|
347
|
+
_state = ACTIVE();
|
190
348
|
|
191
|
-
|
192
|
-
|
349
|
+
_releaseVersionByAddress[service] = version;
|
350
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
193
351
|
|
194
|
-
|
352
|
+
emit LogReleaseActivation(version);
|
353
|
+
}
|
195
354
|
|
196
|
-
|
355
|
+
// release becomes disabled after delay expiration (can be reenabled before that)
|
356
|
+
function disableRelease(VersionPart version, Seconds disableDelay)
|
357
|
+
external
|
358
|
+
restricted // GIF_ADMIN_ROLE
|
197
359
|
{
|
198
|
-
|
199
|
-
|
360
|
+
// release was activated
|
361
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
362
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
363
|
+
}
|
200
364
|
|
201
|
-
|
365
|
+
// release not disabled already
|
366
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
367
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
368
|
+
}
|
369
|
+
|
370
|
+
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
371
|
+
|
372
|
+
// TODO come up with a substitute
|
373
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
374
|
+
|
375
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
376
|
+
}
|
377
|
+
|
378
|
+
function enableRelease(VersionPart version)
|
379
|
+
external
|
380
|
+
restricted // GIF_ADMIN_ROLE
|
202
381
|
{
|
203
|
-
|
382
|
+
// release was disabled
|
383
|
+
//if(_releaseInfo[version].disabledAt.eqz()) {
|
384
|
+
// revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
|
385
|
+
//}
|
386
|
+
|
387
|
+
// reverts if disable delay expired
|
388
|
+
// TODO come up with a substitute
|
389
|
+
// _releaseAccessManager[version].enable();
|
390
|
+
|
391
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
204
392
|
}
|
205
393
|
|
206
|
-
|
207
|
-
|
208
|
-
|
394
|
+
//--- view functions ----------------------------------------------------//
|
395
|
+
|
396
|
+
function predictDeterministicAddress(
|
397
|
+
address implementation,
|
398
|
+
bytes32 salt,
|
399
|
+
address deployer
|
400
|
+
) external pure returns (address predicted) {
|
401
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
209
402
|
}
|
210
403
|
|
211
|
-
function
|
212
|
-
|
213
|
-
|
404
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
405
|
+
VersionPart version = _releaseVersionByAddress[service];
|
406
|
+
return isActiveRelease(version);
|
407
|
+
}
|
214
408
|
|
215
|
-
|
216
|
-
|
217
|
-
|
409
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
410
|
+
return _releaseInfo[version].activatedAt.gtz();
|
411
|
+
}
|
412
|
+
|
413
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
414
|
+
return _releaseInfo[version];
|
415
|
+
}
|
416
|
+
|
417
|
+
function getNextVersion() public view returns(VersionPart) {
|
418
|
+
return _next;
|
218
419
|
}
|
219
420
|
|
220
421
|
function getLatestVersion() external view returns(VersionPart) {
|
@@ -225,118 +426,272 @@ contract ReleaseManager is AccessManaged
|
|
225
426
|
return _initial;
|
226
427
|
}
|
227
428
|
|
429
|
+
function getState() external view returns (StateId stateId) {
|
430
|
+
return _state;
|
431
|
+
}
|
432
|
+
|
433
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
434
|
+
return _awaitingRegistration;
|
435
|
+
}
|
436
|
+
|
437
|
+
// TODO cleanup
|
438
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
439
|
+
// return _releaseAccessManager[version];
|
440
|
+
}
|
441
|
+
|
442
|
+
// TODO tokenr registry knows nothing about adfmin, only registry
|
443
|
+
function getRegistryAdmin() external view returns (address) {
|
444
|
+
return address(_admin);
|
445
|
+
}
|
446
|
+
|
447
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
448
|
+
|
449
|
+
function getRegistry() external view returns (IRegistry) {
|
450
|
+
return _registry;
|
451
|
+
}
|
452
|
+
|
453
|
+
//--- ILifecycle -----------------------------------------------------------//
|
454
|
+
|
455
|
+
function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
|
456
|
+
|
457
|
+
function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
|
458
|
+
if (objectType == RELEASE()) {
|
459
|
+
stateId = INITIAL();
|
460
|
+
}
|
461
|
+
}
|
462
|
+
|
463
|
+
function isValidTransition(
|
464
|
+
ObjectType objectType,
|
465
|
+
StateId fromId,
|
466
|
+
StateId toId
|
467
|
+
)
|
468
|
+
public
|
469
|
+
pure
|
470
|
+
returns (bool isValid)
|
471
|
+
{
|
472
|
+
if (objectType != RELEASE()) { return false; }
|
473
|
+
|
474
|
+
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
475
|
+
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
476
|
+
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
477
|
+
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
478
|
+
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
479
|
+
// TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
|
480
|
+
|
481
|
+
return false;
|
482
|
+
}
|
483
|
+
|
228
484
|
//--- private functions ----------------------------------------------------//
|
229
485
|
|
230
|
-
function
|
486
|
+
function _verifyService(IService service)
|
487
|
+
internal
|
488
|
+
view
|
489
|
+
returns(
|
490
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
491
|
+
ObjectType serviceDomain,
|
492
|
+
VersionPart serviceVersion
|
493
|
+
)
|
494
|
+
{
|
495
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
496
|
+
revert ErrorReleaseManagerNotService(service);
|
497
|
+
}
|
498
|
+
|
499
|
+
address owner = msg.sender;
|
500
|
+
address serviceAuthority = service.authority();
|
501
|
+
serviceVersion = service.getVersion().toMajorPart();
|
502
|
+
serviceDomain = service.getDomain();// checked in registry
|
503
|
+
serviceInfo = service.getInitialInfo();
|
504
|
+
|
505
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
506
|
+
|
507
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
508
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
509
|
+
|
510
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
511
|
+
if(serviceAuthority != releaseAuthority) {
|
512
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
513
|
+
service,
|
514
|
+
serviceAuthority,
|
515
|
+
releaseAuthority);
|
516
|
+
}
|
517
|
+
|
518
|
+
if(serviceVersion != releaseVersion) {
|
519
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
520
|
+
service,
|
521
|
+
serviceVersion,
|
522
|
+
releaseVersion);
|
523
|
+
}
|
524
|
+
}
|
525
|
+
|
526
|
+
|
527
|
+
function _verifyServiceInfo(
|
231
528
|
IService service,
|
232
|
-
|
529
|
+
IRegistry.ObjectInfo memory info,
|
233
530
|
address expectedOwner // assume always valid, can not be 0
|
234
531
|
)
|
235
532
|
internal
|
236
533
|
view
|
237
|
-
returns(
|
238
|
-
IRegistry.ObjectInfo memory info,
|
239
|
-
bytes memory data
|
240
|
-
)
|
241
534
|
{
|
242
|
-
(info
|
243
|
-
|
244
|
-
|
535
|
+
if(info.objectAddress != address(service)) {
|
536
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
537
|
+
}
|
245
538
|
|
246
|
-
if(info.
|
247
|
-
revert
|
539
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
540
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
541
|
+
}
|
542
|
+
|
543
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
544
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
248
545
|
}
|
249
546
|
|
250
547
|
address owner = info.initialOwner;
|
251
548
|
|
252
549
|
if(owner != expectedOwner) { // registerable owner protection
|
253
|
-
revert
|
550
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
254
551
|
}
|
255
552
|
|
256
553
|
if(owner == address(service)) {
|
257
|
-
revert
|
554
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
258
555
|
}
|
259
|
-
|
260
|
-
/*if(owner == address(0)) { // never 0
|
261
|
-
revert();// RegisterableOwnerIsZero();
|
262
|
-
}*/
|
263
556
|
|
264
557
|
if(_registry.isRegistered(owner)) {
|
265
|
-
revert
|
558
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
266
559
|
}
|
267
|
-
|
268
|
-
/*NftId parentNftId = info.parentNftId;
|
269
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
270
|
-
|
271
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
272
|
-
revert InvalidParent(parentNftId);
|
273
|
-
}*/
|
274
|
-
|
275
|
-
return(info, data);
|
276
560
|
}
|
277
561
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
562
|
+
|
563
|
+
function _verifyReleaseAuthorizations(
|
564
|
+
address[] memory serviceAddress,
|
565
|
+
RoleId[][] memory serviceRoles,
|
566
|
+
RoleId[][] memory functionRoles,
|
567
|
+
bytes4[][][] memory selectors
|
282
568
|
)
|
283
569
|
internal
|
284
|
-
|
285
|
-
returns(ObjectType)
|
570
|
+
pure
|
286
571
|
{
|
287
|
-
(
|
288
|
-
|
289
|
-
VersionPart version
|
290
|
-
) = abi.decode(info.data, (ObjectType, VersionPart));
|
291
|
-
|
292
|
-
if(version != expectedVersion) {
|
293
|
-
revert UnexpectedServiceVersion(expectedVersion, version);
|
572
|
+
if(serviceAddress.length == 0) {
|
573
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
294
574
|
}
|
295
575
|
|
296
|
-
|
297
|
-
|
298
|
-
|
576
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
577
|
+
{
|
578
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
579
|
+
{
|
580
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
581
|
+
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
582
|
+
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
583
|
+
}
|
299
584
|
}
|
300
585
|
}
|
301
586
|
|
302
|
-
|
587
|
+
// TODO no duplicate service "domain" role per release
|
588
|
+
// TODO no duplicate service roles per service
|
589
|
+
// TODO no duplicate service function roles per service
|
590
|
+
// TODO no duplicate service function selectors per service
|
303
591
|
}
|
304
592
|
|
305
|
-
// TODO
|
306
|
-
function
|
593
|
+
// TODO cleanup
|
594
|
+
function _setServiceAuthorizations(
|
595
|
+
// AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
596
|
+
address authority,
|
597
|
+
address serviceAddress,
|
598
|
+
string memory serviceName,
|
599
|
+
RoleId[] memory serviceRoles,
|
600
|
+
string[] memory serviceRoleNames,
|
601
|
+
RoleId[] memory functionRoles,
|
602
|
+
string[] memory functionRoleNames,
|
603
|
+
bytes4[][] memory selectors
|
604
|
+
)
|
307
605
|
internal
|
308
606
|
{
|
309
|
-
|
310
|
-
|
607
|
+
// accessManager.createTarget(serviceAddress, serviceName);
|
608
|
+
|
609
|
+
// for(uint idx = 0; idx < functionRoles.length; idx++)
|
610
|
+
// {
|
611
|
+
// uint64 roleInt = functionRoles[idx].toInt();
|
311
612
|
|
312
|
-
if(
|
313
|
-
|
613
|
+
// if(!accessManager.isRoleExists(roleInt)) {
|
614
|
+
// accessManager.createRole(roleInt, functionRoleNames[idx]);
|
615
|
+
// }
|
616
|
+
|
617
|
+
// accessManager.setTargetFunctionRole(
|
618
|
+
// serviceAddress,
|
619
|
+
// selectors[idx],
|
620
|
+
// functionRoles[idx].toInt());
|
621
|
+
// }
|
622
|
+
|
623
|
+
// for(uint idx = 0; idx < serviceRoles.length; idx++)
|
624
|
+
// {
|
625
|
+
// uint64 roleInt = serviceRoles[idx].toInt();
|
626
|
+
|
627
|
+
// if(!accessManager.isRoleExists(roleInt)) {
|
628
|
+
// accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
629
|
+
// }
|
630
|
+
|
631
|
+
// accessManager.grantRole(
|
632
|
+
// serviceRoles[idx].toInt(),
|
633
|
+
// serviceAddress,
|
634
|
+
// 0);
|
635
|
+
// }
|
636
|
+
}
|
637
|
+
|
638
|
+
// TODO cleanup
|
639
|
+
// /// @dev returns the service target name for the provided domain and version.
|
640
|
+
// /// eg object type REGISTRY() -> "RegistryServiceRole"
|
641
|
+
// function _getServiceTargetName(ObjectType domain, VersionPart version)
|
642
|
+
// internal
|
643
|
+
// pure
|
644
|
+
// returns (string memory name)
|
645
|
+
// {
|
646
|
+
// uint256 versionInt = version.toInt();
|
647
|
+
// string memory targetName = "Service_v0";
|
648
|
+
|
649
|
+
// if (versionInt >= 10) {
|
650
|
+
// targetName = "Service_v";
|
651
|
+
// }
|
652
|
+
|
653
|
+
// return string(
|
654
|
+
// abi.encodePacked(
|
655
|
+
// ObjectTypeLib.toName(domain),
|
656
|
+
// targetName,
|
657
|
+
// ObjectTypeLib.toString(versionInt)));
|
658
|
+
// }
|
659
|
+
|
660
|
+
// /// @dev returns the service role name for the provided domain.
|
661
|
+
// /// eg object type REGISTRY() -> "RegistryServiceRole_v03"
|
662
|
+
// function _getServiceRoleName(ObjectType domain, VersionPart version)
|
663
|
+
// internal
|
664
|
+
// pure
|
665
|
+
// returns (string memory name)
|
666
|
+
// {
|
667
|
+
// uint256 versionInt = version.toInt();
|
668
|
+
// string memory serviceRole = "ServiceRole_v0";
|
669
|
+
|
670
|
+
// if (versionInt >= 10) {
|
671
|
+
// serviceRole = "ServiceRole_v";
|
672
|
+
// }
|
673
|
+
|
674
|
+
// return string(
|
675
|
+
// abi.encodePacked(
|
676
|
+
// ObjectTypeLib.toName(domain),
|
677
|
+
// serviceRole,
|
678
|
+
// ObjectTypeLib.toString(versionInt)));
|
679
|
+
// }
|
680
|
+
|
681
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
682
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
683
|
+
|
684
|
+
// zero address is certainly not registry
|
685
|
+
if (registryAddress == address(0)) {
|
686
|
+
return false;
|
314
687
|
}
|
315
|
-
//
|
316
|
-
|
317
|
-
|
318
|
-
{
|
319
|
-
|
320
|
-
bytes4 selector = config[idx].selector;
|
321
|
-
|
322
|
-
// not "registry service" / zero domain
|
323
|
-
if(
|
324
|
-
domain == REGISTRY() ||
|
325
|
-
domain.eqz()
|
326
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
327
|
-
|
328
|
-
// no overwrite
|
329
|
-
if(_selector[version][domain] > 0) {
|
330
|
-
revert SelectorAlreadyExists(version, domain);
|
331
|
-
}
|
332
|
-
|
333
|
-
_selector[version][domain] = selector;
|
334
|
-
_release[version].domains.push(domain);
|
688
|
+
// TODO try catch and return false in case of revert
|
689
|
+
// a just panic
|
690
|
+
// check if contract returns a zero nft id for its own address
|
691
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
692
|
+
return false;
|
335
693
|
}
|
336
|
-
// TODO set when activated?
|
337
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
338
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
339
694
|
|
340
|
-
|
695
|
+
return true;
|
341
696
|
}
|
342
697
|
}
|