@etherisc/gif-next 0.0.2-a63347a-883 → 0.0.2-a6ef85f-456
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 +28 -16
- 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/{components/IProductComponent.sol/IProductComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +485 -258
- 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 +61 -116
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +239 -1554
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -190
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2524
- 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 +661 -341
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +544 -363
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -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/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +209 -299
- 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 -285
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +638 -197
- 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 -230
- 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 -297
- 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 -215
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +358 -312
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
- 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 +203 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -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 +440 -36
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +761 -105
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -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} +346 -364
- 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/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
- 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 +1189 -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/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +213 -230
- 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/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +210 -161
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- 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 -30
- 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 -154
- 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 +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
- 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 +108 -35
- 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 -75
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
- 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 +188 -157
- 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/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -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 +2237 -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 +15 -14
- package/contracts/instance/IInstance.sol +61 -46
- package/contracts/instance/IInstanceService.sol +76 -20
- package/contracts/instance/Instance.sol +176 -182
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +159 -60
- package/contracts/instance/InstanceService.sol +313 -309
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +272 -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/base/ObjectLifecycle.sol +103 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
- 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/TestToken.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 +47 -21
- package/contracts/registry/IRegistryService.sol +42 -38
- package/contracts/registry/IServiceAuthorization.sol +38 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +227 -97
- package/contracts/registry/RegistryAdmin.sol +336 -0
- package/contracts/registry/RegistryService.sol +108 -104
- package/contracts/registry/RegistryServiceManager.sol +22 -31
- package/contracts/registry/ReleaseLifecycle.sol +29 -0
- package/contracts/registry/ReleaseManager.sol +385 -196
- package/contracts/registry/ServiceAuthorization.sol +90 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +263 -60
- package/contracts/shared/AccessAdmin.sol +759 -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 +620 -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 +168 -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 +16 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- 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 +131 -0
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +59 -91
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +131 -26
- package/contracts/shared/Registerable.sol +19 -30
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +54 -31
- 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/StakingLifecycle.sol +23 -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 +615 -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 +8 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- 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/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/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- 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 -1102
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
- 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/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 -1227
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
- 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/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 -313
- 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 -608
- 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/Component.sol +0 -216
- package/contracts/components/Distribution.sol +0 -153
- package/contracts/components/IComponent.sol +0 -43
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -51
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -208
- package/contracts/components/Product.sol +0 -266
- 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/InstanceAccessManager.sol +0 -298
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/base/Lifecycle.sol +0 -100
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -293
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -106
- 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 -538
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -110
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -233
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- 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/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- 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,225 +1,395 @@
|
|
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, ADMIN_ROLE, PUBLIC_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, PAUSED, CLOSED} 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";
|
34
|
+
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
18
35
|
|
19
36
|
|
20
|
-
contract ReleaseManager is
|
37
|
+
contract ReleaseManager is
|
38
|
+
AccessManaged,
|
39
|
+
ReleaseLifecycle,
|
40
|
+
IRegistryLinked
|
21
41
|
{
|
22
42
|
using ObjectTypeLib for ObjectType;
|
23
43
|
|
24
|
-
|
44
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
45
|
+
|
46
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
25
47
|
event LogReleaseActivation(VersionPart version);
|
48
|
+
event LogReleaseDisabled(VersionPart version);
|
49
|
+
event LogReleaseEnabled(VersionPart version);
|
50
|
+
event LogReleaseClosed(VersionPart version);
|
51
|
+
|
52
|
+
// constructor
|
53
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
26
54
|
|
27
55
|
// createNextRelease
|
28
|
-
error
|
29
|
-
|
56
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
|
57
|
+
|
58
|
+
// prepareRelease
|
59
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
60
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
61
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
|
62
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
30
63
|
|
31
64
|
// registerService
|
32
|
-
error
|
65
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
66
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
67
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
68
|
+
error ErrorReleaseManagerNotService(address notService);
|
69
|
+
error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
|
33
70
|
|
34
71
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
37
|
-
|
38
|
-
|
39
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
40
|
-
error NotRegisterableOwner(address notOwner);
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
72
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
|
73
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
74
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
75
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
43
76
|
|
44
|
-
//
|
45
|
-
error
|
46
|
-
error
|
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);
|
77
|
+
// disableRelease
|
78
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
79
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
53
80
|
|
81
|
+
// _verifyService
|
82
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
83
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
54
84
|
|
55
|
-
|
56
|
-
|
85
|
+
// _verifyServiceInfo
|
86
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
87
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
88
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
89
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
90
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
91
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
57
92
|
|
58
|
-
|
59
|
-
VersionPart _latest;// latest active version
|
60
|
-
VersionPart _next;// version to create and activate
|
93
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
61
94
|
|
62
|
-
|
95
|
+
RegistryAdmin private _admin;
|
96
|
+
address public _releaseAccessManagerCodeAddress;
|
97
|
+
Registry private _registry;
|
63
98
|
|
64
|
-
|
99
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
100
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
101
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
102
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
65
103
|
|
66
|
-
|
104
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
67
105
|
|
68
|
-
|
106
|
+
VersionPart private _initial;// first active version
|
107
|
+
VersionPart internal _latest; // latest active version
|
108
|
+
VersionPart internal _next; // version to create and activate
|
109
|
+
mapping(VersionPart verson => StateId releaseState) private _state;
|
69
110
|
|
70
|
-
|
111
|
+
uint256 internal _registeredServices;
|
112
|
+
uint256 internal _servicesToRegister;
|
71
113
|
|
72
|
-
constructor(
|
73
|
-
|
74
|
-
VersionPart initialVersion)
|
75
|
-
AccessManaged(accessManager.authority())
|
114
|
+
constructor(Registry registry)
|
115
|
+
AccessManaged(msg.sender)
|
76
116
|
{
|
77
|
-
|
117
|
+
// TODO move this part to RegistryLinked constructor
|
118
|
+
if(!_isRegistry(address(registry))) {
|
119
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
120
|
+
}
|
121
|
+
|
122
|
+
setAuthority(registry.getAuthority());
|
78
123
|
|
79
|
-
|
124
|
+
_registry = registry;
|
125
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
80
126
|
|
81
|
-
_initial =
|
82
|
-
_next =
|
127
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
128
|
+
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
83
129
|
|
84
|
-
|
130
|
+
//AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
131
|
+
//masterReleaseAccessManager.initialize(address(this));
|
132
|
+
//masterReleaseAccessManager.disable();
|
133
|
+
//_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
85
134
|
}
|
86
135
|
|
87
136
|
/// @dev skips previous release if was not activated
|
137
|
+
/// sets next release into state SCHEDULED
|
88
138
|
function createNextRelease()
|
89
139
|
external
|
90
|
-
restricted // GIF_ADMIN_ROLE
|
140
|
+
restricted() // GIF_ADMIN_ROLE
|
141
|
+
returns(VersionPart)
|
142
|
+
{
|
143
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
144
|
+
_servicesToRegister = 0;
|
145
|
+
_registeredServices = 0;
|
146
|
+
_state[_next] = getInitialState(RELEASE());
|
147
|
+
|
148
|
+
return _next;
|
149
|
+
}
|
150
|
+
|
151
|
+
function prepareNextRelease(
|
152
|
+
IServiceAuthorization serviceAuthorization,
|
153
|
+
bytes32 salt
|
154
|
+
)
|
155
|
+
external
|
156
|
+
restricted() // GIF_MANAGER_ROLE
|
157
|
+
returns(
|
158
|
+
address authority,
|
159
|
+
VersionPart version,
|
160
|
+
bytes32 releaseSalt
|
161
|
+
)
|
162
|
+
{
|
163
|
+
(
|
164
|
+
VersionPart releaseVersion,
|
165
|
+
uint serviceDomainsCount
|
166
|
+
) = serviceAuthorization.getRelease();
|
167
|
+
|
168
|
+
// verify authorizaion contract release matches with expected version
|
169
|
+
if (releaseVersion != _next) {
|
170
|
+
revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
|
171
|
+
}
|
172
|
+
|
173
|
+
// sanity check to ensure service domain list is not empty
|
174
|
+
if (serviceDomainsCount == 0) {
|
175
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
176
|
+
}
|
177
|
+
|
178
|
+
version = _next;
|
179
|
+
StateId state = _state[version];
|
180
|
+
StateId newState = DEPLOYING();
|
181
|
+
|
182
|
+
// verify release in state SCHEDULED
|
183
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
184
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(version, state);
|
185
|
+
}
|
186
|
+
|
187
|
+
// verify prepareNextRelease is only called once per release
|
188
|
+
if(_servicesToRegister > 0) {
|
189
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version, state);
|
190
|
+
}
|
191
|
+
|
192
|
+
// ensures unique salt
|
193
|
+
// TODO CreateX have clones capability also
|
194
|
+
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
195
|
+
releaseSalt = keccak256(
|
196
|
+
bytes.concat(
|
197
|
+
bytes32(version.toInt()),
|
198
|
+
salt));
|
199
|
+
|
200
|
+
authority = _admin.authority();
|
201
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
202
|
+
_releaseAccessManager[_next] = authority;
|
203
|
+
_servicesToRegister = serviceDomainsCount;
|
204
|
+
_state[version] = newState;
|
205
|
+
|
206
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
207
|
+
}
|
208
|
+
|
209
|
+
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
210
|
+
function registerService(IService service)
|
211
|
+
external
|
212
|
+
restricted // GIF_MANAGER_ROLE
|
213
|
+
returns(NftId nftId)
|
91
214
|
{
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
215
|
+
VersionPart releaseVersion = _next;
|
216
|
+
StateId state = _state[releaseVersion];
|
217
|
+
StateId newState = DEPLOYING();
|
218
|
+
|
219
|
+
// verify release in state DEPLOYING
|
220
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
221
|
+
// TOOD name must represent failed state transition
|
222
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
|
223
|
+
}
|
96
224
|
|
97
|
-
|
225
|
+
// not all services are registered
|
226
|
+
if (_servicesToRegister == _registeredServices) {
|
227
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
228
|
+
}
|
229
|
+
|
230
|
+
// service can work with release manager
|
231
|
+
(
|
232
|
+
IRegistry.ObjectInfo memory info,
|
233
|
+
ObjectType serviceDomain,
|
234
|
+
VersionPart serviceVersion
|
235
|
+
) = _verifyService(service);
|
236
|
+
|
237
|
+
// service domain matches defined in release config
|
238
|
+
ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
|
239
|
+
if (serviceDomain != expectedDomain) {
|
240
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
|
241
|
+
}
|
242
|
+
|
243
|
+
// TODO uncomment when release addresses calculations are ready
|
244
|
+
// service address matches defined in release config
|
245
|
+
/*address expectedAddress = _serviceAuthorization[releaseVersion].getServiceAddress(expectedDomain);
|
246
|
+
if(address(service) != expectedAddress) {
|
247
|
+
//revert ErrorReleaseManagerServiceAddressMismatch(expectedAddress, address(service));
|
248
|
+
}*/
|
249
|
+
|
250
|
+
// checked in registry
|
251
|
+
_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
252
|
+
|
253
|
+
_state[releaseVersion] = newState;
|
254
|
+
_registeredServices++;
|
255
|
+
|
256
|
+
// setup service authorization
|
257
|
+
_admin.authorizeService(
|
258
|
+
_serviceAuthorization[releaseVersion],
|
259
|
+
service);
|
260
|
+
|
261
|
+
// TODO consider to extend this to REGISTRY
|
262
|
+
// special roles for registry/staking/pool service
|
263
|
+
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
264
|
+
// TODO rename to grantServiceDomainRole()
|
265
|
+
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
266
|
+
}
|
267
|
+
|
268
|
+
// register service with registry
|
269
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
270
|
+
service.linkToRegisteredNftId();
|
98
271
|
}
|
99
272
|
|
273
|
+
|
100
274
|
function activateNextRelease()
|
101
275
|
external
|
102
276
|
restricted // GIF_ADMIN_ROLE
|
103
277
|
{
|
104
278
|
VersionPart version = _next;
|
105
|
-
|
279
|
+
StateId state = _state[version];
|
280
|
+
StateId newState = ACTIVE();
|
106
281
|
|
107
|
-
// release
|
108
|
-
if(
|
109
|
-
revert
|
282
|
+
// verify release in state DEPLOYING
|
283
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
284
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
110
285
|
}
|
111
286
|
|
112
287
|
// release fully deployed
|
113
|
-
if(
|
114
|
-
revert
|
288
|
+
if(_registeredServices < _servicesToRegister) {
|
289
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
115
290
|
}
|
116
291
|
|
117
|
-
//
|
292
|
+
// release exists, registry service MUST exist
|
293
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
294
|
+
if(service == address(0)) {
|
295
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
296
|
+
}
|
118
297
|
|
119
298
|
_latest = version;
|
299
|
+
_state[version] = newState;
|
120
300
|
|
121
|
-
|
122
|
-
|
301
|
+
_releaseVersionByAddress[service] = version;
|
302
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
303
|
|
124
304
|
emit LogReleaseActivation(version);
|
125
305
|
}
|
126
306
|
|
127
|
-
|
128
|
-
|
129
|
-
// callable once per release after release creation, can not register regular services while registry service is not registered
|
130
|
-
function registerRegistryService(IRegistryService service)
|
307
|
+
/// @dev stop all operations with release services
|
308
|
+
function pauseRelease(VersionPart version)
|
131
309
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
310
|
+
restricted // GIF_ADMIN_ROLE
|
134
311
|
{
|
135
|
-
|
136
|
-
|
137
|
-
}
|
312
|
+
StateId state = _state[version];
|
313
|
+
StateId newState = PAUSED();
|
138
314
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
315
|
+
// verify release in state ACTIVE
|
316
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
317
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
145
318
|
}
|
146
319
|
|
147
|
-
|
320
|
+
// TODO come up with a substitute
|
321
|
+
//_releaseAccessManager[version].disable();
|
148
322
|
|
149
|
-
|
150
|
-
|
151
|
-
|
323
|
+
_state[version] = newState;
|
324
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
325
|
+
|
326
|
+
emit LogReleaseDisabled(version);
|
327
|
+
}
|
328
|
+
|
329
|
+
// TODO consider revert if some delay is expired -> becomes disabled automatically
|
330
|
+
/// @dev resume operations with release services
|
331
|
+
function unpauseRelease(VersionPart version)
|
332
|
+
external
|
333
|
+
restricted // GIF_ADMIN_ROLE
|
334
|
+
{
|
335
|
+
StateId state = _state[version];
|
336
|
+
StateId newState = ACTIVE();
|
152
337
|
|
153
|
-
//
|
154
|
-
|
338
|
+
// verify release in state PAUSED
|
339
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
340
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
341
|
+
}
|
155
342
|
|
156
|
-
//
|
343
|
+
// TODO come up with a substitute
|
344
|
+
// _releaseAccessManager[version].enable();
|
157
345
|
|
158
|
-
|
346
|
+
_state[version] = newState;
|
347
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
159
348
|
|
160
|
-
|
161
|
-
service.linkToRegisteredNftId();
|
349
|
+
emit LogReleaseEnabled(version);
|
162
350
|
}
|
163
|
-
|
164
|
-
|
165
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
166
|
-
function registerService(IService service)
|
351
|
+
/// @dev permanently disable release
|
352
|
+
function closeRelease(VersionPart version)
|
167
353
|
external
|
168
|
-
restricted //
|
169
|
-
returns(NftId nftId)
|
354
|
+
restricted // GIF_ADMIN_ROLE
|
170
355
|
{
|
171
|
-
|
172
|
-
|
173
|
-
}
|
356
|
+
StateId state = _state[version];
|
357
|
+
StateId newState = CLOSED();
|
174
358
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
_verifyServiceInfo(info, version, domain);
|
179
|
-
|
180
|
-
// setup and grant unique role if service does registrations
|
181
|
-
bytes4[] memory selector = new bytes4[](1);
|
182
|
-
selector[0] = _selector[version][domain];
|
183
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
184
|
-
if(selector[0] != 0) {
|
185
|
-
_accessManager.setAndGrantUniqueRole(
|
186
|
-
address(service),
|
187
|
-
registryService,
|
188
|
-
selector);
|
359
|
+
// verify release in state PAUSED
|
360
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
361
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
189
362
|
}
|
190
|
-
|
191
|
-
_awaitingRegistration--;
|
192
363
|
|
193
|
-
|
364
|
+
_state[version] = newState;
|
194
365
|
|
195
|
-
|
196
|
-
service.linkToRegisteredNftId();
|
366
|
+
emit LogReleaseClosed(version);
|
197
367
|
}
|
198
368
|
|
199
369
|
//--- view functions ----------------------------------------------------//
|
200
370
|
|
201
|
-
function
|
202
|
-
|
203
|
-
|
371
|
+
function predictDeterministicAddress(
|
372
|
+
address implementation,
|
373
|
+
bytes32 salt,
|
374
|
+
address deployer
|
375
|
+
) external pure returns (address predicted) {
|
376
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
204
377
|
}
|
205
378
|
|
206
|
-
function
|
207
|
-
|
208
|
-
return
|
379
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
380
|
+
VersionPart version = _releaseVersionByAddress[service];
|
381
|
+
return isActiveRelease(version);
|
209
382
|
}
|
210
383
|
|
211
|
-
function
|
212
|
-
|
213
|
-
return (address(_registry));
|
384
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
385
|
+
return _state[version] == ACTIVE();
|
214
386
|
}
|
215
387
|
|
216
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
217
|
-
|
218
|
-
return _release[version];
|
388
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
389
|
+
return _releaseInfo[version];
|
219
390
|
}
|
220
391
|
|
221
|
-
function getNextVersion() public view returns(VersionPart)
|
222
|
-
{
|
392
|
+
function getNextVersion() public view returns(VersionPart) {
|
223
393
|
return _next;
|
224
394
|
}
|
225
395
|
|
@@ -231,102 +401,121 @@ contract ReleaseManager is AccessManaged
|
|
231
401
|
return _initial;
|
232
402
|
}
|
233
403
|
|
404
|
+
function getState(VersionPart version) external view returns (StateId stateId) {
|
405
|
+
return _state[version];
|
406
|
+
}
|
407
|
+
|
408
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
409
|
+
return _servicesToRegister - _registeredServices;
|
410
|
+
}
|
411
|
+
|
412
|
+
function getReleaseAccessManager(VersionPart version) external view returns(address) {
|
413
|
+
return _releaseAccessManager[version];
|
414
|
+
}
|
415
|
+
|
416
|
+
function getRegistryAdmin() external view returns (address) {
|
417
|
+
return address(_admin);
|
418
|
+
}
|
419
|
+
|
420
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
421
|
+
|
422
|
+
function getRegistry() external view returns (IRegistry) {
|
423
|
+
return _registry;
|
424
|
+
}
|
425
|
+
|
234
426
|
//--- private functions ----------------------------------------------------//
|
235
427
|
|
236
|
-
function
|
237
|
-
IService service,
|
238
|
-
ObjectType expectedType,
|
239
|
-
address expectedOwner // assume always valid, can not be 0
|
240
|
-
)
|
428
|
+
function _verifyService(IService service)
|
241
429
|
internal
|
242
|
-
|
430
|
+
view
|
243
431
|
returns(
|
244
|
-
IRegistry.ObjectInfo memory
|
432
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
433
|
+
ObjectType serviceDomain,
|
434
|
+
VersionPart serviceVersion
|
245
435
|
)
|
246
436
|
{
|
247
|
-
|
248
|
-
|
249
|
-
info.isInterceptor = false; // service is never interceptor, at least now
|
250
|
-
|
251
|
-
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
252
|
-
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
437
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
438
|
+
revert ErrorReleaseManagerNotService(address(service));
|
253
439
|
}
|
254
440
|
|
255
|
-
address owner =
|
441
|
+
address owner = msg.sender;
|
442
|
+
address serviceAuthority = service.authority();
|
443
|
+
serviceVersion = service.getVersion().toMajorPart();
|
444
|
+
serviceDomain = service.getDomain();// checked in registry
|
445
|
+
serviceInfo = service.getInitialInfo();
|
256
446
|
|
257
|
-
|
258
|
-
revert NotRegisterableOwner(expectedOwner);
|
259
|
-
}
|
447
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
260
448
|
|
261
|
-
|
262
|
-
|
449
|
+
VersionPart releaseVersion = _next; // never 0
|
450
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
451
|
+
|
452
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
453
|
+
if(serviceAuthority != releaseAuthority) {
|
454
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
455
|
+
service,
|
456
|
+
serviceAuthority,
|
457
|
+
releaseAuthority);
|
263
458
|
}
|
264
|
-
|
265
|
-
if(
|
266
|
-
revert
|
459
|
+
|
460
|
+
if(serviceVersion != releaseVersion) {
|
461
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
462
|
+
service,
|
463
|
+
serviceVersion,
|
464
|
+
releaseVersion);
|
267
465
|
}
|
268
466
|
}
|
269
467
|
|
468
|
+
|
270
469
|
function _verifyServiceInfo(
|
470
|
+
IService service,
|
271
471
|
IRegistry.ObjectInfo memory info,
|
272
|
-
|
273
|
-
ObjectType expectedDomain
|
472
|
+
address expectedOwner // assume always valid, can not be 0
|
274
473
|
)
|
275
474
|
internal
|
276
475
|
view
|
277
|
-
returns(ObjectType)
|
278
476
|
{
|
279
|
-
(
|
280
|
-
|
281
|
-
|
282
|
-
|
477
|
+
if(info.objectAddress != address(service)) {
|
478
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
479
|
+
}
|
480
|
+
|
481
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
482
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
483
|
+
}
|
283
484
|
|
284
|
-
if(
|
285
|
-
revert
|
485
|
+
if(info.objectType != SERVICE()) {
|
486
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
286
487
|
}
|
287
488
|
|
288
|
-
|
289
|
-
|
489
|
+
address owner = info.initialOwner;
|
490
|
+
|
491
|
+
if(owner != expectedOwner) { // registerable owner protection
|
492
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
290
493
|
}
|
291
494
|
|
292
|
-
|
495
|
+
if(owner == address(service)) {
|
496
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
497
|
+
}
|
498
|
+
|
499
|
+
if(_registry.isRegistered(owner)) {
|
500
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
501
|
+
}
|
293
502
|
}
|
294
503
|
|
295
|
-
|
296
|
-
function
|
297
|
-
internal
|
298
|
-
{
|
299
|
-
VersionPart version = getNextVersion();
|
504
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
505
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
300
506
|
|
301
|
-
|
302
|
-
|
507
|
+
// zero address is certainly not registry
|
508
|
+
if (registryAddress == address(0)) {
|
509
|
+
return false;
|
303
510
|
}
|
304
|
-
//
|
305
|
-
|
306
|
-
|
307
|
-
{
|
308
|
-
|
309
|
-
bytes4 selector = config[idx].selector;
|
310
|
-
|
311
|
-
// not "registry service" / zero domain
|
312
|
-
if(
|
313
|
-
domain == REGISTRY() ||
|
314
|
-
domain.eqz()
|
315
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
316
|
-
|
317
|
-
// TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
|
318
|
-
// no overwrite
|
319
|
-
if(_selector[version][domain] > 0) {
|
320
|
-
revert SelectorAlreadyExists(version, domain);
|
321
|
-
}
|
322
|
-
|
323
|
-
_selector[version][domain] = selector;
|
324
|
-
_release[version].domains.push(domain);
|
511
|
+
// TODO try catch and return false in case of revert
|
512
|
+
// or just panic
|
513
|
+
// check if contract returns a zero nft id for its own address
|
514
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
515
|
+
return false;
|
325
516
|
}
|
326
|
-
// TODO set when activated?
|
327
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
328
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
329
517
|
|
330
|
-
|
518
|
+
return true;
|
331
519
|
}
|
332
520
|
}
|
521
|
+
|