@etherisc/gif-next 0.0.2-bb1081a-994 → 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/{components/IPoolComponent.sol/IPoolComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +398 -276
- 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 +393 -189
- 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 +576 -320
- 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 +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/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +223 -270
- 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 +269 -346
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -290
- 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} +370 -281
- 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/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +822 -220
- 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 +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 +440 -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 +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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +981 -241
- 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 +349 -82
- 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/shared/Component.sol/Component.json +896 -0
- 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 +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/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +205 -187
- 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/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +221 -211
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
- 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 -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 +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 +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/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 +15 -14
- package/contracts/instance/IInstance.sol +61 -46
- package/contracts/instance/IInstanceService.sol +77 -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 +322 -245
- 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} +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 +28 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +221 -97
- package/contracts/registry/RegistryAdmin.sol +331 -0
- package/contracts/registry/RegistryService.sol +108 -104
- package/contracts/registry/RegistryServiceManager.sol +22 -31
- package/contracts/registry/ReleaseManager.sol +558 -193
- package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
- package/contracts/registry/TokenRegistry.sol +263 -60
- 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 +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 +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
- 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/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/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 -502
- 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/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/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 -1167
- 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 -247
- package/contracts/components/Distribution.sol +0 -143
- package/contracts/components/IComponent.sol +0 -50
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -77
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -257
- package/contracts/components/Product.sol +0 -263
- 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/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -299
- 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 -54
- 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 -519
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -232
- 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,420 @@
|
|
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
|
-
|
43
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
44
|
+
|
45
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
25
46
|
event LogReleaseActivation(VersionPart version);
|
26
47
|
|
48
|
+
// constructor
|
49
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
50
|
+
|
27
51
|
// createNextRelease
|
28
|
-
error
|
29
|
-
|
52
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
53
|
+
|
54
|
+
// prepareRelease
|
55
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
56
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
57
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
|
58
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
|
+
|
60
|
+
// register staking
|
61
|
+
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
30
62
|
|
31
63
|
// registerService
|
32
|
-
error
|
64
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
65
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerNotService(IService service);
|
67
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
68
|
|
34
69
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
70
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
71
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
72
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
73
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
74
|
+
|
75
|
+
// disableRelease
|
76
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
77
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
37
78
|
|
38
|
-
//
|
39
|
-
error
|
40
|
-
error
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
79
|
+
// _verifyService
|
80
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
81
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
43
82
|
|
44
83
|
// _verifyServiceInfo
|
45
|
-
error
|
46
|
-
error
|
47
|
-
|
48
|
-
|
49
|
-
error
|
50
|
-
error
|
51
|
-
|
52
|
-
|
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
|
+
}
|
53
141
|
|
142
|
+
_registry = registry;
|
143
|
+
setAuthority(_registry.getAuthority());
|
144
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
54
145
|
|
55
|
-
|
56
|
-
|
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
|
+
}
|
57
155
|
|
58
|
-
|
59
|
-
|
60
|
-
|
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)
|
162
|
+
{
|
163
|
+
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
164
|
+
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
165
|
+
}
|
61
166
|
|
62
|
-
|
167
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
168
|
+
_awaitingRegistration = 0;
|
169
|
+
_state = SCHEDULED();
|
63
170
|
|
64
|
-
|
171
|
+
return _next;
|
172
|
+
}
|
65
173
|
|
66
|
-
|
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
|
+
)
|
187
|
+
external
|
188
|
+
restricted() // GIF_MANAGER_ROLE
|
189
|
+
returns(
|
190
|
+
address authority,
|
191
|
+
VersionPart version,
|
192
|
+
bytes32 releaseSalt
|
193
|
+
)
|
194
|
+
{
|
195
|
+
// verify release manager is in proper state to start deploying a next release
|
196
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
197
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
198
|
+
}
|
67
199
|
|
68
|
-
|
200
|
+
// verify prepareNextRelease is only called once per release
|
201
|
+
if(_awaitingRegistration > 0) {
|
202
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
203
|
+
}
|
69
204
|
|
70
|
-
|
205
|
+
// verify authorizaion contract release matches with expected version
|
206
|
+
if (serviceAuthorization.getRelease() != _next) {
|
207
|
+
revert ErrorReleaseManagerVersionMismatch(_next, serviceAuthorization.getRelease());
|
208
|
+
}
|
71
209
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
210
|
+
// sanity check to ensure service domain list is not empty
|
211
|
+
if (serviceAuthorization.getServiceDomains().length == 0) {
|
212
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
213
|
+
}
|
214
|
+
|
215
|
+
// store release specific service authorization
|
216
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
217
|
+
|
218
|
+
version = getNextVersion();
|
219
|
+
|
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);
|
78
230
|
|
79
|
-
|
231
|
+
authority = _admin.authority();
|
80
232
|
|
81
|
-
|
82
|
-
|
233
|
+
// TODO refactor/remove old service authz
|
234
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
83
235
|
|
84
|
-
|
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;
|
245
|
+
|
246
|
+
|
247
|
+
_releaseAccessManager[version] = authority;
|
248
|
+
_awaitingRegistration = addresses.length;
|
249
|
+
_state = DEPLOYING();
|
250
|
+
|
251
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
85
252
|
}
|
86
253
|
|
87
|
-
|
88
|
-
function
|
254
|
+
|
255
|
+
function registerService(IService service)
|
89
256
|
external
|
90
|
-
restricted //
|
257
|
+
restricted // GIF_MANAGER_ROLE
|
258
|
+
returns(NftId nftId)
|
91
259
|
{
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
260
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
261
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
262
|
+
}
|
263
|
+
|
264
|
+
(
|
265
|
+
IRegistry.ObjectInfo memory info,
|
266
|
+
ObjectType domain,
|
267
|
+
VersionPart version
|
268
|
+
) = _verifyService(service);
|
269
|
+
|
270
|
+
// redundant with state var
|
271
|
+
if (_awaitingRegistration == 0) {
|
272
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
273
|
+
}
|
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
|
301
|
+
nftId = _registry.registerService(info, version, domain);
|
302
|
+
service.linkToRegisteredNftId();
|
96
303
|
|
97
|
-
|
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
|
+
}
|
98
316
|
}
|
99
317
|
|
318
|
+
|
100
319
|
function activateNextRelease()
|
101
320
|
external
|
102
321
|
restricted // GIF_ADMIN_ROLE
|
103
322
|
{
|
323
|
+
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
324
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
325
|
+
}
|
326
|
+
|
104
327
|
VersionPart version = _next;
|
105
328
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
106
329
|
|
107
|
-
// release
|
330
|
+
// release exists, registry service is a MUST
|
331
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
108
332
|
if(service == address(0)) {
|
109
|
-
revert
|
333
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
110
334
|
}
|
111
335
|
|
112
336
|
// release fully deployed
|
113
337
|
if(_awaitingRegistration > 0) {
|
114
|
-
revert
|
338
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
115
339
|
}
|
116
340
|
|
117
|
-
//
|
341
|
+
// release is not activated
|
342
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
343
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
344
|
+
}
|
118
345
|
|
119
346
|
_latest = version;
|
347
|
+
_state = ACTIVE();
|
120
348
|
|
121
|
-
|
122
|
-
|
349
|
+
_releaseVersionByAddress[service] = version;
|
350
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
351
|
|
124
352
|
emit LogReleaseActivation(version);
|
125
353
|
}
|
126
354
|
|
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)
|
355
|
+
// release becomes disabled after delay expiration (can be reenabled before that)
|
356
|
+
function disableRelease(VersionPart version, Seconds disableDelay)
|
131
357
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
358
|
+
restricted // GIF_ADMIN_ROLE
|
134
359
|
{
|
135
|
-
|
136
|
-
|
360
|
+
// release was activated
|
361
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
362
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
137
363
|
}
|
138
364
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
365
|
+
// release not disabled already
|
366
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
367
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
145
368
|
}
|
146
369
|
|
147
|
-
|
148
|
-
|
149
|
-
VersionPart version = _next;
|
150
|
-
ObjectType domain = REGISTRY();
|
151
|
-
_verifyServiceInfo(info, version, domain);
|
370
|
+
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
152
371
|
|
153
|
-
//
|
154
|
-
|
372
|
+
// TODO come up with a substitute
|
373
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
155
374
|
|
156
|
-
|
157
|
-
|
158
|
-
nftId = _registry.registerService(info, version, domain);
|
159
|
-
|
160
|
-
// external call
|
161
|
-
service.linkToRegisteredNftId();
|
375
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
162
376
|
}
|
163
|
-
|
164
|
-
|
165
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
166
|
-
function registerService(IService service)
|
377
|
+
|
378
|
+
function enableRelease(VersionPart version)
|
167
379
|
external
|
168
|
-
restricted //
|
169
|
-
returns(NftId nftId)
|
380
|
+
restricted // GIF_ADMIN_ROLE
|
170
381
|
{
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
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);
|
189
|
-
}
|
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();
|
190
390
|
|
191
|
-
|
192
|
-
|
193
|
-
nftId = _registry.registerService(info, version, domain);
|
194
|
-
|
195
|
-
// external call
|
196
|
-
service.linkToRegisteredNftId();
|
391
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
197
392
|
}
|
198
393
|
|
199
394
|
//--- view functions ----------------------------------------------------//
|
200
395
|
|
201
|
-
function
|
202
|
-
|
203
|
-
|
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);
|
204
402
|
}
|
205
403
|
|
206
|
-
function
|
207
|
-
|
208
|
-
return
|
404
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
405
|
+
VersionPart version = _releaseVersionByAddress[service];
|
406
|
+
return isActiveRelease(version);
|
209
407
|
}
|
210
408
|
|
211
|
-
function
|
212
|
-
|
213
|
-
return (address(_registry));
|
409
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
410
|
+
return _releaseInfo[version].activatedAt.gtz();
|
214
411
|
}
|
215
412
|
|
216
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
217
|
-
|
218
|
-
return _release[version];
|
413
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
414
|
+
return _releaseInfo[version];
|
219
415
|
}
|
220
416
|
|
221
|
-
function getNextVersion() public view returns(VersionPart)
|
222
|
-
{
|
417
|
+
function getNextVersion() public view returns(VersionPart) {
|
223
418
|
return _next;
|
224
419
|
}
|
225
420
|
|
@@ -231,102 +426,272 @@ contract ReleaseManager is AccessManaged
|
|
231
426
|
return _initial;
|
232
427
|
}
|
233
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
|
+
|
234
484
|
//--- private functions ----------------------------------------------------//
|
235
485
|
|
236
|
-
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(
|
237
528
|
IService service,
|
238
|
-
|
529
|
+
IRegistry.ObjectInfo memory info,
|
239
530
|
address expectedOwner // assume always valid, can not be 0
|
240
531
|
)
|
241
532
|
internal
|
242
|
-
|
243
|
-
returns(
|
244
|
-
IRegistry.ObjectInfo memory info
|
245
|
-
)
|
533
|
+
view
|
246
534
|
{
|
247
|
-
info
|
248
|
-
|
249
|
-
|
535
|
+
if(info.objectAddress != address(service)) {
|
536
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
537
|
+
}
|
538
|
+
|
539
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
540
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
541
|
+
}
|
250
542
|
|
251
|
-
if(info.objectType !=
|
252
|
-
revert
|
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);
|
253
545
|
}
|
254
546
|
|
255
547
|
address owner = info.initialOwner;
|
256
548
|
|
257
549
|
if(owner != expectedOwner) { // registerable owner protection
|
258
|
-
revert
|
550
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
259
551
|
}
|
260
552
|
|
261
553
|
if(owner == address(service)) {
|
262
|
-
revert
|
554
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
263
555
|
}
|
264
556
|
|
265
557
|
if(_registry.isRegistered(owner)) {
|
266
|
-
revert
|
558
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
267
559
|
}
|
268
560
|
}
|
269
561
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
562
|
+
|
563
|
+
function _verifyReleaseAuthorizations(
|
564
|
+
address[] memory serviceAddress,
|
565
|
+
RoleId[][] memory serviceRoles,
|
566
|
+
RoleId[][] memory functionRoles,
|
567
|
+
bytes4[][][] memory selectors
|
274
568
|
)
|
275
569
|
internal
|
276
|
-
|
277
|
-
returns(ObjectType)
|
570
|
+
pure
|
278
571
|
{
|
279
|
-
(
|
280
|
-
|
281
|
-
VersionPart version
|
282
|
-
) = abi.decode(info.data, (ObjectType, VersionPart));
|
283
|
-
|
284
|
-
if(version != expectedVersion) {
|
285
|
-
revert UnexpectedServiceVersion(expectedVersion, version);
|
572
|
+
if(serviceAddress.length == 0) {
|
573
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
286
574
|
}
|
287
575
|
|
288
|
-
|
289
|
-
|
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
|
+
}
|
584
|
+
}
|
290
585
|
}
|
291
586
|
|
292
|
-
|
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
|
293
591
|
}
|
294
592
|
|
295
|
-
// TODO
|
296
|
-
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
|
+
)
|
297
605
|
internal
|
298
606
|
{
|
299
|
-
|
607
|
+
// accessManager.createTarget(serviceAddress, serviceName);
|
608
|
+
|
609
|
+
// for(uint idx = 0; idx < functionRoles.length; idx++)
|
610
|
+
// {
|
611
|
+
// uint64 roleInt = functionRoles[idx].toInt();
|
300
612
|
|
301
|
-
if(
|
302
|
-
|
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;
|
303
687
|
}
|
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);
|
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;
|
325
693
|
}
|
326
|
-
// TODO set when activated?
|
327
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
328
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
329
694
|
|
330
|
-
|
695
|
+
return true;
|
331
696
|
}
|
332
697
|
}
|