@etherisc/gif-next 0.0.2-df73b56-462 → 0.0.2-dfb8aa3-070
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/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
- 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 +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +154 -94
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +94 -58
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +136 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +80 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +81 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +156 -96
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +137 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +153 -106
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +241 -129
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -40
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +275 -77
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +72 -130
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +48 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +175 -104
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +135 -75
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +76 -53
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +89 -53
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +86 -47
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +48 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +89 -66
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +180 -82
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +76 -53
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -115
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +89 -53
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +312 -161
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +81 -41
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -33
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +145 -73
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -90
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +82 -58
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +58 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +132 -73
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -60
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +67 -47
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +149 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +145 -73
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +60 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +67 -15
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +111 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +193 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +73 -172
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +41 -29
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +121 -223
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +68 -28
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +350 -155
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +83 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +76 -53
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +55 -28
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +138 -78
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +68 -42
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +66 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +45 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/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 +28 -12
- 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 +65 -61
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +6 -16
- package/contracts/distribution/DistributionService.sol +55 -36
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +10 -10
- package/contracts/instance/IInstance.sol +4 -1
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +22 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
- package/contracts/instance/InstanceReader.sol +83 -18
- package/contracts/instance/InstanceService.sol +15 -70
- package/contracts/instance/module/IComponents.sol +6 -3
- package/contracts/instance/module/IPolicy.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +39 -29
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +75 -20
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolService.sol +21 -14
- package/contracts/pool/Pool.sol +22 -29
- package/contracts/pool/PoolService.sol +116 -80
- package/contracts/product/ApplicationService.sol +16 -4
- package/contracts/product/BasicProduct.sol +6 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +108 -69
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +3 -0
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +66 -21
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +81 -52
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +6 -3
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +21 -6
- package/contracts/registry/RegistryAdmin.sol +7 -23
- package/contracts/registry/RegistryService.sol +33 -44
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +201 -191
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
- package/contracts/shared/Component.sol +25 -28
- package/contracts/shared/ComponentService.sol +235 -131
- package/contracts/shared/ComponentVerifyingService.sol +22 -13
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +68 -27
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/PolicyHolder.sol +4 -0
- package/contracts/shared/Registerable.sol +15 -5
- package/contracts/shared/Service.sol +4 -7
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +2 -3
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +15 -15
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +1 -0
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -7,13 +7,32 @@ import {Fee} from "../type/Fee.sol";
|
|
7
7
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
8
8
|
import {IService} from "../shared/IService.sol";
|
9
9
|
import {NftId} from "../type/NftId.sol";
|
10
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
10
11
|
import {UFixed} from "../type/UFixed.sol";
|
12
|
+
import {VersionPart} from "../type/Version.sol";
|
11
13
|
|
12
14
|
/// @dev component base class
|
13
15
|
/// component examples are staking, product, distribution, pool and oracle
|
14
16
|
interface IComponentService is
|
15
17
|
IService
|
16
18
|
{
|
19
|
+
error ErrorComponentServiceNotInstanceLinkedComponent(address component);
|
20
|
+
error ErrorComponentServiceSenderNotRegistered(address sender);
|
21
|
+
error ErrorComponentServiceNotComponent(address component);
|
22
|
+
error ErrorComponentServiceTypeNotSupported(address component, ObjectType invalidType);
|
23
|
+
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
24
|
+
error ErrorComponentServiceAlreadyRegistered(address component);
|
25
|
+
error ErrorComponentServiceReleaseMismatch(address component, VersionPart componentRelease, VersionPart parentRelease);
|
26
|
+
error ErrorComponentServiceSenderNotComponentParent(NftId senderNftId, NftId compnentParentNftId);
|
27
|
+
error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
|
28
|
+
error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
|
29
|
+
|
30
|
+
error ErrorProductServiceNoDistributionExpected(NftId productNftId);
|
31
|
+
error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
|
32
|
+
error ErrorProductServiceNoOraclesExpected(NftId productNftId);
|
33
|
+
error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
|
34
|
+
error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
|
35
|
+
|
17
36
|
error ErrorComponentServiceNewWalletAddressZero();
|
18
37
|
error ErrorComponentServiceWalletAddressZero();
|
19
38
|
error ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
@@ -22,6 +41,7 @@ interface IComponentService is
|
|
22
41
|
error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
|
23
42
|
error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
|
24
43
|
|
44
|
+
event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
|
25
45
|
event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
|
26
46
|
event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
|
27
47
|
event LogComponentServiceProductFeesUpdated(NftId productNftId);
|
@@ -52,10 +72,13 @@ interface IComponentService is
|
|
52
72
|
/// @return withdrawnAmount the amount that was actually withdrawn
|
53
73
|
function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
|
54
74
|
|
75
|
+
/// @dev Registers the provided component with the product (sender)
|
76
|
+
function registerComponent(address component) external returns (NftId componentNftId);
|
77
|
+
|
55
78
|
//-------- product ------------------------------------------------------//
|
56
79
|
|
57
|
-
/// @dev
|
58
|
-
function registerProduct() external;
|
80
|
+
/// @dev Registers the specified product component for the instance (sender)
|
81
|
+
function registerProduct(address product) external returns (NftId productNftId);
|
59
82
|
|
60
83
|
function setProductFees(
|
61
84
|
Fee memory productFee, // product fee on net premium
|
@@ -67,9 +90,6 @@ interface IComponentService is
|
|
67
90
|
|
68
91
|
//-------- distribution -------------------------------------------------//
|
69
92
|
|
70
|
-
/// @dev registers the sending component as a distribution component
|
71
|
-
function registerDistribution() external;
|
72
|
-
|
73
93
|
function setDistributionFees(
|
74
94
|
Fee memory distributionFee, // distribution fee for sales that do not include commissions
|
75
95
|
Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
|
@@ -82,16 +102,8 @@ interface IComponentService is
|
|
82
102
|
function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
83
103
|
function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
84
104
|
|
85
|
-
//-------- oracle -------------------------------------------------------//
|
86
|
-
|
87
|
-
/// @dev registers the sending component as an oracle component
|
88
|
-
function registerOracle() external;
|
89
|
-
|
90
105
|
//-------- pool ---------------------------------------------------------//
|
91
106
|
|
92
|
-
/// @dev registers the sending component as a pool component
|
93
|
-
function registerPool() external;
|
94
|
-
|
95
107
|
function setPoolFees(
|
96
108
|
Fee memory poolFee, // pool fee on net premium
|
97
109
|
Fee memory stakingFee, // pool fee on staked capital from investor
|
@@ -9,19 +9,15 @@ import {IComponent} from "../shared/IComponent.sol";
|
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
10
|
import {IInstance} from "../instance/IInstance.sol";
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
12
13
|
|
13
14
|
/// @dev component base class
|
14
15
|
/// component examples are product, distribution, pool and oracle
|
15
16
|
interface IInstanceLinkedComponent is
|
16
17
|
IComponent
|
17
18
|
{
|
18
|
-
error
|
19
|
-
error
|
20
|
-
|
21
|
-
/// @dev registers this component with the registry and instance.
|
22
|
-
/// a component may only be linked once
|
23
|
-
/// only initial component owner (nft holder) is authorizes to call this function
|
24
|
-
function register() external;
|
19
|
+
error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
|
20
|
+
error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
|
25
21
|
|
26
22
|
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
27
23
|
/// only component owner (nft holder) is authorizes to call this function
|
@@ -42,8 +38,4 @@ interface IInstanceLinkedComponent is
|
|
42
38
|
/// @dev returns the initial component authorization specification.
|
43
39
|
function getAuthorization() external view returns (IAuthorization authorization);
|
44
40
|
|
45
|
-
/// @dev defines the product to which this component is linked to
|
46
|
-
/// this is only relevant for pool and distribution components
|
47
|
-
function getProductNftId() external view returns (NftId productNftId);
|
48
|
-
|
49
41
|
}
|
@@ -6,8 +6,10 @@ import {StateId} from "../type/StateId.sol";
|
|
6
6
|
|
7
7
|
interface ILifecycle {
|
8
8
|
|
9
|
-
error ErrorNoLifecycle(ObjectType objectType);
|
9
|
+
error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
|
10
|
+
error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
|
10
11
|
error ErrorInvalidStateTransition(
|
12
|
+
address contractAddress,
|
11
13
|
ObjectType objectType,
|
12
14
|
StateId fromStateId,
|
13
15
|
StateId toStateId
|
@@ -5,6 +5,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
|
5
5
|
|
6
6
|
import {IRegistryLinked} from "./IRegistryLinked.sol";
|
7
7
|
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
9
|
|
9
10
|
interface INftOwnable is
|
10
11
|
IERC165,
|
@@ -12,6 +13,7 @@ interface INftOwnable is
|
|
12
13
|
{
|
13
14
|
error ErrorNftOwnableInitialOwnerZero();
|
14
15
|
error ErrorNftOwnableNotOwner(address account);
|
16
|
+
error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
|
15
17
|
|
16
18
|
error ErrorNftOwnableAlreadyLinked(NftId nftId);
|
17
19
|
error ErrorNftOwnableContractNotRegistered(address contractAddress);
|
@@ -3,11 +3,22 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {INftOwnable} from "./INftOwnable.sol";
|
5
5
|
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
+
import {VersionPart} from "../type/Version.sol";
|
6
7
|
|
8
|
+
/// @title IRegisterable
|
9
|
+
/// @dev Marks contracts that are intended to be registered in the registry.
|
10
|
+
///
|
7
11
|
interface IRegisterable is
|
8
12
|
INftOwnable
|
9
13
|
{
|
14
|
+
/// @dev retuns the GIF release version for this contract.
|
15
|
+
/// This
|
16
|
+
function getRelease() external pure returns (VersionPart release);
|
10
17
|
|
18
|
+
/// @dev retuns the object info relevant for registering for this contract
|
19
|
+
/// IMPORTANT information returned by this function may only be used
|
20
|
+
/// before the contract is registered in the registry.
|
21
|
+
/// Once registered this information MUST only be accessed via the registry.
|
11
22
|
function getInitialInfo()
|
12
23
|
external
|
13
24
|
view
|
@@ -17,7 +17,7 @@ import {IInstance} from "../instance/IInstance.sol";
|
|
17
17
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
19
|
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
|
20
|
+
import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
22
22
|
import {RoleId, RoleIdLib} from "../type/RoleId.sol";
|
23
23
|
import {IAccess} from "../instance/module/IAccess.sol";
|
@@ -48,18 +48,6 @@ abstract contract InstanceLinkedComponent is
|
|
48
48
|
IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
|
49
49
|
}
|
50
50
|
|
51
|
-
function getInstance() public view override returns (IInstance instance) {
|
52
|
-
return _getInstanceLinkedComponentStorage()._instance;
|
53
|
-
}
|
54
|
-
|
55
|
-
function getProductNftId() public view override returns (NftId productNftId) {
|
56
|
-
return getComponentInfo().productNftId;
|
57
|
-
}
|
58
|
-
|
59
|
-
function getAuthorization() external view returns (IAuthorization authorization) {
|
60
|
-
return _getInstanceLinkedComponentStorage()._initialAuthorization;
|
61
|
-
}
|
62
|
-
|
63
51
|
/// @inheritdoc IInstanceLinkedComponent
|
64
52
|
function withdrawFees(Amount amount)
|
65
53
|
external
|
@@ -71,6 +59,16 @@ abstract contract InstanceLinkedComponent is
|
|
71
59
|
return _withdrawFees(amount);
|
72
60
|
}
|
73
61
|
|
62
|
+
/// @inheritdoc IInstanceLinkedComponent
|
63
|
+
function getInstance() public view override returns (IInstance instance) {
|
64
|
+
return _getInstanceLinkedComponentStorage()._instance;
|
65
|
+
}
|
66
|
+
|
67
|
+
/// @inheritdoc IInstanceLinkedComponent
|
68
|
+
function getAuthorization() external view returns (IAuthorization authorization) {
|
69
|
+
return _getInstanceLinkedComponentStorage()._initialAuthorization;
|
70
|
+
}
|
71
|
+
|
74
72
|
function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
|
75
73
|
assembly {
|
76
74
|
$.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
|
@@ -79,51 +77,94 @@ abstract contract InstanceLinkedComponent is
|
|
79
77
|
|
80
78
|
function _initializeInstanceLinkedComponent(
|
81
79
|
address registry,
|
82
|
-
NftId
|
80
|
+
NftId parentNftId,
|
83
81
|
string memory name,
|
84
82
|
address token,
|
85
83
|
ObjectType componentType,
|
86
84
|
IAuthorization authorization,
|
87
85
|
bool isInterceptor,
|
88
86
|
address initialOwner,
|
89
|
-
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
90
87
|
bytes memory componentData // data that will saved with the component info in the instance store
|
91
88
|
)
|
92
89
|
internal
|
93
90
|
virtual
|
94
91
|
onlyInitializing()
|
95
92
|
{
|
93
|
+
// validate registry, nft ids and get parent nft id
|
94
|
+
NftId instanceNftId = _checkAndGetInstanceNftId(
|
95
|
+
registry,
|
96
|
+
parentNftId,
|
97
|
+
componentType);
|
98
|
+
|
96
99
|
// set and check linked instance
|
97
100
|
InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
|
98
101
|
$._instance = IInstance(
|
99
|
-
IRegistry(registry).
|
100
|
-
instanceNftId).objectAddress);
|
101
|
-
|
102
|
-
if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
|
103
|
-
revert ErrorComponentNotInstance(instanceNftId);
|
104
|
-
}
|
102
|
+
IRegistry(registry).getObjectAddress(instanceNftId));
|
105
103
|
|
104
|
+
// set component specific parameters
|
106
105
|
_initializeComponent(
|
107
|
-
$._instance.authority(),
|
106
|
+
$._instance.authority(), // instance linked components need to point to instance admin
|
108
107
|
registry,
|
109
|
-
|
108
|
+
parentNftId,
|
110
109
|
name,
|
111
110
|
token,
|
112
111
|
componentType,
|
113
112
|
isInterceptor,
|
114
113
|
initialOwner,
|
115
|
-
|
114
|
+
"", // registry data
|
116
115
|
componentData);
|
117
116
|
|
118
|
-
// set
|
117
|
+
// set instance linked specific parameters
|
119
118
|
$._instanceReader = $._instance.getInstanceReader();
|
120
119
|
$._initialAuthorization = authorization;
|
121
120
|
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
122
121
|
|
122
|
+
// register interfaces
|
123
123
|
_registerInterface(type(IAccessManaged).interfaceId);
|
124
124
|
_registerInterface(type(IInstanceLinkedComponent).interfaceId);
|
125
125
|
}
|
126
126
|
|
127
|
+
|
128
|
+
function _checkAndGetInstanceNftId(
|
129
|
+
address registryAddress,
|
130
|
+
NftId parentNftId,
|
131
|
+
ObjectType componentType
|
132
|
+
)
|
133
|
+
internal
|
134
|
+
view
|
135
|
+
returns (NftId instanceNftId)
|
136
|
+
{
|
137
|
+
// if product, then parent is already instance
|
138
|
+
if (componentType == PRODUCT()) {
|
139
|
+
_checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
|
140
|
+
return parentNftId;
|
141
|
+
}
|
142
|
+
|
143
|
+
// if not product parent is product, and parent of product is instance
|
144
|
+
IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
|
145
|
+
return registry.getObjectInfo(parentNftId).parentNftId;
|
146
|
+
}
|
147
|
+
|
148
|
+
/// @dev checks the and gets registry.
|
149
|
+
/// validates registry using a provided nft id and expected object type.
|
150
|
+
function _checkAndGetRegistry(
|
151
|
+
address registryAddress,
|
152
|
+
NftId objectNftId,
|
153
|
+
ObjectType requiredType
|
154
|
+
)
|
155
|
+
internal
|
156
|
+
view
|
157
|
+
returns (IRegistry registry)
|
158
|
+
{
|
159
|
+
registry = IRegistry(registryAddress);
|
160
|
+
IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
|
161
|
+
|
162
|
+
if (info.objectType != requiredType) {
|
163
|
+
revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
|
127
168
|
/// @dev for instance linked components the wallet address stored in the instance store.
|
128
169
|
/// updating needs to go throug component service
|
129
170
|
function _setWallet(address newWallet) internal virtual override onlyOwner {
|
@@ -166,7 +207,7 @@ abstract contract InstanceLinkedComponent is
|
|
166
207
|
/// @dev returns the service address for the specified domain
|
167
208
|
/// gets address via lookup from registry using the major version form the linked instance
|
168
209
|
function _getServiceAddress(ObjectType domain) internal view returns (address service) {
|
169
|
-
VersionPart
|
170
|
-
return getRegistry().getServiceAddress(domain,
|
210
|
+
VersionPart release = _getInstanceLinkedComponentStorage()._instance.getRelease();
|
211
|
+
return getRegistry().getServiceAddress(domain, release);
|
171
212
|
}
|
172
213
|
}
|
@@ -94,7 +94,7 @@ abstract contract KeyValueStore is
|
|
94
94
|
|
95
95
|
// update state
|
96
96
|
if(state != KEEP_STATE()) {
|
97
|
-
checkTransition(metadata.objectType, stateOld, state);
|
97
|
+
checkTransition(stateOld, metadata.objectType, stateOld, state);
|
98
98
|
metadata.state = state;
|
99
99
|
|
100
100
|
// solhint-disable-next-line avoid-tx-origin
|
@@ -49,8 +49,9 @@ abstract contract Lifecycle is
|
|
49
49
|
}
|
50
50
|
|
51
51
|
function checkTransition(
|
52
|
+
StateId stateId,
|
52
53
|
ObjectType objectType,
|
53
|
-
StateId
|
54
|
+
StateId expectedFromId,
|
54
55
|
StateId toId
|
55
56
|
)
|
56
57
|
public
|
@@ -58,12 +59,22 @@ abstract contract Lifecycle is
|
|
58
59
|
{
|
59
60
|
// revert if no life cycle support
|
60
61
|
if (_initialState[objectType].eqz()) {
|
61
|
-
revert ErrorNoLifecycle(objectType);
|
62
|
+
revert ErrorNoLifecycle(address(this), objectType);
|
63
|
+
}
|
64
|
+
|
65
|
+
// revert if current state is not expected `from` state
|
66
|
+
if(stateId != expectedFromId) {
|
67
|
+
revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
|
62
68
|
}
|
63
69
|
|
64
70
|
// enforce valid state transition
|
65
|
-
if (!_isValidTransition[objectType][
|
66
|
-
revert ErrorInvalidStateTransition(
|
71
|
+
if (!_isValidTransition[objectType][stateId][toId]) {
|
72
|
+
revert ErrorInvalidStateTransition(
|
73
|
+
address(this),
|
74
|
+
objectType,
|
75
|
+
stateId,
|
76
|
+
toId
|
77
|
+
);
|
67
78
|
}
|
68
79
|
}
|
69
80
|
|
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {InitializableERC165} from "./InitializableERC165.sol";
|
5
5
|
import {INftOwnable} from "./INftOwnable.sol";
|
6
6
|
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
7
8
|
import {RegistryLinked} from "./RegistryLinked.sol";
|
8
9
|
|
9
10
|
contract NftOwnable is
|
@@ -27,18 +28,36 @@ contract NftOwnable is
|
|
27
28
|
_;
|
28
29
|
}
|
29
30
|
|
31
|
+
modifier onlyNftOwner(NftId nftId) {
|
32
|
+
if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
|
33
|
+
revert ErrorNftOwnableNotOwner(msg.sender);
|
34
|
+
}
|
35
|
+
_;
|
36
|
+
}
|
37
|
+
|
38
|
+
modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
|
39
|
+
_checkNftType(nftId, expectedObjectType);
|
40
|
+
_;
|
41
|
+
}
|
42
|
+
|
43
|
+
function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
|
44
|
+
if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
|
45
|
+
revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
30
49
|
|
31
50
|
/// @dev initialization for upgradable contracts
|
32
51
|
// used in _initializeRegisterable
|
33
52
|
function _initializeNftOwnable(
|
34
|
-
address
|
35
|
-
address
|
53
|
+
address registry,
|
54
|
+
address initialOwner
|
36
55
|
)
|
37
56
|
internal
|
38
57
|
virtual
|
39
58
|
onlyInitializing()
|
40
59
|
{
|
41
|
-
_initializeRegistryLinked(
|
60
|
+
_initializeRegistryLinked(registry);
|
42
61
|
_initializeERC165();
|
43
62
|
|
44
63
|
if(initialOwner == address(0)) {
|
@@ -100,6 +119,7 @@ contract NftOwnable is
|
|
100
119
|
|
101
120
|
|
102
121
|
function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
|
122
|
+
// solhint-disable-next-line no-inline-assembly
|
103
123
|
assembly {
|
104
124
|
$.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
|
105
125
|
}
|
@@ -18,6 +18,10 @@ contract PolicyHolder is
|
|
18
18
|
RegistryLinked,
|
19
19
|
IPolicyHolder
|
20
20
|
{
|
21
|
+
// TODO add modifier to protect callback functions from unauthorized access
|
22
|
+
// callbacks must only be allowed from the policy and claim services
|
23
|
+
// will need a release parameter to fetch the right service addresses for the modifiers
|
24
|
+
|
21
25
|
function _initializePolicyHolder(
|
22
26
|
address registryAddress
|
23
27
|
)
|
@@ -6,6 +6,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
|
|
6
6
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
7
7
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
8
8
|
import {ObjectType} from "../type/ObjectType.sol";
|
9
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
9
10
|
|
10
11
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
12
|
import {IRegisterable} from "./IRegisterable.sol";
|
@@ -14,6 +15,8 @@ contract Registerable is
|
|
14
15
|
NftOwnable,
|
15
16
|
IRegisterable
|
16
17
|
{
|
18
|
+
uint256 public constant GIF_RELEASE = 3;
|
19
|
+
|
17
20
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
|
18
21
|
bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
|
19
22
|
|
@@ -25,20 +28,20 @@ contract Registerable is
|
|
25
28
|
}
|
26
29
|
|
27
30
|
function _initializeRegisterable(
|
28
|
-
address
|
31
|
+
address registry,
|
29
32
|
NftId parentNftId,
|
30
33
|
ObjectType objectType,
|
31
34
|
bool isInterceptor,
|
32
35
|
address initialOwner,
|
33
|
-
bytes memory
|
36
|
+
bytes memory data // writeonly data that will saved in the object info record of the registry
|
34
37
|
)
|
35
38
|
internal
|
36
39
|
virtual
|
37
40
|
onlyInitializing()
|
38
41
|
{
|
39
42
|
_initializeNftOwnable(
|
40
|
-
|
41
|
-
|
43
|
+
registry,
|
44
|
+
initialOwner);
|
42
45
|
|
43
46
|
RegisterableStorage storage $;
|
44
47
|
assembly {
|
@@ -48,10 +51,17 @@ contract Registerable is
|
|
48
51
|
$._parentNftId = parentNftId;
|
49
52
|
$._objectType = objectType;
|
50
53
|
$._isInterceptor = isInterceptor;
|
51
|
-
$._data =
|
54
|
+
$._data = data;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
/// @inheritdoc IRegisterable
|
59
|
+
function getRelease() public virtual pure returns (VersionPart release) {
|
60
|
+
return VersionPartLib.toVersionPart(GIF_RELEASE);
|
52
61
|
}
|
53
62
|
|
54
63
|
|
64
|
+
/// @inheritdoc IRegisterable
|
55
65
|
function getInitialInfo()
|
56
66
|
public
|
57
67
|
view
|
@@ -24,9 +24,6 @@ abstract contract Service is
|
|
24
24
|
IService
|
25
25
|
{
|
26
26
|
|
27
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
28
|
-
|
29
|
-
|
30
27
|
function _initializeService(
|
31
28
|
address registry,
|
32
29
|
address authority, // real authority for registry service adress(0) for other services
|
@@ -66,22 +63,22 @@ abstract contract Service is
|
|
66
63
|
}
|
67
64
|
|
68
65
|
function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
|
69
|
-
return RoleIdLib.roleForTypeAndVersion(_getDomain(),
|
66
|
+
return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
|
70
67
|
}
|
71
68
|
|
72
|
-
|
69
|
+
/// @inheritdoc IVersionable
|
73
70
|
function getVersion()
|
74
71
|
public
|
75
72
|
pure
|
76
73
|
virtual override (IVersionable, Versionable)
|
77
74
|
returns(Version)
|
78
75
|
{
|
79
|
-
return VersionLib.toVersion(
|
76
|
+
return VersionLib.toVersion(GIF_RELEASE,0,0);
|
80
77
|
}
|
81
78
|
|
82
79
|
function _getDomain() internal virtual pure returns (ObjectType);
|
83
80
|
|
84
81
|
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
85
|
-
return getRegistry().getServiceAddress(domain,
|
82
|
+
return getRegistry().getServiceAddress(domain, getRelease());
|
86
83
|
}
|
87
84
|
}
|
@@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {IService} from "../shared/IService.sol";
|
8
8
|
import {IStaking} from "./IStaking.sol";
|
9
9
|
import {NftId} from "../type/NftId.sol";
|
10
|
-
import {ObjectType} from "../type/ObjectType.sol";
|
11
10
|
import {Seconds} from "../type/Seconds.sol";
|
12
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
13
11
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
12
|
import {UFixed} from "../type/UFixed.sol";
|
15
13
|
|
@@ -33,7 +31,6 @@ interface IStakingService is IService
|
|
33
31
|
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
34
32
|
|
35
33
|
// modifiers
|
36
|
-
error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
|
37
34
|
error ErrorStakingServiceNotStaking(address stakingAddress);
|
38
35
|
error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
|
39
36
|
|
@@ -30,7 +30,6 @@ contract Staking is
|
|
30
30
|
IStaking
|
31
31
|
{
|
32
32
|
string public constant CONTRACT_NAME = "Staking";
|
33
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
34
33
|
|
35
34
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
36
35
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
@@ -416,7 +415,7 @@ contract Staking is
|
|
416
415
|
virtual override (IVersionable, Versionable)
|
417
416
|
returns(Version)
|
418
417
|
{
|
419
|
-
return VersionLib.toVersion(
|
418
|
+
return VersionLib.toVersion(GIF_RELEASE,0,0);
|
420
419
|
}
|
421
420
|
|
422
421
|
//--- internal functions ------------------------------------------------//
|
@@ -469,7 +468,7 @@ contract Staking is
|
|
469
468
|
_initializeComponent(
|
470
469
|
authority,
|
471
470
|
registryAddress,
|
472
|
-
registry.getNftId(),
|
471
|
+
registry.getNftId(), // parent nft id
|
473
472
|
CONTRACT_NAME,
|
474
473
|
dipTokenAddress,
|
475
474
|
STAKING(),
|
@@ -1,13 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
|
+
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
6
8
|
import {IStaking} from "../staking/IStaking.sol";
|
7
9
|
|
8
10
|
import {Amount} from "../type/Amount.sol";
|
9
11
|
import {Blocknumber} from "../type/Blocknumber.sol";
|
10
|
-
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
11
12
|
import {NftId} from "../type/NftId.sol";
|
12
13
|
import {STAKE, TARGET} from "../type/ObjectType.sol";
|
13
14
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -16,16 +17,18 @@ import {UFixed} from "../type/UFixed.sol";
|
|
16
17
|
|
17
18
|
contract StakingReader is
|
18
19
|
IRegistryLinked,
|
19
|
-
|
20
|
+
Initializable
|
20
21
|
{
|
21
22
|
|
22
|
-
error
|
23
|
+
error ErrorStakingReaderUnauthorizedCaler();
|
23
24
|
|
25
|
+
address private _initializeOwner;
|
24
26
|
IRegistry private _registry;
|
25
27
|
IStaking private _staking;
|
26
28
|
StakingStore private _store;
|
27
29
|
|
28
|
-
constructor(IRegistry registry)
|
30
|
+
constructor(IRegistry registry) {
|
31
|
+
_initializeOwner = msg.sender;
|
29
32
|
_registry = registry;
|
30
33
|
}
|
31
34
|
|
@@ -34,8 +37,12 @@ contract StakingReader is
|
|
34
37
|
address stakingStoreAddress
|
35
38
|
)
|
36
39
|
external
|
37
|
-
initializer
|
40
|
+
initializer()
|
38
41
|
{
|
42
|
+
if (msg.sender != _initializeOwner) {
|
43
|
+
revert ErrorStakingReaderUnauthorizedCaler();
|
44
|
+
}
|
45
|
+
|
39
46
|
_staking = IStaking(stakingAddress);
|
40
47
|
_store = StakingStore(stakingStoreAddress);
|
41
48
|
}
|