@etherisc/gif-next 0.0.2-f8e07c7-917 → 0.0.2-f946ccd-184
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
- 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 +0 -19
- 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/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 +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -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 +24 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +24 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -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 +1712 -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 +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -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 +97 -100
- 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 +238 -123
- 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 +215 -219
- 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 +2 -2
- 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 +32 -238
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +0 -37
- 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 +0 -222
- 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 +36 -284
- 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 +396 -163
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +26 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +26 -280
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -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 +3 -225
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -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 +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -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 +0 -37
- 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 +372 -316
- 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 +118 -265
- 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 +3 -225
- 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 +221 -21
- 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 +419 -82
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
- 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 +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +0 -211
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +132 -199
- 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 +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- 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 +14 -46
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
- 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 +27 -27
- 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 +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- 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 -6
- 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 +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -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 +37 -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 +2 -2
- 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 +7 -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 +2 -2
- 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 +2 -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 +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -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 +25 -24
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +2 -1
- package/contracts/distribution/Distribution.sol +22 -11
- package/contracts/distribution/DistributionService.sol +73 -25
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +6 -1
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +324 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +35 -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 +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +62 -39
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +4 -7
- package/contracts/oracle/OracleService.sol +9 -6
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +8 -2
- package/contracts/pool/BundleService.sol +184 -30
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +7 -0
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +39 -24
- package/contracts/pool/PoolService.sol +157 -85
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +43 -26
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/ClaimService.sol +208 -78
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +31 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +0 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +370 -194
- 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 +67 -34
- 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 +49 -15
- package/contracts/registry/Registry.sol +321 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +2 -2
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +12 -8
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +23 -29
- package/contracts/shared/ComponentService.sol +51 -32
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +5 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +4 -4
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +14 -58
- 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 -27
- package/contracts/staking/StakingManager.sol +8 -6
- 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 +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +1 -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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/contracts/product/ProductServiceManager.sol +0 -39
@@ -3,12 +3,12 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
-
|
7
|
-
import {
|
6
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
8
8
|
|
9
9
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
10
|
-
import {VersionPart} from "../type/Version.sol";
|
11
|
-
import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
10
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
11
|
+
import {ObjectType, ObjectTypeLib, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
12
12
|
|
13
13
|
import {ChainNft} from "./ChainNft.sol";
|
14
14
|
import {IRegistry} from "./IRegistry.sol";
|
@@ -17,30 +17,60 @@ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
|
17
17
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
18
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
19
19
|
|
20
|
-
|
20
|
+
/// @dev IMPORTANT
|
21
21
|
// Each NFT minted by registry is accosiated with:
|
22
22
|
// 1) NFT owner
|
23
23
|
// 2) registred contract OR object stored in registered (parent) contract
|
24
|
-
//
|
25
|
-
// 1) IService address by
|
26
|
-
// 2)
|
27
|
-
// 3)
|
28
|
-
// 4)
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
// Five registration flows:
|
25
|
+
// 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
|
26
|
+
// 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
27
|
+
// 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
|
28
|
+
// 4) registerWithCustomType() -> registers IRegisterable address with custom type by IService
|
29
|
+
// 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet.
|
30
|
+
// Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
|
31
|
+
|
32
|
+
/// @dev Chain Registry contract implementing IRegistry.
|
33
|
+
/// IRegistry for method details.
|
32
34
|
contract Registry is
|
33
|
-
|
35
|
+
Initializable,
|
36
|
+
AccessManaged,
|
34
37
|
IRegistry
|
35
38
|
{
|
36
|
-
|
39
|
+
/// @dev Protocol NFT ID
|
40
|
+
NftId public immutable PROTOCOL_NFT_ID;
|
41
|
+
|
42
|
+
/// @dev Gobal registry NFT ID
|
43
|
+
NftId public immutable GLOBAL_REGISTRY_NFT_ID;
|
44
|
+
|
45
|
+
/// @dev Gobal registry address on mainnet.
|
46
|
+
address public immutable GLOBAL_REGISTRY_ADDRESS;
|
47
|
+
|
48
|
+
/// @dev Registry NFT ID
|
49
|
+
NftId public immutable REGISTRY_NFT_ID;
|
50
|
+
|
51
|
+
/// @dev Deployer address that authorizes the initializer of this contract.
|
52
|
+
address public immutable DEPLOYER;
|
53
|
+
|
54
|
+
/// @dev Registry admin contract for this registry.
|
55
|
+
RegistryAdmin public immutable ADMIN;
|
56
|
+
|
57
|
+
/// @dev Chain NFT contract that keeps track of the ownership of all registered objects.
|
58
|
+
ChainNft public immutable CHAIN_NFT;
|
59
|
+
|
60
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
37
61
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
38
62
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
39
63
|
string public constant EMPTY_URI = "";
|
40
64
|
|
65
|
+
/// @dev keep track of different registries on different chains
|
66
|
+
mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
|
67
|
+
uint256[] private _chainId;
|
68
|
+
|
69
|
+
/// @dev keep track of object info and address reverse lookup
|
41
70
|
mapping(NftId nftId => ObjectInfo info) private _info;
|
42
71
|
mapping(address object => NftId nftId) private _nftIdByAddress;
|
43
72
|
|
73
|
+
/// @dev keep track of service addresses by version and domain
|
44
74
|
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
45
75
|
|
46
76
|
mapping(ObjectType objectType => bool) private _coreTypes;
|
@@ -51,57 +81,46 @@ contract Registry is
|
|
51
81
|
mapping(ObjectType objectType => mapping(
|
52
82
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
53
83
|
|
54
|
-
|
55
|
-
ChainNft public immutable _chainNft;
|
56
|
-
|
57
|
-
NftId public immutable _protocolNftId;
|
58
|
-
NftId public immutable _registryNftId;
|
59
|
-
NftId public _stakingNftId;
|
60
|
-
|
61
|
-
address public _tokenRegistryAddress;
|
62
|
-
address public _stakingAddress;
|
63
|
-
ReleaseRegistry public _releaseRegistry;
|
64
|
-
|
65
|
-
// TODO
|
66
|
-
// 1). Registry and ReleaseRegistry must be treated as whole single entity.
|
67
|
-
// But current limitations of EVM does not allow it -> require it to be splitted
|
68
|
-
// 2). Keep onlyReleaseRegistry modifier
|
69
|
-
// 3). Delete onlyRegistryService in favor of restricted
|
70
|
-
// 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
|
71
|
-
modifier onlyRegistryService() {
|
72
|
-
if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
|
73
|
-
revert ErrorRegistryCallerNotRegistryService();
|
74
|
-
}
|
75
|
-
_;
|
76
|
-
}
|
84
|
+
NftId private _stakingNftId;
|
77
85
|
|
86
|
+
ReleaseRegistry private _releaseRegistry;
|
87
|
+
address private _tokenRegistryAddress;
|
88
|
+
address private _stakingAddress;
|
78
89
|
|
79
|
-
modifier
|
80
|
-
if(msg.sender !=
|
81
|
-
revert
|
90
|
+
modifier onlyDeployer() {
|
91
|
+
if (msg.sender != DEPLOYER) {
|
92
|
+
revert ErrorRegistryCallerNotDeployer();
|
82
93
|
}
|
83
94
|
_;
|
84
95
|
}
|
85
96
|
|
97
|
+
// TODO when create2 strategy is added to ignition:
|
98
|
+
// 1. move globalRegistry arg out from constructor into initialize()
|
99
|
+
// 2. add testRegistry_deployChainRegistryAtGlobalRegistryAddress
|
86
100
|
/// @dev Creates the registry contract and populates it with the protocol and registry objects.
|
87
101
|
/// Internally deploys the ChainNft contract.
|
88
|
-
constructor(RegistryAdmin admin)
|
89
|
-
|
102
|
+
constructor(RegistryAdmin admin, address globalRegistry)
|
103
|
+
AccessManaged(admin.authority())
|
90
104
|
{
|
91
|
-
|
105
|
+
DEPLOYER = msg.sender;
|
106
|
+
ADMIN = admin;
|
107
|
+
GLOBAL_REGISTRY_ADDRESS = _getGlobalRegistryAddress(globalRegistry);
|
108
|
+
|
92
109
|
// deploy NFT
|
93
|
-
|
110
|
+
CHAIN_NFT = new ChainNft(address(this));
|
111
|
+
GLOBAL_REGISTRY_NFT_ID = NftIdLib.toNftId(
|
112
|
+
CHAIN_NFT.GLOBAL_REGISTRY_ID());
|
94
113
|
|
95
114
|
// initial registry setup
|
96
|
-
|
97
|
-
|
115
|
+
PROTOCOL_NFT_ID = _registerProtocol();
|
116
|
+
REGISTRY_NFT_ID = _registerRegistry();
|
98
117
|
|
99
118
|
// set object types and object parent relations
|
100
119
|
_setupValidCoreTypesAndCombinations();
|
101
120
|
}
|
102
121
|
|
103
122
|
|
104
|
-
/// @dev Wires release registry and
|
123
|
+
/// @dev Wires release registry, token registry and staking contract to this registry.
|
105
124
|
/// MUST be called by release registry.
|
106
125
|
function initialize(
|
107
126
|
address releaseRegistry,
|
@@ -110,40 +129,64 @@ contract Registry is
|
|
110
129
|
)
|
111
130
|
external
|
112
131
|
initializer()
|
132
|
+
onlyDeployer()
|
113
133
|
{
|
134
|
+
// store links to supporting contracts
|
114
135
|
_releaseRegistry = ReleaseRegistry(releaseRegistry);
|
115
136
|
_tokenRegistryAddress = tokenRegistry;
|
116
137
|
_stakingAddress = staking;
|
117
138
|
|
139
|
+
// register staking contract
|
118
140
|
_stakingNftId = _registerStaking();
|
119
141
|
}
|
120
142
|
|
121
143
|
/// @inheritdoc IRegistry
|
122
|
-
function
|
144
|
+
function registerRegistry(
|
145
|
+
NftId nftId,
|
146
|
+
uint256 chainId,
|
147
|
+
address registryAddress
|
148
|
+
)
|
123
149
|
external
|
124
|
-
|
125
|
-
returns(NftId nftId)
|
150
|
+
restricted()
|
126
151
|
{
|
127
|
-
|
128
|
-
|
152
|
+
// registration of chain registries only allowed on mainnet
|
153
|
+
if (block.chainid != 1) {
|
154
|
+
revert ErrorRegistryNotOnMainnet(block.chainid);
|
155
|
+
}
|
129
156
|
|
130
|
-
//
|
131
|
-
if(
|
132
|
-
|
133
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
134
|
-
}
|
157
|
+
// registry chain id is not zero
|
158
|
+
if(chainId == 0) {
|
159
|
+
revert ErrorRegistryChainRegistryChainIdZero(nftId);
|
135
160
|
}
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
}
|
161
|
+
|
162
|
+
// registry address is not zero
|
163
|
+
if (registryAddress == address(0)) {
|
164
|
+
revert ErrorRegistryChainRegistryAddressZero(nftId, chainId);
|
141
165
|
}
|
142
166
|
|
143
|
-
|
144
|
-
|
167
|
+
// registry nft id matches registry chain id
|
168
|
+
uint256 expectedRegistryId = CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID, chainId);
|
169
|
+
if (nftId != NftIdLib.toNftId(expectedRegistryId)) {
|
170
|
+
revert ErrorRegistryChainRegistryNftIdInvalid(nftId, chainId);
|
171
|
+
}
|
172
|
+
|
173
|
+
emit LogChainRegistryRegistration(nftId, chainId, registryAddress);
|
145
174
|
|
175
|
+
_registerRegistryForNft(
|
176
|
+
chainId,
|
177
|
+
ObjectInfo({
|
178
|
+
nftId: nftId,
|
179
|
+
parentNftId: REGISTRY_NFT_ID,
|
180
|
+
objectType: REGISTRY(),
|
181
|
+
isInterceptor: false,
|
182
|
+
objectAddress: registryAddress,
|
183
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
184
|
+
data: ""
|
185
|
+
}),
|
186
|
+
false); // do not update address lookup for objects on a different chain
|
187
|
+
}
|
146
188
|
|
189
|
+
// TODO limit service owner to registry admin?
|
147
190
|
/// @inheritdoc IRegistry
|
148
191
|
function registerService(
|
149
192
|
ObjectInfo memory info,
|
@@ -151,51 +194,78 @@ contract Registry is
|
|
151
194
|
ObjectType domain
|
152
195
|
)
|
153
196
|
external
|
154
|
-
|
197
|
+
restricted()
|
155
198
|
returns(NftId nftId)
|
156
199
|
{
|
157
|
-
//
|
200
|
+
// service address is defined
|
158
201
|
address service = info.objectAddress;
|
159
202
|
if(service == address(0)) {
|
160
203
|
revert ErrorRegistryServiceAddressZero();
|
161
204
|
}
|
162
205
|
|
163
|
-
//
|
206
|
+
// version is defined
|
164
207
|
if(version.eqz()) {
|
165
|
-
revert ErrorRegistryServiceVersionZero();
|
208
|
+
revert ErrorRegistryServiceVersionZero(service);
|
166
209
|
}
|
167
|
-
|
168
|
-
// check domain is defined
|
210
|
+
// service domain is defined
|
169
211
|
if(domain.eqz()) {
|
170
|
-
revert
|
212
|
+
revert ErrorRegistryServiceDomainZero(service, version);
|
171
213
|
}
|
172
214
|
|
173
|
-
//
|
174
|
-
if(_service[version][domain] != address(0)) {
|
175
|
-
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
176
|
-
}
|
177
|
-
|
178
|
-
// check service has proper type
|
215
|
+
// service has proper type
|
179
216
|
if(info.objectType != SERVICE()) {
|
180
217
|
revert ErrorRegistryNotService(service, info.objectType);
|
181
218
|
}
|
182
219
|
|
183
|
-
//
|
184
|
-
if(info.parentNftId !=
|
185
|
-
revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
|
186
|
-
}
|
220
|
+
// service parent has registry type
|
221
|
+
if(info.parentNftId != REGISTRY_NFT_ID) {
|
222
|
+
revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
|
223
|
+
}
|
224
|
+
|
225
|
+
// service has not already been registered
|
226
|
+
if(_service[version][domain] != address(0)) {
|
227
|
+
revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
|
228
|
+
}
|
187
229
|
|
188
230
|
_service[version][domain] = service;
|
189
|
-
nftId = _register(info);
|
190
231
|
|
191
232
|
emit LogServiceRegistration(version, domain);
|
233
|
+
|
234
|
+
nftId = _register(info);
|
235
|
+
}
|
236
|
+
|
237
|
+
|
238
|
+
/// @inheritdoc IRegistry
|
239
|
+
function register(ObjectInfo memory info)
|
240
|
+
external
|
241
|
+
restricted()
|
242
|
+
returns(NftId nftId)
|
243
|
+
{
|
244
|
+
address objectAddress = info.objectAddress;
|
245
|
+
ObjectType objectType = info.objectType;
|
246
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
247
|
+
|
248
|
+
// check type combinations for core objects
|
249
|
+
if(objectAddress == address(0)) {
|
250
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
251
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
252
|
+
}
|
253
|
+
}
|
254
|
+
// check type combinations for contract objects
|
255
|
+
else {
|
256
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
257
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
258
|
+
}
|
259
|
+
}
|
260
|
+
|
261
|
+
nftId = _register(info);
|
192
262
|
}
|
193
263
|
|
194
264
|
|
195
265
|
/// @inheritdoc IRegistry
|
196
266
|
function registerWithCustomType(ObjectInfo memory info)
|
197
267
|
external
|
198
|
-
|
268
|
+
restricted()
|
199
269
|
returns(NftId nftId)
|
200
270
|
{
|
201
271
|
ObjectType objectType = info.objectType;
|
@@ -206,19 +276,21 @@ contract Registry is
|
|
206
276
|
}
|
207
277
|
|
208
278
|
if(
|
279
|
+
objectType == ObjectTypeLib.zero() ||
|
280
|
+
parentType == ObjectTypeLib.zero() ||
|
209
281
|
parentType == PROTOCOL() ||
|
210
282
|
parentType == SERVICE()
|
211
283
|
) {
|
212
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
284
|
+
revert ErrorRegistryTypesCombinationInvalid(info.objectAddress, objectType, parentType);
|
213
285
|
}
|
214
286
|
|
215
|
-
_register(info);
|
287
|
+
nftId = _register(info);
|
216
288
|
}
|
217
289
|
|
218
290
|
|
219
291
|
/// @dev earliest GIF major version
|
220
292
|
function getInitialVersion() external view returns (VersionPart) {
|
221
|
-
return _releaseRegistry.
|
293
|
+
return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
|
222
294
|
}
|
223
295
|
|
224
296
|
/// @dev next GIF release version to be released
|
@@ -235,28 +307,40 @@ contract Registry is
|
|
235
307
|
return _releaseRegistry.getReleaseInfo(version);
|
236
308
|
}
|
237
309
|
|
310
|
+
function chainIds() public view returns (uint256) {
|
311
|
+
return _chainId.length;
|
312
|
+
}
|
313
|
+
|
314
|
+
function getChainId(uint256 idx) public view returns (uint256) {
|
315
|
+
return _chainId[idx];
|
316
|
+
}
|
317
|
+
|
318
|
+
function getRegistryNftId(uint256 chainId) public view returns (NftId nftId) {
|
319
|
+
return _registryNftIdByChainId[chainId];
|
320
|
+
}
|
321
|
+
|
238
322
|
function getObjectCount() external view returns (uint256) {
|
239
|
-
return
|
323
|
+
return CHAIN_NFT.totalSupply();
|
240
324
|
}
|
241
325
|
|
242
326
|
function getNftId() external view returns (NftId nftId) {
|
243
|
-
return
|
327
|
+
return REGISTRY_NFT_ID;
|
244
328
|
}
|
245
329
|
|
246
330
|
function getProtocolNftId() external view returns (NftId nftId) {
|
247
|
-
return
|
331
|
+
return PROTOCOL_NFT_ID;
|
248
332
|
}
|
249
333
|
|
250
|
-
function
|
334
|
+
function getNftIdForAddress(address object) external view returns (NftId id) {
|
251
335
|
return _nftIdByAddress[object];
|
252
336
|
}
|
253
337
|
|
254
338
|
function ownerOf(NftId nftId) public view returns (address) {
|
255
|
-
return
|
339
|
+
return CHAIN_NFT.ownerOf(nftId.toInt());
|
256
340
|
}
|
257
341
|
|
258
342
|
function ownerOf(address contractAddress) public view returns (address) {
|
259
|
-
return
|
343
|
+
return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
260
344
|
}
|
261
345
|
|
262
346
|
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
@@ -312,15 +396,15 @@ contract Registry is
|
|
312
396
|
}
|
313
397
|
|
314
398
|
function getChainNftAddress() external view override returns (address) {
|
315
|
-
return address(
|
399
|
+
return address(CHAIN_NFT);
|
316
400
|
}
|
317
401
|
|
318
402
|
function getRegistryAdminAddress() external view returns (address) {
|
319
|
-
return address(
|
403
|
+
return address(ADMIN);
|
320
404
|
}
|
321
405
|
|
322
406
|
function getAuthority() external view returns (address) {
|
323
|
-
return
|
407
|
+
return ADMIN.authority();
|
324
408
|
}
|
325
409
|
|
326
410
|
function getOwner() public view returns (address owner) {
|
@@ -344,25 +428,33 @@ contract Registry is
|
|
344
428
|
internal
|
345
429
|
returns(NftId nftId)
|
346
430
|
{
|
347
|
-
ObjectType objectType = info.objectType;
|
431
|
+
ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
|
348
432
|
bool isInterceptor = info.isInterceptor;
|
349
|
-
address objectAddress = info.objectAddress;
|
350
|
-
address owner = info.initialOwner;
|
433
|
+
address objectAddress = info.objectAddress; // do not care here, can be 0
|
434
|
+
address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
|
351
435
|
|
352
|
-
NftId parentNftId = info.parentNftId;
|
436
|
+
NftId parentNftId = info.parentNftId; // do not care here, can not be 0
|
353
437
|
ObjectInfo memory parentInfo = _info[parentNftId];
|
354
|
-
|
355
|
-
address parentAddress = parentInfo.objectAddress;
|
438
|
+
address parentAddress = parentInfo.objectAddress; // can be 0
|
356
439
|
|
357
440
|
// parent is contract -> need to check? -> check before minting
|
358
441
|
// special case: staking: to protocol possible as well
|
359
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
360
|
-
// special case: when parentNftId ==
|
361
|
-
// special case: when parentNftId ==
|
362
|
-
|
442
|
+
// NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
443
|
+
// special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
|
444
|
+
// special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
|
445
|
+
// Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
|
446
|
+
// But it MUST be registered -> parentType != 0 && parentNftId != 0
|
447
|
+
/*if(objectType != STAKE()) {
|
363
448
|
if(parentAddress == address(0)) {
|
364
449
|
revert ErrorRegistryParentAddressZero();
|
365
450
|
}
|
451
|
+
}*/
|
452
|
+
|
453
|
+
// global registry is never parent when not on mainnet
|
454
|
+
if(block.chainid != 1) {
|
455
|
+
if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
|
456
|
+
revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
|
457
|
+
}
|
366
458
|
}
|
367
459
|
|
368
460
|
address interceptorAddress = _getInterceptor(
|
@@ -372,23 +464,17 @@ contract Registry is
|
|
372
464
|
parentInfo.isInterceptor,
|
373
465
|
parentAddress);
|
374
466
|
|
375
|
-
uint256 tokenId =
|
467
|
+
uint256 tokenId = CHAIN_NFT.getNextTokenId();
|
376
468
|
nftId = NftIdLib.toNftId(tokenId);
|
377
469
|
info.nftId = nftId;
|
378
|
-
_info[nftId] = info;
|
379
|
-
|
380
|
-
if(objectAddress > address(0)) {
|
381
|
-
if(_nftIdByAddress[objectAddress].gtz()) {
|
382
|
-
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
383
|
-
}
|
384
470
|
|
385
|
-
|
386
|
-
|
471
|
+
_info[nftId] = info;
|
472
|
+
_setAddressForNftId(nftId, objectAddress);
|
387
473
|
|
388
474
|
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
389
475
|
|
390
476
|
// calls nft receiver(1) and interceptor(2)
|
391
|
-
uint256 mintedTokenId =
|
477
|
+
uint256 mintedTokenId = CHAIN_NFT.mint(
|
392
478
|
owner,
|
393
479
|
interceptorAddress,
|
394
480
|
EMPTY_URI);
|
@@ -437,105 +523,151 @@ contract Registry is
|
|
437
523
|
private
|
438
524
|
returns (NftId protocolNftId)
|
439
525
|
{
|
440
|
-
uint256 protocolId =
|
526
|
+
uint256 protocolId = CHAIN_NFT.PROTOCOL_NFT_ID();
|
441
527
|
protocolNftId = NftIdLib.toNftId(protocolId);
|
442
528
|
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
529
|
+
_registerForNft(
|
530
|
+
ObjectInfo({
|
531
|
+
nftId: protocolNftId,
|
532
|
+
parentNftId: NftIdLib.zero(),
|
533
|
+
objectType: PROTOCOL(),
|
534
|
+
isInterceptor: false,
|
535
|
+
objectAddress: address(0),
|
536
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
537
|
+
data: ""}),
|
538
|
+
true);
|
454
539
|
}
|
455
540
|
|
456
|
-
/// @dev registry
|
457
|
-
/// might also register the global registry when not on mainnet
|
541
|
+
/// @dev register this registry
|
458
542
|
function _registerRegistry()
|
459
|
-
|
543
|
+
internal
|
544
|
+
virtual
|
460
545
|
returns (NftId registryNftId)
|
461
546
|
{
|
462
|
-
|
463
|
-
registryNftId =
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
547
|
+
// initial assignment
|
548
|
+
registryNftId = GLOBAL_REGISTRY_NFT_ID;
|
549
|
+
|
550
|
+
// register global registry
|
551
|
+
_registerRegistryForNft(
|
552
|
+
1, // mainnet chain id
|
553
|
+
ObjectInfo({
|
554
|
+
nftId: GLOBAL_REGISTRY_NFT_ID,
|
555
|
+
parentNftId: PROTOCOL_NFT_ID,
|
556
|
+
objectType: REGISTRY(),
|
557
|
+
isInterceptor: false,
|
558
|
+
objectAddress: GLOBAL_REGISTRY_ADDRESS,
|
559
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
560
|
+
data: ""}),
|
561
|
+
block.chainid == 1);// update address lookup for global registry only on mainnet
|
562
|
+
|
563
|
+
// if not on mainnet: register this registry with global registry as parent
|
564
|
+
if (block.chainid != 1) {
|
565
|
+
|
566
|
+
// modify registry nft id to local registry when not on mainnet
|
567
|
+
registryNftId = NftIdLib.toNftId(
|
568
|
+
CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID));
|
569
|
+
|
570
|
+
_registerRegistryForNft(
|
571
|
+
block.chainid,
|
572
|
+
ObjectInfo({
|
573
|
+
nftId: registryNftId,
|
574
|
+
parentNftId: GLOBAL_REGISTRY_NFT_ID,
|
575
|
+
objectType: REGISTRY(),
|
576
|
+
isInterceptor: false,
|
577
|
+
objectAddress: address(this),
|
578
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
579
|
+
data: ""}),
|
580
|
+
true);
|
470
581
|
}
|
471
|
-
|
472
|
-
|
473
|
-
|
582
|
+
}
|
583
|
+
|
584
|
+
/// @dev staking registration
|
585
|
+
function _registerRegistryForNft(
|
586
|
+
uint256 chainId,
|
587
|
+
ObjectInfo memory info,
|
588
|
+
bool updateAddressLookup
|
589
|
+
)
|
590
|
+
private
|
591
|
+
{
|
592
|
+
if (!_registryNftIdByChainId[chainId].eqz()) {
|
593
|
+
revert ErrorRegistryChainRegistryAlreadyRegistered(info.nftId, chainId);
|
474
594
|
}
|
475
595
|
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
objectType: REGISTRY(),
|
480
|
-
isInterceptor: false,
|
481
|
-
objectAddress: address(this),
|
482
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
483
|
-
data: ""
|
484
|
-
});
|
596
|
+
// update registry lookup variables
|
597
|
+
_registryNftIdByChainId[chainId] = info.nftId;
|
598
|
+
_chainId.push(chainId);
|
485
599
|
|
486
|
-
|
487
|
-
|
600
|
+
// register the registry info
|
601
|
+
_registerForNft(
|
602
|
+
info,
|
603
|
+
updateAddressLookup);
|
488
604
|
}
|
489
605
|
|
490
|
-
/// @dev
|
491
|
-
function _registerGlobalRegistry()
|
492
|
-
private
|
493
|
-
{
|
494
|
-
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
495
|
-
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
496
|
-
|
497
|
-
_info[globalRegistryNftId] = ObjectInfo({
|
498
|
-
nftId: globalRegistryNftId,
|
499
|
-
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
500
|
-
objectType: REGISTRY(),
|
501
|
-
isInterceptor: false,
|
502
|
-
objectAddress: address(0),
|
503
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
504
|
-
data: ""
|
505
|
-
});
|
506
|
-
|
507
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
508
|
-
}
|
509
|
-
// depends on _registryNftId and _stakingAddress
|
606
|
+
/// @dev staking registration
|
510
607
|
function _registerStaking()
|
511
608
|
private
|
512
609
|
returns (NftId stakingNftId)
|
513
610
|
{
|
514
611
|
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
515
|
-
uint256 stakingId =
|
612
|
+
uint256 stakingId = CHAIN_NFT.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
516
613
|
stakingNftId = NftIdLib.toNftId(stakingId);
|
517
614
|
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
615
|
+
_registerForNft(
|
616
|
+
ObjectInfo({
|
617
|
+
nftId: stakingNftId,
|
618
|
+
parentNftId: REGISTRY_NFT_ID,
|
619
|
+
objectType: STAKING(),
|
620
|
+
isInterceptor: false,
|
621
|
+
objectAddress: _stakingAddress,
|
622
|
+
initialOwner: stakingOwner,
|
623
|
+
data: ""}),
|
624
|
+
true);
|
625
|
+
}
|
626
|
+
|
627
|
+
/// @dev Register the provided object info for the specified NFT ID.
|
628
|
+
function _registerForNft(
|
629
|
+
ObjectInfo memory info,
|
630
|
+
bool updateAddressLookup
|
631
|
+
)
|
632
|
+
internal
|
633
|
+
{
|
634
|
+
_info[info.nftId] = info;
|
635
|
+
|
636
|
+
if (updateAddressLookup) {
|
637
|
+
_setAddressForNftId(info.nftId, info.objectAddress);
|
638
|
+
}
|
639
|
+
|
640
|
+
// calls nft receiver
|
641
|
+
CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
|
642
|
+
}
|
643
|
+
|
644
|
+
function _setAddressForNftId(NftId nftId, address objectAddress)
|
645
|
+
internal
|
646
|
+
{
|
647
|
+
if (objectAddress != address(0)) {
|
648
|
+
if (_nftIdByAddress[objectAddress].gtz()) {
|
649
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
650
|
+
}
|
527
651
|
|
528
|
-
|
652
|
+
_nftIdByAddress[objectAddress] = nftId;
|
653
|
+
}
|
654
|
+
}
|
529
655
|
|
530
|
-
|
531
|
-
|
656
|
+
function _getGlobalRegistryAddress(address globalRegistry) internal view returns (address) {
|
657
|
+
if (block.chainid == 1) {
|
658
|
+
return address(this);
|
659
|
+
} else {
|
660
|
+
return globalRegistry;
|
661
|
+
}
|
532
662
|
}
|
533
663
|
|
534
664
|
/// @dev defines which object - parent types relations are allowed to register
|
535
665
|
/// EACH object type MUST have only one parent type across ALL mappings
|
666
|
+
// the only EXCEPTION is STAKE, can have any number of parent types
|
536
667
|
function _setupValidCoreTypesAndCombinations()
|
537
|
-
private
|
668
|
+
private
|
538
669
|
{
|
670
|
+
_coreTypes[PROTOCOL()] = true;
|
539
671
|
_coreTypes[REGISTRY()] = true;
|
540
672
|
_coreTypes[SERVICE()] = true;
|
541
673
|
_coreTypes[INSTANCE()] = true;
|
@@ -549,13 +681,7 @@ contract Registry is
|
|
549
681
|
_coreTypes[STAKING()] = true;
|
550
682
|
_coreTypes[STAKE()] = true;
|
551
683
|
|
552
|
-
//
|
553
|
-
if(block.chainid == 1) {
|
554
|
-
_coreContractCombinations[REGISTRY()][REGISTRY()] = true;
|
555
|
-
}
|
556
|
-
|
557
|
-
// contracts with registry parent
|
558
|
-
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
684
|
+
// types combinations allowed to use with register() function ONLY
|
559
685
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
560
686
|
|
561
687
|
// components with instance parent
|
@@ -564,7 +690,7 @@ contract Registry is
|
|
564
690
|
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
565
691
|
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
566
692
|
|
567
|
-
// objects with
|
693
|
+
// objects with component parents
|
568
694
|
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
569
695
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
570
696
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|