@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71cf987-554
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 +5 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +121 -70
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +124 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -37
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +157 -273
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -239
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +188 -290
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +248 -164
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +85 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +131 -247
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -227
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -235
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +232 -131
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -222
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +300 -319
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +280 -235
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -112
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -295
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -131
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -243
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +289 -32
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +495 -93
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +219 -166
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1696 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +377 -235
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +68 -201
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +341 -324
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -132
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -227
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +167 -270
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +100 -97
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +130 -120
- package/contracts/authorization/AccessManagerCloneable.sol +67 -3
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -4
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +7 -17
- package/contracts/distribution/DistributionService.sol +82 -50
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +8 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +102 -73
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +106 -19
- package/contracts/instance/InstanceService.sol +33 -88
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +7 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +23 -23
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +92 -36
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +10 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -29
- package/contracts/pool/Pool.sol +53 -46
- package/contracts/pool/PoolService.sol +156 -136
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +22 -13
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +310 -115
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +16 -20
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
- package/contracts/product/PolicyService.sol +220 -129
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +49 -53
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +108 -66
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +57 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +147 -179
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseAdmin.sol +248 -0
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +223 -203
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +36 -52
- package/contracts/shared/ComponentService.sol +245 -140
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -3
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +99 -22
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +17 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +2 -11
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
- package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -1,47 +1,38 @@
|
|
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
4
|
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";
|
8
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
-
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
10
6
|
|
11
7
|
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
8
|
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
|
-
import {
|
15
|
-
import {
|
16
|
-
import {
|
17
|
-
import {
|
18
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
9
|
+
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
10
|
+
import {Seconds} from "../type/Seconds.sol";
|
11
|
+
import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
|
12
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
13
|
|
20
14
|
import {IService} from "../shared/IService.sol";
|
21
|
-
|
22
|
-
import {
|
23
|
-
import {
|
15
|
+
|
16
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
17
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
24
18
|
|
25
19
|
import {IRegistry} from "./IRegistry.sol";
|
26
20
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
27
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
28
21
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
-
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
30
22
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
31
23
|
import {Registry} from "./Registry.sol";
|
32
|
-
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
24
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
25
|
+
import {ReleaseAdmin} from "./ReleaseAdmin.sol";
|
26
|
+
|
34
27
|
|
35
28
|
contract ReleaseRegistry is
|
36
29
|
AccessManaged,
|
37
30
|
ReleaseLifecycle,
|
38
31
|
IRegistryLinked
|
39
32
|
{
|
40
|
-
|
33
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
|
41
34
|
|
42
|
-
|
43
|
-
|
44
|
-
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
35
|
+
event LogReleaseCreation(IAccessAdmin admin, VersionPart version, bytes32 salt);
|
45
36
|
event LogReleaseActivation(VersionPart version);
|
46
37
|
event LogReleaseDisabled(VersionPart version);
|
47
38
|
event LogReleaseEnabled(VersionPart version);
|
@@ -49,35 +40,22 @@ contract ReleaseRegistry is
|
|
49
40
|
// constructor
|
50
41
|
error ErrorReleaseRegistryNotRegistry(Registry registry);
|
51
42
|
|
52
|
-
//
|
53
|
-
error
|
54
|
-
|
55
|
-
|
56
|
-
error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
57
|
-
error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
58
|
-
error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
|
59
|
-
error ErrorReleaseRegistryNoDomains(VersionPart version);
|
43
|
+
// _verifyServiceAuthorization
|
44
|
+
error ErrorReleaseRegistryNotServiceAuth(address notAuth);
|
45
|
+
error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
|
46
|
+
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
|
60
47
|
|
61
48
|
// registerService
|
62
|
-
error ErrorReleaseRegistryNoServiceRegistrationExpected();
|
63
|
-
error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
|
64
|
-
error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
65
|
-
error ErrorReleaseRegistryNotService(address notService);
|
66
49
|
error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
|
67
50
|
|
68
51
|
// activateNextRelease
|
69
|
-
error
|
70
|
-
error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
|
71
|
-
error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
72
|
-
error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
|
73
|
-
|
74
|
-
// disableRelease
|
75
|
-
error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
|
76
|
-
error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
|
52
|
+
error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
|
77
53
|
|
78
54
|
// _verifyService
|
79
|
-
error
|
80
|
-
error
|
55
|
+
error ErrorReleaseRegistryNotService(address notService);
|
56
|
+
error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
57
|
+
error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
58
|
+
error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
|
81
59
|
|
82
60
|
// _verifyServiceInfo
|
83
61
|
error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
|
@@ -87,23 +65,15 @@ contract ReleaseRegistry is
|
|
87
65
|
error ErrorReleaseRegistryServiceSelfRegistration(IService service);
|
88
66
|
error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
|
89
67
|
|
90
|
-
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
91
|
-
|
92
68
|
RegistryAdmin public immutable _admin;
|
93
69
|
Registry public immutable _registry;
|
94
|
-
IRegisterable private _staking;
|
95
|
-
address private _stakingOwner;
|
96
70
|
|
97
71
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
98
|
-
|
72
|
+
VersionPart [] internal _release; // array of all created releases
|
73
|
+
ReleaseAdmin _masterReleaseAdmin;
|
99
74
|
|
100
|
-
// TODO check where/why this is used
|
101
|
-
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
102
|
-
|
103
|
-
VersionPart private _initial;// first active version
|
104
75
|
VersionPart internal _latest; // latest active version
|
105
76
|
VersionPart internal _next; // version to create and activate
|
106
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
107
77
|
|
108
78
|
uint256 internal _registeredServices;
|
109
79
|
uint256 internal _servicesToRegister;
|
@@ -121,21 +91,32 @@ contract ReleaseRegistry is
|
|
121
91
|
_registry = registry;
|
122
92
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
123
93
|
|
124
|
-
|
94
|
+
_masterReleaseAdmin = new ReleaseAdmin();
|
95
|
+
|
125
96
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
97
|
}
|
127
98
|
|
128
|
-
/// @dev
|
99
|
+
/// @dev sets previous release into SKIPPED state if it was created but not activated
|
129
100
|
/// sets next release into state SCHEDULED
|
130
101
|
function createNextRelease()
|
131
102
|
external
|
132
103
|
restricted() // GIF_ADMIN_ROLE
|
133
104
|
returns(VersionPart)
|
134
105
|
{
|
135
|
-
|
106
|
+
VersionPart version = _next;
|
107
|
+
|
108
|
+
if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
|
109
|
+
_releaseInfo[version].state = SKIPPED();
|
110
|
+
}
|
111
|
+
|
112
|
+
version = VersionPartLib.toVersionPart(version.toInt() + 1);
|
113
|
+
_release.push(version);
|
114
|
+
|
115
|
+
_next = version;
|
116
|
+
_releaseInfo[version].version = version;
|
117
|
+
_releaseInfo[version].state = getInitialState(RELEASE());
|
136
118
|
_servicesToRegister = 0;
|
137
119
|
_registeredServices = 0;
|
138
|
-
_state[_next] = getInitialState(RELEASE());
|
139
120
|
|
140
121
|
return _next;
|
141
122
|
}
|
@@ -147,183 +128,155 @@ contract ReleaseRegistry is
|
|
147
128
|
external
|
148
129
|
restricted() // GIF_MANAGER_ROLE
|
149
130
|
returns(
|
150
|
-
|
151
|
-
VersionPart
|
131
|
+
IAccessAdmin releaseAdmin,
|
132
|
+
VersionPart releaseVersion,
|
152
133
|
bytes32 releaseSalt
|
153
134
|
)
|
154
135
|
{
|
155
|
-
|
156
|
-
version = _next;
|
136
|
+
releaseVersion = _next;
|
157
137
|
|
138
|
+
// release can transition into DEPLOYING state
|
139
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
|
140
|
+
|
141
|
+
// verify authorizations
|
142
|
+
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
143
|
+
|
144
|
+
// create and initialize release admin
|
145
|
+
releaseAdmin = _createReleaseAdmin();
|
146
|
+
releaseSalt = salt;
|
158
147
|
// ensures unique salt
|
159
148
|
// TODO CreateX have clones capability also
|
160
149
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
161
|
-
releaseSalt = keccak256(
|
150
|
+
/*releaseSalt = keccak256(
|
162
151
|
bytes.concat(
|
163
|
-
bytes32(
|
164
|
-
salt))
|
165
|
-
|
166
|
-
// verify release in state SCHEDULED
|
167
|
-
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
168
|
-
revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
|
169
|
-
}
|
170
|
-
|
171
|
-
_state[version] = DEPLOYING();
|
172
|
-
|
173
|
-
// verify authorizaion contract release matches with expected version
|
174
|
-
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
175
|
-
if (releaseVersion != version) {
|
176
|
-
revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
|
177
|
-
}
|
178
|
-
|
179
|
-
|
180
|
-
// sanity check to ensure service domain list is not empty
|
181
|
-
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
182
|
-
if (serviceDomainsCount == 0) {
|
183
|
-
revert ErrorReleaseRegistryNoDomains(version);
|
184
|
-
}
|
185
|
-
|
186
|
-
// verify prepareNextRelease is only called once per release
|
187
|
-
if(_servicesToRegister > 0) {
|
188
|
-
revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
|
189
|
-
}
|
152
|
+
bytes32(releaseVersion.toInt()),
|
153
|
+
salt));*/
|
190
154
|
|
191
155
|
_servicesToRegister = serviceDomainsCount;
|
192
|
-
|
156
|
+
_releaseInfo[releaseVersion].state = DEPLOYING();
|
157
|
+
_releaseInfo[releaseVersion].salt = releaseSalt;
|
158
|
+
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
159
|
+
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
160
|
+
_releaseInfo[releaseVersion].admin = releaseAdmin;
|
193
161
|
|
194
|
-
emit LogReleaseCreation(
|
162
|
+
emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
|
195
163
|
}
|
196
164
|
|
197
|
-
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
198
165
|
function registerService(IService service)
|
199
166
|
external
|
200
167
|
restricted // GIF_MANAGER_ROLE
|
201
168
|
returns(NftId nftId)
|
202
169
|
{
|
203
170
|
VersionPart releaseVersion = _next;
|
204
|
-
StateId state = _state[releaseVersion];
|
205
171
|
|
206
|
-
//
|
207
|
-
|
208
|
-
// TOOD name must represent failed state transition
|
209
|
-
revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
|
210
|
-
}
|
172
|
+
// release can transition to DEPLOYED state
|
173
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
211
174
|
|
212
|
-
|
175
|
+
address releaseAuthority = _releaseInfo[releaseVersion].admin.authority();
|
176
|
+
IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
|
177
|
+
ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
|
213
178
|
|
214
|
-
//
|
215
|
-
if (_servicesToRegister == _registeredServices) {
|
216
|
-
revert ErrorReleaseRegistryNoServiceRegistrationExpected();
|
217
|
-
}
|
218
|
-
|
219
|
-
// service can work with release manager
|
179
|
+
// service can work with release registry and release version
|
220
180
|
(
|
221
181
|
IRegistry.ObjectInfo memory info,
|
222
182
|
ObjectType serviceDomain,
|
223
183
|
VersionPart serviceVersion
|
224
|
-
|
184
|
+
//,string memory serviceName
|
185
|
+
) = _verifyService(
|
186
|
+
service,
|
187
|
+
releaseAuthority,
|
188
|
+
releaseVersion,
|
189
|
+
expectedDomain
|
190
|
+
);
|
191
|
+
|
192
|
+
//_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
|
193
|
+
//_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
194
|
+
//_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
|
195
|
+
|
196
|
+
_registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
|
225
197
|
|
226
|
-
//
|
227
|
-
|
228
|
-
|
229
|
-
revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
|
198
|
+
// release fully deployed
|
199
|
+
if(_servicesToRegister == _registeredServices) {
|
200
|
+
_releaseInfo[releaseVersion].state = DEPLOYED();
|
230
201
|
}
|
231
202
|
|
203
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
204
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
205
|
+
|
206
|
+
// setup service authorization
|
207
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[releaseVersion].admin));
|
208
|
+
releaseAdmin.setReleaseLocked(false);
|
209
|
+
releaseAdmin.authorizeService(
|
210
|
+
releaseAuth,
|
211
|
+
service,
|
212
|
+
serviceDomain,
|
213
|
+
releaseVersion);
|
214
|
+
releaseAdmin.setReleaseLocked(true);
|
215
|
+
|
232
216
|
// register service with registry
|
233
217
|
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
234
218
|
service.linkToRegisteredNftId();
|
235
|
-
_registeredServices++;
|
236
|
-
|
237
|
-
// setup service authorization
|
238
|
-
_admin.authorizeService(
|
239
|
-
_serviceAuthorization[releaseVersion],
|
240
|
-
service);
|
241
|
-
|
242
|
-
// TODO consider to extend this to REGISTRY
|
243
|
-
// special roles for registry/staking/pool service
|
244
|
-
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
245
|
-
// TODO rename to grantServiceDomainRole()
|
246
|
-
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
247
|
-
}
|
248
219
|
}
|
249
|
-
|
250
|
-
|
220
|
+
// TODO return activated version
|
251
221
|
function activateNextRelease()
|
252
222
|
external
|
253
223
|
restricted // GIF_ADMIN_ROLE
|
254
224
|
{
|
255
225
|
VersionPart version = _next;
|
256
|
-
StateId state = _state[version];
|
257
|
-
StateId newState = ACTIVE();
|
258
226
|
|
259
|
-
//
|
260
|
-
|
261
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
262
|
-
}
|
227
|
+
// release can transition to ACTIVE state
|
228
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
|
263
229
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
230
|
+
_latest = version;
|
231
|
+
_releaseInfo[version].state = ACTIVE();
|
232
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
233
|
+
|
234
|
+
// grant special roles for registry/staking/pool services
|
235
|
+
// this will enable access to core contracts functions
|
268
236
|
|
269
|
-
//
|
237
|
+
// registry service MUST be registered for each release
|
270
238
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
271
239
|
if(service == address(0)) {
|
272
|
-
revert
|
240
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(version);
|
273
241
|
}
|
274
242
|
|
275
|
-
|
276
|
-
_state[version] = newState;
|
277
|
-
|
278
|
-
_releaseVersionByAddress[service] = version;
|
279
|
-
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
243
|
+
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
280
244
|
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
/// @dev stop all operations with release services
|
285
|
-
function pauseRelease(VersionPart version)
|
286
|
-
external
|
287
|
-
restricted // GIF_ADMIN_ROLE
|
288
|
-
{
|
289
|
-
StateId state = _state[version];
|
290
|
-
StateId newState = PAUSED();
|
291
|
-
|
292
|
-
// verify release in state ACTIVE
|
293
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
294
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
245
|
+
service = _registry.getServiceAddress(STAKING(), version);
|
246
|
+
if(service != address(0)) {
|
247
|
+
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
295
248
|
}
|
296
249
|
|
297
|
-
|
298
|
-
|
250
|
+
service = _registry.getServiceAddress(POOL(), version);
|
251
|
+
if(service != address(0)) {
|
252
|
+
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
253
|
+
}
|
299
254
|
|
300
|
-
|
301
|
-
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
255
|
+
_setReleaseLocked(version, false);
|
302
256
|
|
303
|
-
emit
|
257
|
+
emit LogReleaseActivation(version);
|
304
258
|
}
|
305
259
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
restricted // GIF_ADMIN_ROLE
|
260
|
+
/// @dev stop/resume operations with restricted functions
|
261
|
+
function setActive(VersionPart version, bool active)
|
262
|
+
public
|
263
|
+
restricted
|
311
264
|
{
|
312
|
-
StateId state =
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
265
|
+
StateId state = _releaseInfo[version].state;
|
266
|
+
|
267
|
+
if(active) {
|
268
|
+
checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
|
269
|
+
_releaseInfo[version].state = ACTIVE();
|
270
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
271
|
+
emit LogReleaseEnabled(version);
|
272
|
+
} else {
|
273
|
+
checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
|
274
|
+
_releaseInfo[version].state = PAUSED();
|
275
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
276
|
+
emit LogReleaseDisabled(version);
|
318
277
|
}
|
319
278
|
|
320
|
-
|
321
|
-
// _releaseAccessManager[version].enable();
|
322
|
-
|
323
|
-
_state[version] = newState;
|
324
|
-
_releaseInfo[version].disabledAt = zeroTimestamp();
|
325
|
-
|
326
|
-
emit LogReleaseEnabled(version);
|
279
|
+
_setReleaseLocked(version, !active);
|
327
280
|
}
|
328
281
|
|
329
282
|
//--- view functions ----------------------------------------------------//
|
@@ -336,33 +289,39 @@ contract ReleaseRegistry is
|
|
336
289
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
337
290
|
}
|
338
291
|
|
339
|
-
function isActiveRegistryService(address service) external view returns(bool) {
|
340
|
-
VersionPart version = _releaseVersionByAddress[service];
|
341
|
-
return isActiveRelease(version);
|
342
|
-
}
|
343
|
-
|
344
292
|
function isActiveRelease(VersionPart version) public view returns(bool) {
|
345
|
-
return
|
293
|
+
return _releaseInfo[version].state == ACTIVE();
|
346
294
|
}
|
347
295
|
|
348
296
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
349
297
|
return _releaseInfo[version];
|
350
298
|
}
|
351
299
|
|
300
|
+
/// @dev Returns the number of created releases.
|
301
|
+
/// Releases might be in another state than ACTIVE.
|
302
|
+
function releases() external view returns (uint) {
|
303
|
+
return _release.length;
|
304
|
+
}
|
305
|
+
|
306
|
+
/// @dev Returns the n-th release version.
|
307
|
+
/// Valid values for idx [0 .. releases() - 1]
|
308
|
+
function getVersion(uint256 idx) external view returns (VersionPart version) {
|
309
|
+
// return _releases;
|
310
|
+
return _release[idx];
|
311
|
+
}
|
312
|
+
|
352
313
|
function getNextVersion() public view returns(VersionPart) {
|
353
314
|
return _next;
|
354
315
|
}
|
355
316
|
|
317
|
+
/// @dev Returns the latest activated relase version.
|
318
|
+
/// There is no guarantee that the release is not currently paused.
|
356
319
|
function getLatestVersion() external view returns(VersionPart) {
|
357
320
|
return _latest;
|
358
321
|
}
|
359
322
|
|
360
|
-
function getInitialVersion() external view returns(VersionPart) {
|
361
|
-
return _initial;
|
362
|
-
}
|
363
|
-
|
364
323
|
function getState(VersionPart version) external view returns (StateId stateId) {
|
365
|
-
return
|
324
|
+
return _releaseInfo[version].state;
|
366
325
|
}
|
367
326
|
|
368
327
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
@@ -374,7 +333,7 @@ contract ReleaseRegistry is
|
|
374
333
|
view
|
375
334
|
returns (IServiceAuthorization serviceAuthorization)
|
376
335
|
{
|
377
|
-
return
|
336
|
+
return _releaseInfo[version].auth;
|
378
337
|
}
|
379
338
|
|
380
339
|
function getRegistryAdmin() external view returns (address) {
|
@@ -389,7 +348,66 @@ contract ReleaseRegistry is
|
|
389
348
|
|
390
349
|
//--- private functions ----------------------------------------------------//
|
391
350
|
|
392
|
-
function
|
351
|
+
function _setReleaseLocked(VersionPart version, bool locked)
|
352
|
+
private
|
353
|
+
{
|
354
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[version].admin));
|
355
|
+
releaseAdmin.setReleaseLocked(locked);
|
356
|
+
}
|
357
|
+
|
358
|
+
function _createReleaseAdmin()
|
359
|
+
private
|
360
|
+
returns (ReleaseAdmin clonedAdmin)
|
361
|
+
{
|
362
|
+
AccessManagerCloneable releaseAccessManager = AccessManagerCloneable(
|
363
|
+
Clones.clone(
|
364
|
+
_masterReleaseAdmin.authority()
|
365
|
+
)
|
366
|
+
);
|
367
|
+
clonedAdmin = ReleaseAdmin(
|
368
|
+
Clones.clone(
|
369
|
+
address(_masterReleaseAdmin)
|
370
|
+
)
|
371
|
+
);
|
372
|
+
clonedAdmin.initialize(releaseAccessManager);
|
373
|
+
clonedAdmin.completeSetup(address(_registry), address(this), _next);
|
374
|
+
clonedAdmin.setReleaseLocked(true);
|
375
|
+
}
|
376
|
+
|
377
|
+
function _verifyServiceAuthorization(
|
378
|
+
IServiceAuthorization serviceAuthorization,
|
379
|
+
VersionPart releaseVersion,
|
380
|
+
bytes32 salt
|
381
|
+
)
|
382
|
+
private
|
383
|
+
view
|
384
|
+
returns (uint256 serviceDomainsCount)
|
385
|
+
{
|
386
|
+
// authorization contract supports IServiceAuthorization interface
|
387
|
+
if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
|
388
|
+
revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
|
389
|
+
}
|
390
|
+
|
391
|
+
// authorizaions contract version matches with release version
|
392
|
+
VersionPart authVersion = serviceAuthorization.getRelease();
|
393
|
+
if (releaseVersion != authVersion) {
|
394
|
+
revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
|
395
|
+
}
|
396
|
+
|
397
|
+
// sanity check to ensure service domain list is not empty
|
398
|
+
serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
399
|
+
if (serviceDomainsCount == 0) {
|
400
|
+
revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
|
401
|
+
}
|
402
|
+
}
|
403
|
+
|
404
|
+
// TODO get service names
|
405
|
+
function _verifyService(
|
406
|
+
IService service,
|
407
|
+
address expectedAuthority,
|
408
|
+
VersionPart expectedVersion,
|
409
|
+
ObjectType expectedDomain
|
410
|
+
)
|
393
411
|
internal
|
394
412
|
view
|
395
413
|
returns(
|
@@ -410,22 +428,25 @@ contract ReleaseRegistry is
|
|
410
428
|
|
411
429
|
_verifyServiceInfo(service, serviceInfo, owner);
|
412
430
|
|
413
|
-
VersionPart releaseVersion = _next; // never 0
|
414
|
-
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
415
|
-
|
416
|
-
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
417
431
|
if(serviceAuthority != expectedAuthority) {
|
418
|
-
revert
|
432
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
419
433
|
service,
|
420
434
|
serviceAuthority,
|
421
435
|
expectedAuthority);
|
422
436
|
}
|
423
437
|
|
424
|
-
if(serviceVersion !=
|
425
|
-
revert
|
438
|
+
if(serviceVersion != expectedVersion) {
|
439
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
426
440
|
service,
|
427
441
|
serviceVersion,
|
428
|
-
|
442
|
+
expectedVersion);
|
443
|
+
}
|
444
|
+
|
445
|
+
if(serviceDomain != expectedDomain) {
|
446
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
447
|
+
service,
|
448
|
+
expectedDomain,
|
449
|
+
serviceDomain);
|
429
450
|
}
|
430
451
|
}
|
431
452
|
|
@@ -439,7 +460,7 @@ contract ReleaseRegistry is
|
|
439
460
|
view
|
440
461
|
{
|
441
462
|
if(info.objectAddress != address(service)) {
|
442
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
463
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
443
464
|
}
|
444
465
|
|
445
466
|
if(info.isInterceptor != false) { // service is never interceptor
|
@@ -472,10 +493,9 @@ contract ReleaseRegistry is
|
|
472
493
|
if (registryAddress == address(0)) {
|
473
494
|
return false;
|
474
495
|
}
|
475
|
-
// TODO try catch and return false in case of revert
|
476
|
-
// or just panic
|
496
|
+
// TODO try catch and return false in case of revert or just panic
|
477
497
|
// check if contract returns a zero nft id for its own address
|
478
|
-
if (IRegistry(registryAddress).
|
498
|
+
if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
|
479
499
|
return false;
|
480
500
|
}
|
481
501
|
|