@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1f3b2c-994
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 +7 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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 +48 -30
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- 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 +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -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 +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -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/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +145 -111
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -218
- 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 +45 -4
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +47 -232
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +15 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +15 -216
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +319 -188
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +149 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +41 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +43 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +282 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +43 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +399 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -267
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +43 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -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 +238 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +436 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +261 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +117 -215
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- 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 +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -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 +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +15 -31
- 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/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/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- 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 +15 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- 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 +6 -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 +8 -97
- 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 +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- 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 +42 -21
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- 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 +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- 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 +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +168 -127
- 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/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +50 -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 +23 -4
- 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 +39 -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 +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +32 -33
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -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 +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +63 -41
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -7
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +166 -46
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +59 -34
- package/contracts/pool/PoolService.sol +231 -102
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -29
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +251 -87
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +379 -192
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +81 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +51 -18
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +328 -197
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +194 -183
- package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
- package/contracts/shared/Component.sol +25 -29
- package/contracts/shared/ComponentService.sol +20 -30
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/Blocknumber.sol +7 -1
- 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/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- 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/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,37 +1,28 @@
|
|
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
|
-
import {ILifecycle} from "../shared/ILifecycle.sol";
|
22
|
-
import {INftOwnable} from "../shared/INftOwnable.sol";
|
23
15
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
24
16
|
|
25
17
|
import {IRegistry} from "./IRegistry.sol";
|
26
18
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
27
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
28
19
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
-
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
30
20
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
31
21
|
import {Registry} from "./Registry.sol";
|
32
|
-
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
22
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
23
|
|
24
|
+
// TODO rename to something that does not end with 'Manager'
|
25
|
+
// everywhere else *Manager points to an upgradeable contract
|
35
26
|
contract ReleaseRegistry is
|
36
27
|
AccessManaged,
|
37
28
|
ReleaseLifecycle,
|
@@ -39,7 +30,7 @@ contract ReleaseRegistry is
|
|
39
30
|
{
|
40
31
|
using ObjectTypeLib for ObjectType;
|
41
32
|
|
42
|
-
uint256 public constant INITIAL_GIF_VERSION = 3
|
33
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
|
43
34
|
|
44
35
|
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
45
36
|
event LogReleaseActivation(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);
|
@@ -91,19 +69,12 @@ contract ReleaseRegistry is
|
|
91
69
|
|
92
70
|
RegistryAdmin public immutable _admin;
|
93
71
|
Registry public immutable _registry;
|
94
|
-
IRegisterable private _staking;
|
95
|
-
address private _stakingOwner;
|
96
72
|
|
97
73
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
98
|
-
|
99
|
-
|
100
|
-
// TODO check where/why this is used
|
101
|
-
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
74
|
+
uint256 _releases;
|
102
75
|
|
103
|
-
VersionPart private _initial;// first active version
|
104
76
|
VersionPart internal _latest; // latest active version
|
105
77
|
VersionPart internal _next; // version to create and activate
|
106
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
107
78
|
|
108
79
|
uint256 internal _registeredServices;
|
109
80
|
uint256 internal _servicesToRegister;
|
@@ -121,21 +92,29 @@ contract ReleaseRegistry is
|
|
121
92
|
_registry = registry;
|
122
93
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
123
94
|
|
124
|
-
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
125
95
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
96
|
}
|
127
97
|
|
128
|
-
/// @dev
|
98
|
+
/// @dev sets previous release into SKIPPED state if it was created but not activated
|
129
99
|
/// sets next release into state SCHEDULED
|
130
100
|
function createNextRelease()
|
131
101
|
external
|
132
102
|
restricted() // GIF_ADMIN_ROLE
|
133
103
|
returns(VersionPart)
|
134
104
|
{
|
135
|
-
|
105
|
+
VersionPart version = _next;
|
106
|
+
|
107
|
+
if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
|
108
|
+
_releaseInfo[version].state = SKIPPED();
|
109
|
+
}
|
110
|
+
|
111
|
+
version = VersionPartLib.toVersionPart(version.toInt() + 1);
|
112
|
+
|
113
|
+
_next = version;
|
114
|
+
_releaseInfo[version].version = version;
|
115
|
+
_releaseInfo[version].state = getInitialState(RELEASE());
|
136
116
|
_servicesToRegister = 0;
|
137
117
|
_registeredServices = 0;
|
138
|
-
_state[_next] = getInitialState(RELEASE());
|
139
118
|
|
140
119
|
return _next;
|
141
120
|
}
|
@@ -147,182 +126,163 @@ contract ReleaseRegistry is
|
|
147
126
|
external
|
148
127
|
restricted() // GIF_MANAGER_ROLE
|
149
128
|
returns(
|
150
|
-
address
|
151
|
-
VersionPart
|
129
|
+
address releaseAuthority,
|
130
|
+
VersionPart releaseVersion,
|
152
131
|
bytes32 releaseSalt
|
153
132
|
)
|
154
133
|
{
|
155
|
-
|
156
|
-
|
134
|
+
releaseVersion = _next;
|
135
|
+
|
136
|
+
// release can transition into DEPLOYING state
|
137
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
|
138
|
+
|
139
|
+
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
157
140
|
|
141
|
+
releaseAuthority = _admin.authority();
|
142
|
+
releaseSalt = salt;
|
158
143
|
// ensures unique salt
|
159
144
|
// TODO CreateX have clones capability also
|
160
145
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
161
|
-
releaseSalt = keccak256(
|
146
|
+
/*releaseSalt = keccak256(
|
162
147
|
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
|
-
}
|
148
|
+
bytes32(releaseVersion.toInt()),
|
149
|
+
salt));*/
|
190
150
|
|
191
151
|
_servicesToRegister = serviceDomainsCount;
|
192
|
-
|
152
|
+
_releaseInfo[releaseVersion].state = DEPLOYING();
|
153
|
+
_releaseInfo[releaseVersion].salt = releaseSalt;
|
154
|
+
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
155
|
+
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
156
|
+
//_releaseInfo[releaseVersion].authority = releaseAuthority;
|
193
157
|
|
194
|
-
emit LogReleaseCreation(
|
158
|
+
emit LogReleaseCreation(releaseVersion, releaseSalt);
|
195
159
|
}
|
196
160
|
|
197
|
-
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
198
161
|
function registerService(IService service)
|
199
162
|
external
|
200
163
|
restricted // GIF_MANAGER_ROLE
|
201
164
|
returns(NftId nftId)
|
202
165
|
{
|
203
166
|
VersionPart releaseVersion = _next;
|
204
|
-
StateId state = _state[releaseVersion];
|
205
|
-
|
206
|
-
// verify release in state DEPLOYING
|
207
|
-
if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
|
208
|
-
// TOOD name must represent failed state transition
|
209
|
-
revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
|
210
|
-
}
|
211
167
|
|
212
|
-
|
168
|
+
// release can transition to DEPLOYED state
|
169
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
213
170
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
}
|
171
|
+
address releaseAuthority = _admin.authority();
|
172
|
+
IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
|
173
|
+
ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
|
218
174
|
|
219
|
-
// service can work with release
|
175
|
+
// service can work with release registry and release version
|
220
176
|
(
|
221
177
|
IRegistry.ObjectInfo memory info,
|
222
178
|
ObjectType serviceDomain,
|
223
179
|
VersionPart serviceVersion
|
224
|
-
|
180
|
+
//,string memory serviceName
|
181
|
+
) = _verifyService(
|
182
|
+
service,
|
183
|
+
releaseAuthority,
|
184
|
+
releaseVersion,
|
185
|
+
expectedDomain
|
186
|
+
);
|
187
|
+
|
188
|
+
//_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
|
189
|
+
//_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
190
|
+
//_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
|
191
|
+
|
192
|
+
_registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
|
225
193
|
|
226
|
-
//
|
227
|
-
|
228
|
-
|
229
|
-
revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
|
194
|
+
// release fully deployed
|
195
|
+
if(_servicesToRegister == _registeredServices) {
|
196
|
+
_releaseInfo[releaseVersion].state = DEPLOYED();
|
230
197
|
}
|
231
198
|
|
232
|
-
//
|
233
|
-
|
234
|
-
service.linkToRegisteredNftId();
|
235
|
-
_registeredServices++;
|
199
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
200
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
236
201
|
|
237
202
|
// setup service authorization
|
238
203
|
_admin.authorizeService(
|
239
|
-
|
240
|
-
service
|
241
|
-
|
242
|
-
|
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
|
-
}
|
249
|
-
|
204
|
+
serviceAuth,
|
205
|
+
service,
|
206
|
+
serviceDomain,
|
207
|
+
releaseVersion);
|
250
208
|
|
209
|
+
// register service with registry
|
210
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
211
|
+
service.linkToRegisteredNftId();
|
212
|
+
}
|
213
|
+
// TODO return activated version
|
251
214
|
function activateNextRelease()
|
252
215
|
external
|
253
216
|
restricted // GIF_ADMIN_ROLE
|
254
217
|
{
|
255
218
|
VersionPart version = _next;
|
256
|
-
StateId state = _state[version];
|
257
|
-
StateId newState = ACTIVE();
|
258
219
|
|
259
|
-
//
|
260
|
-
|
261
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
262
|
-
}
|
220
|
+
// release can transition to ACTIVE state
|
221
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
|
263
222
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
223
|
+
_latest = version;
|
224
|
+
_releases++;
|
225
|
+
_releaseInfo[version].state = ACTIVE();
|
226
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
227
|
+
|
228
|
+
// grant special roles for registry/staking/pool services
|
229
|
+
// this will enable access to core contracts functions
|
268
230
|
|
269
|
-
//
|
231
|
+
// registry service MUST be registered for each release
|
270
232
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
271
233
|
if(service == address(0)) {
|
272
|
-
revert
|
234
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(version);
|
273
235
|
}
|
274
236
|
|
275
|
-
|
276
|
-
_state[version] = newState;
|
237
|
+
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
277
238
|
|
278
|
-
|
279
|
-
|
239
|
+
service = _registry.getServiceAddress(STAKING(), version);
|
240
|
+
if(service != address(0)) {
|
241
|
+
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
242
|
+
}
|
243
|
+
|
244
|
+
service = _registry.getServiceAddress(POOL(), version);
|
245
|
+
if(service != address(0)) {
|
246
|
+
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
247
|
+
}
|
248
|
+
|
249
|
+
// TODO may run out of gas
|
250
|
+
// TODO test how many service can be locked in one transaction
|
251
|
+
// -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
|
252
|
+
_setReleaseLocked(version, false);
|
280
253
|
|
281
254
|
emit LogReleaseActivation(version);
|
282
255
|
}
|
283
256
|
|
284
257
|
/// @dev stop all operations with release services
|
285
258
|
function pauseRelease(VersionPart version)
|
286
|
-
external
|
259
|
+
external
|
287
260
|
restricted // GIF_ADMIN_ROLE
|
288
261
|
{
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
// verify release in state ACTIVE
|
293
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
294
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
295
|
-
}
|
296
|
-
|
297
|
-
// TODO come up with a substitute
|
298
|
-
//_releaseAccessManager[version].disable();
|
262
|
+
// release can transition to PAUSED state
|
263
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
|
299
264
|
|
300
|
-
|
265
|
+
_releaseInfo[version].state = PAUSED();
|
301
266
|
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
302
267
|
|
268
|
+
_setReleaseLocked(version, true);
|
269
|
+
|
303
270
|
emit LogReleaseDisabled(version);
|
304
271
|
}
|
305
272
|
|
306
|
-
// TODO consider revert if some delay is expired -> becomes disabled automatically
|
307
273
|
/// @dev resume operations with release services
|
308
274
|
function unpauseRelease(VersionPart version)
|
309
275
|
external
|
310
276
|
restricted // GIF_ADMIN_ROLE
|
311
277
|
{
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
// verify release in state PAUSED
|
316
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
317
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
318
|
-
}
|
319
|
-
|
320
|
-
// TODO come up with a substitute
|
321
|
-
// _releaseAccessManager[version].enable();
|
278
|
+
// release can transition to ACTIVE state
|
279
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
|
322
280
|
|
323
|
-
|
281
|
+
_releaseInfo[version].state = ACTIVE();
|
324
282
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
325
283
|
|
284
|
+
_setReleaseLocked(version, false);
|
285
|
+
|
326
286
|
emit LogReleaseEnabled(version);
|
327
287
|
}
|
328
288
|
|
@@ -336,19 +296,18 @@ contract ReleaseRegistry is
|
|
336
296
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
337
297
|
}
|
338
298
|
|
339
|
-
function isActiveRegistryService(address service) external view returns(bool) {
|
340
|
-
VersionPart version = _releaseVersionByAddress[service];
|
341
|
-
return isActiveRelease(version);
|
342
|
-
}
|
343
|
-
|
344
299
|
function isActiveRelease(VersionPart version) public view returns(bool) {
|
345
|
-
return
|
300
|
+
return _releaseInfo[version].state == ACTIVE();
|
346
301
|
}
|
347
302
|
|
348
303
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
349
304
|
return _releaseInfo[version];
|
350
305
|
}
|
351
306
|
|
307
|
+
function releases() external view returns (uint) {
|
308
|
+
return _releases;
|
309
|
+
}
|
310
|
+
|
352
311
|
function getNextVersion() public view returns(VersionPart) {
|
353
312
|
return _next;
|
354
313
|
}
|
@@ -357,12 +316,8 @@ contract ReleaseRegistry is
|
|
357
316
|
return _latest;
|
358
317
|
}
|
359
318
|
|
360
|
-
function getInitialVersion() external view returns(VersionPart) {
|
361
|
-
return _initial;
|
362
|
-
}
|
363
|
-
|
364
319
|
function getState(VersionPart version) external view returns (StateId stateId) {
|
365
|
-
return
|
320
|
+
return _releaseInfo[version].state;
|
366
321
|
}
|
367
322
|
|
368
323
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
@@ -374,7 +329,7 @@ contract ReleaseRegistry is
|
|
374
329
|
view
|
375
330
|
returns (IServiceAuthorization serviceAuthorization)
|
376
331
|
{
|
377
|
-
return
|
332
|
+
return _releaseInfo[version].auth;
|
378
333
|
}
|
379
334
|
|
380
335
|
function getRegistryAdmin() external view returns (address) {
|
@@ -389,7 +344,61 @@ contract ReleaseRegistry is
|
|
389
344
|
|
390
345
|
//--- private functions ----------------------------------------------------//
|
391
346
|
|
392
|
-
|
347
|
+
// close / open service targets instead of revoking / granting roles
|
348
|
+
function _setReleaseLocked(VersionPart version, bool locked)
|
349
|
+
private
|
350
|
+
{
|
351
|
+
address service;
|
352
|
+
ObjectType domain;
|
353
|
+
IServiceAuthorization auth = _releaseInfo[version].auth;
|
354
|
+
|
355
|
+
ObjectType[] memory domains = auth.getServiceDomains();
|
356
|
+
for(uint idx = 0; idx < domains.length; idx++)
|
357
|
+
{
|
358
|
+
domain = domains[idx];
|
359
|
+
service = _registry.getServiceAddress(domain, version);
|
360
|
+
assert(service != address(0));
|
361
|
+
|
362
|
+
_admin.setServiceLocked(IService(service), locked);
|
363
|
+
}
|
364
|
+
|
365
|
+
// TODO add check for active/disabled release to core contracts functions interacting with releases
|
366
|
+
}
|
367
|
+
|
368
|
+
function _verifyServiceAuthorization(
|
369
|
+
IServiceAuthorization serviceAuthorization,
|
370
|
+
VersionPart releaseVersion,
|
371
|
+
bytes32 salt
|
372
|
+
)
|
373
|
+
private
|
374
|
+
view
|
375
|
+
returns (uint256 serviceDomainsCount)
|
376
|
+
{
|
377
|
+
// authorization contract supports IServiceAuthorization interface
|
378
|
+
if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
|
379
|
+
revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
|
380
|
+
}
|
381
|
+
|
382
|
+
// authorizaions contract version matches with release version
|
383
|
+
VersionPart authVersion = serviceAuthorization.getRelease();
|
384
|
+
if (releaseVersion != authVersion) {
|
385
|
+
revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
|
386
|
+
}
|
387
|
+
|
388
|
+
// sanity check to ensure service domain list is not empty
|
389
|
+
serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
390
|
+
if (serviceDomainsCount == 0) {
|
391
|
+
revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
|
392
|
+
}
|
393
|
+
}
|
394
|
+
|
395
|
+
// TODO get service names
|
396
|
+
function _verifyService(
|
397
|
+
IService service,
|
398
|
+
address expectedAuthority,
|
399
|
+
VersionPart expectedVersion,
|
400
|
+
ObjectType expectedDomain
|
401
|
+
)
|
393
402
|
internal
|
394
403
|
view
|
395
404
|
returns(
|
@@ -410,22 +419,25 @@ contract ReleaseRegistry is
|
|
410
419
|
|
411
420
|
_verifyServiceInfo(service, serviceInfo, owner);
|
412
421
|
|
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
422
|
if(serviceAuthority != expectedAuthority) {
|
418
|
-
revert
|
423
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
419
424
|
service,
|
420
425
|
serviceAuthority,
|
421
426
|
expectedAuthority);
|
422
427
|
}
|
423
428
|
|
424
|
-
if(serviceVersion !=
|
425
|
-
revert
|
429
|
+
if(serviceVersion != expectedVersion) {
|
430
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
426
431
|
service,
|
427
432
|
serviceVersion,
|
428
|
-
|
433
|
+
expectedVersion);
|
434
|
+
}
|
435
|
+
|
436
|
+
if(serviceDomain != expectedDomain) {
|
437
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
438
|
+
service,
|
439
|
+
expectedDomain,
|
440
|
+
serviceDomain);
|
429
441
|
}
|
430
442
|
}
|
431
443
|
|
@@ -439,7 +451,7 @@ contract ReleaseRegistry is
|
|
439
451
|
view
|
440
452
|
{
|
441
453
|
if(info.objectAddress != address(service)) {
|
442
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
454
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
443
455
|
}
|
444
456
|
|
445
457
|
if(info.isInterceptor != false) { // service is never interceptor
|
@@ -472,10 +484,9 @@ contract ReleaseRegistry is
|
|
472
484
|
if (registryAddress == address(0)) {
|
473
485
|
return false;
|
474
486
|
}
|
475
|
-
// TODO try catch and return false in case of revert
|
476
|
-
// or just panic
|
487
|
+
// TODO try catch and return false in case of revert or just panic
|
477
488
|
// check if contract returns a zero nft id for its own address
|
478
|
-
if (IRegistry(registryAddress).
|
489
|
+
if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
|
479
490
|
return false;
|
480
491
|
}
|
481
492
|
|
@@ -2,14 +2,12 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {
|
5
|
-
ALL, REGISTRY,
|
5
|
+
ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
|
6
6
|
} from "../../contracts/type/ObjectType.sol";
|
7
7
|
|
8
|
-
import {ComponentService} from "../shared/ComponentService.sol";
|
9
8
|
import {IAccess} from "../authorization/IAccess.sol";
|
10
9
|
import {IBundleService} from "../pool/IBundleService.sol";
|
11
10
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
12
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
13
11
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
12
|
import {IPoolService} from "../pool/IPoolService.sol";
|
15
13
|
import {IStakingService} from "../staking/IStakingService.sol";
|
@@ -21,8 +19,8 @@ contract ServiceAuthorizationV3
|
|
21
19
|
is ServiceAuthorization
|
22
20
|
{
|
23
21
|
|
24
|
-
constructor(
|
25
|
-
ServiceAuthorization(commitHash)
|
22
|
+
constructor(bytes memory commitHash)
|
23
|
+
ServiceAuthorization(commitHash, 3)
|
26
24
|
{}
|
27
25
|
|
28
26
|
function _setupDomains()
|
@@ -39,9 +37,9 @@ contract ServiceAuthorizationV3
|
|
39
37
|
_authorizeDomain(POOL(), address(8));
|
40
38
|
_authorizeDomain(ORACLE(), address(9));
|
41
39
|
_authorizeDomain(PRODUCT(), address(10));
|
42
|
-
_authorizeDomain(
|
43
|
-
_authorizeDomain(
|
44
|
-
_authorizeDomain(
|
40
|
+
_authorizeDomain(POLICY(), address(11));
|
41
|
+
_authorizeDomain(CLAIM(), address(12));
|
42
|
+
_authorizeDomain(APPLICATION(), address(13));
|
45
43
|
}
|
46
44
|
|
47
45
|
|
@@ -163,6 +161,7 @@ contract ServiceAuthorizationV3
|
|
163
161
|
|
164
162
|
functions = _authorizeForService(DISTRIBUTION(), POLICY());
|
165
163
|
_authorize(functions, IDistributionService.processSale.selector, "processSale");
|
164
|
+
_authorize(functions, IDistributionService.processReferral.selector, "processReferral");
|
166
165
|
}
|
167
166
|
|
168
167
|
|
@@ -175,11 +174,10 @@ contract ServiceAuthorizationV3
|
|
175
174
|
functions = _authorizeForService(POOL(), POLICY());
|
176
175
|
_authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
|
177
176
|
_authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
|
178
|
-
_authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
|
179
177
|
_authorize(functions, IPoolService.processSale.selector, "processSale");
|
180
178
|
|
181
179
|
functions = _authorizeForService(POOL(), CLAIM());
|
182
|
-
_authorize(functions, IPoolService.
|
180
|
+
_authorize(functions, IPoolService.processPayout.selector, "processPayout");
|
183
181
|
}
|
184
182
|
|
185
183
|
|