@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f12cf4d-104
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 +9 -7
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- 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 -32
- 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 +136 -360
- 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 +99 -315
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +206 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +89 -115
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- 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 +447 -87
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +337 -138
- 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 +111 -335
- 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 +77 -103
- 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 +87 -303
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -323
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +215 -256
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -47
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -135
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +271 -199
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +106 -333
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +369 -386
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +112 -100
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +90 -86
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +149 -319
- 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 +311 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +139 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +267 -141
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +136 -116
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +365 -349
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +147 -317
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +310 -34
- 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 +516 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
- 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 +131 -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 +73 -274
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +424 -277
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -115
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -103
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +87 -303
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +111 -114
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +190 -379
- 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 +118 -99
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- 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 +7 -17
- package/contracts/distribution/DistributionService.sol +85 -67
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +2 -23
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +43 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +107 -25
- package/contracts/instance/InstanceService.sol +75 -104
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +56 -42
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +35 -26
- package/contracts/pool/BasicPoolAuthorization.sol +13 -3
- package/contracts/pool/BundleService.sol +112 -69
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +16 -9
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +62 -39
- package/contracts/pool/Pool.sol +145 -128
- package/contracts/pool/PoolService.sol +283 -189
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +9 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +315 -118
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +383 -217
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +110 -89
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +57 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +350 -201
- package/contracts/registry/RegistryAdmin.sol +151 -54
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -204
- package/contracts/registry/ServiceAuthorizationV3.sol +26 -23
- package/contracts/shared/Component.sol +63 -114
- package/contracts/shared/ComponentService.sol +296 -168
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +10 -13
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +71 -38
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +366 -27
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +11 -5
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +39 -50
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +77 -35
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,6 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
7
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
6
8
|
import {IStaking} from "./IStaking.sol";
|
@@ -9,8 +11,9 @@ import {IVersionable} from "../upgradeability/IVersionable.sol";
|
|
9
11
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
12
|
import {Component} from "../shared/Component.sol";
|
11
13
|
import {IComponent} from "../shared/IComponent.sol";
|
14
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
12
15
|
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, STAKING} from "../type/ObjectType.sol";
|
16
|
+
import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
|
14
17
|
import {Seconds} from "../type/Seconds.sol";
|
15
18
|
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
16
19
|
import {StakingReader} from "./StakingReader.sol";
|
@@ -18,6 +21,7 @@ import {StakingStore} from "./StakingStore.sol";
|
|
18
21
|
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
19
22
|
import {Timestamp} from "../type/Timestamp.sol";
|
20
23
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
21
25
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
22
26
|
import {UFixed} from "../type/UFixed.sol";
|
23
27
|
import {Version, VersionLib} from "../type/Version.sol";
|
@@ -29,7 +33,6 @@ contract Staking is
|
|
29
33
|
IStaking
|
30
34
|
{
|
31
35
|
string public constant CONTRACT_NAME = "Staking";
|
32
|
-
uint8 private constant GIF_MAJOR_VERSION = 3;
|
33
36
|
|
34
37
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
|
35
38
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
@@ -59,6 +62,21 @@ contract Staking is
|
|
59
62
|
_;
|
60
63
|
}
|
61
64
|
|
65
|
+
function initializeTokenHandler()
|
66
|
+
external
|
67
|
+
{
|
68
|
+
if (msg.sender != address(getRegistry())) {
|
69
|
+
revert ErrorStakingNotRegistry(msg.sender);
|
70
|
+
}
|
71
|
+
|
72
|
+
StakingStorage storage $ = _getStakingStorage();
|
73
|
+
$._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
74
|
+
address(getRegistry()),
|
75
|
+
address(this),
|
76
|
+
address(getToken()),
|
77
|
+
getRegistry().getAuthority());
|
78
|
+
}
|
79
|
+
|
62
80
|
// set/update staking reader
|
63
81
|
function setStakingReader(StakingReader stakingReader)
|
64
82
|
external
|
@@ -300,7 +318,7 @@ contract Staking is
|
|
300
318
|
StakingStorage storage $ = _getStakingStorage();
|
301
319
|
|
302
320
|
// TODO implement
|
303
|
-
|
321
|
+
}
|
304
322
|
|
305
323
|
|
306
324
|
function updateRewards(NftId stakeNftId)
|
@@ -349,9 +367,10 @@ contract Staking is
|
|
349
367
|
Amount rewardsClaimedAmount
|
350
368
|
)
|
351
369
|
{
|
352
|
-
// TODO add check that stake locking is in the past
|
353
370
|
StakingStorage storage $ = _getStakingStorage();
|
354
|
-
|
371
|
+
|
372
|
+
StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
|
373
|
+
|
355
374
|
// update rewards since last update
|
356
375
|
NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
|
357
376
|
|
@@ -370,45 +389,6 @@ contract Staking is
|
|
370
389
|
}
|
371
390
|
|
372
391
|
|
373
|
-
|
374
|
-
//--- other functions ---------------------------------------------------//
|
375
|
-
|
376
|
-
function collectDipAmount(address from, Amount dipAmount)
|
377
|
-
external
|
378
|
-
restricted() // only staking service
|
379
|
-
{
|
380
|
-
TokenHandler tokenHandler = getTokenHandler();
|
381
|
-
address stakingWallet = getWallet();
|
382
|
-
|
383
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
384
|
-
getToken(),
|
385
|
-
from,
|
386
|
-
address(tokenHandler),
|
387
|
-
dipAmount);
|
388
|
-
|
389
|
-
// TODO: centralize token handling (issue #471)
|
390
|
-
tokenHandler.transfer(from, stakingWallet, dipAmount);
|
391
|
-
}
|
392
|
-
|
393
|
-
|
394
|
-
function transferDipAmount(address to, Amount dipAmount)
|
395
|
-
external
|
396
|
-
restricted() // only staking service
|
397
|
-
{
|
398
|
-
TokenHandler tokenHandler = getTokenHandler();
|
399
|
-
address stakingWallet = getWallet();
|
400
|
-
|
401
|
-
StakeManagerLib.checkDipBalanceAndAllowance(
|
402
|
-
getToken(),
|
403
|
-
stakingWallet,
|
404
|
-
address(tokenHandler),
|
405
|
-
dipAmount);
|
406
|
-
|
407
|
-
// TODO: centralize token handling (issue #471)
|
408
|
-
tokenHandler.transfer(stakingWallet, to, dipAmount);
|
409
|
-
}
|
410
|
-
|
411
|
-
|
412
392
|
//--- view functions ----------------------------------------------------//
|
413
393
|
|
414
394
|
function getStakingReader() public view returns (StakingReader reader) {
|
@@ -434,7 +414,7 @@ contract Staking is
|
|
434
414
|
virtual override (IVersionable, Versionable)
|
435
415
|
returns(Version)
|
436
416
|
{
|
437
|
-
return VersionLib.toVersion(
|
417
|
+
return VersionLib.toVersion(GIF_RELEASE,0,0);
|
438
418
|
}
|
439
419
|
|
440
420
|
//--- internal functions ------------------------------------------------//
|
@@ -463,13 +443,23 @@ contract Staking is
|
|
463
443
|
}
|
464
444
|
|
465
445
|
|
446
|
+
function _approveTokenHandler(IERC20Metadata token, Amount amount)
|
447
|
+
internal
|
448
|
+
virtual override
|
449
|
+
{
|
450
|
+
IComponentService(_getServiceAddress(COMPONENT())).approveStakingTokenHandler(
|
451
|
+
token,
|
452
|
+
amount);
|
453
|
+
}
|
454
|
+
|
455
|
+
|
466
456
|
function _initialize(
|
467
457
|
address owner,
|
468
458
|
bytes memory data
|
469
459
|
)
|
470
460
|
internal
|
471
461
|
virtual override
|
472
|
-
initializer
|
462
|
+
initializer()
|
473
463
|
{
|
474
464
|
(
|
475
465
|
address registryAddress,
|
@@ -484,10 +474,10 @@ contract Staking is
|
|
484
474
|
TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
485
475
|
address dipTokenAddress = tokenRegistry.getDipTokenAddress();
|
486
476
|
|
487
|
-
|
477
|
+
_initializeComponent(
|
488
478
|
authority,
|
489
479
|
registryAddress,
|
490
|
-
registry.getNftId(),
|
480
|
+
registry.getNftId(), // parent nft id
|
491
481
|
CONTRACT_NAME,
|
492
482
|
dipTokenAddress,
|
493
483
|
STAKING(),
|
@@ -502,9 +492,8 @@ contract Staking is
|
|
502
492
|
$._store = StakingStore(stakingStoreAddress);
|
503
493
|
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
504
494
|
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
505
|
-
$._tokenHandler = new TokenHandler(address(getToken()));
|
506
495
|
|
507
|
-
|
496
|
+
_registerInterface(type(IStaking).interfaceId);
|
508
497
|
}
|
509
498
|
|
510
499
|
|
@@ -18,9 +18,9 @@ contract StakingManager is
|
|
18
18
|
address registry,
|
19
19
|
address tokenRegistry,
|
20
20
|
address stakingStore,
|
21
|
-
address initialOwner
|
21
|
+
address initialOwner,
|
22
|
+
bytes32 salt
|
22
23
|
)
|
23
|
-
ProxyManager(registry)
|
24
24
|
{
|
25
25
|
Staking stakingImplementation = new Staking();
|
26
26
|
|
@@ -30,10 +30,12 @@ contract StakingManager is
|
|
30
30
|
tokenRegistry,
|
31
31
|
stakingStore,
|
32
32
|
initialOwner);
|
33
|
-
|
34
|
-
IVersionable versionable =
|
35
|
-
|
36
|
-
|
33
|
+
|
34
|
+
IVersionable versionable = initialize(
|
35
|
+
registry,
|
36
|
+
_initialImplementation,
|
37
|
+
_initializationData,
|
38
|
+
salt);
|
37
39
|
|
38
40
|
_staking = Staking(address(versionable));
|
39
41
|
}
|
@@ -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
|
}
|
@@ -4,21 +4,15 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
8
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
9
7
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
9
|
import {RegistryService} from "../registry/RegistryService.sol";
|
12
10
|
import {IStaking} from "./IStaking.sol";
|
13
11
|
import {IStakingService} from "./IStakingService.sol";
|
14
12
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {ObjectType, INSTANCE,
|
13
|
+
import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
|
16
14
|
import {Seconds} from "../type/Seconds.sol";
|
17
15
|
import {Service} from "../shared/Service.sol";
|
18
|
-
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
19
|
-
import {StakingReader} from "./StakingReader.sol";
|
20
|
-
import {TargetManagerLib} from "./TargetManagerLib.sol";
|
21
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
22
16
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
17
|
import {UFixed} from "../type/UFixed.sol";
|
24
18
|
|
@@ -38,14 +32,6 @@ contract StakingService is
|
|
38
32
|
TokenHandler _tokenHandler;
|
39
33
|
}
|
40
34
|
|
41
|
-
modifier onlyNftOwner(NftId nftId) {
|
42
|
-
if(msg.sender != getRegistry().ownerOf(nftId)) {
|
43
|
-
revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
|
44
|
-
}
|
45
|
-
_;
|
46
|
-
}
|
47
|
-
|
48
|
-
|
49
35
|
function createInstanceTarget(
|
50
36
|
NftId targetNftId,
|
51
37
|
Seconds initialLockingPeriod,
|
@@ -72,6 +58,7 @@ contract StakingService is
|
|
72
58
|
virtual
|
73
59
|
restricted()
|
74
60
|
{
|
61
|
+
_checkNftType(instanceNftId, INSTANCE());
|
75
62
|
_getStakingServiceStorage()._staking.setLockingPeriod(
|
76
63
|
instanceNftId,
|
77
64
|
lockingPeriod);
|
@@ -83,6 +70,7 @@ contract StakingService is
|
|
83
70
|
virtual
|
84
71
|
restricted()
|
85
72
|
{
|
73
|
+
_checkNftType(instanceNftId, INSTANCE());
|
86
74
|
_getStakingServiceStorage()._staking.setRewardRate(
|
87
75
|
instanceNftId,
|
88
76
|
rewardRate);
|
@@ -95,6 +83,7 @@ contract StakingService is
|
|
95
83
|
restricted()
|
96
84
|
returns (Amount newBalance)
|
97
85
|
{
|
86
|
+
_checkNftType(instanceNftId, INSTANCE());
|
98
87
|
return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
|
99
88
|
}
|
100
89
|
|
@@ -116,17 +105,18 @@ contract StakingService is
|
|
116
105
|
restricted()
|
117
106
|
returns (Amount newBalance)
|
118
107
|
{
|
108
|
+
_checkNftType(instanceNftId, INSTANCE());
|
119
109
|
// update reward reserve book keeping
|
120
110
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
121
111
|
newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
|
122
112
|
|
123
113
|
// transfer withdrawal amount to target owner
|
124
114
|
address instanceOwner = getRegistry().ownerOf(instanceNftId);
|
125
|
-
|
115
|
+
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
116
|
+
_distributeToken(
|
117
|
+
$._staking.getTokenHandler(),
|
126
118
|
instanceOwner,
|
127
119
|
dipAmount);
|
128
|
-
|
129
|
-
emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
|
130
120
|
}
|
131
121
|
|
132
122
|
|
@@ -169,12 +159,47 @@ contract StakingService is
|
|
169
159
|
targetNftId,
|
170
160
|
dipAmount);
|
171
161
|
|
162
|
+
emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
|
163
|
+
|
172
164
|
// collect staked dip by staking
|
173
|
-
|
174
|
-
|
165
|
+
_collectToken(
|
166
|
+
$._staking.getTokenHandler(),
|
167
|
+
stakeOwner,
|
175
168
|
dipAmount);
|
176
169
|
|
177
|
-
|
170
|
+
// TODO cleanup
|
171
|
+
// TokenHandler tokenHandler = $._staking.getTokenHandler();
|
172
|
+
// tokenHandler.collectTokens(
|
173
|
+
// stakeOwner,
|
174
|
+
// tokenHandler.getWallet(),
|
175
|
+
// dipAmount);
|
176
|
+
}
|
177
|
+
|
178
|
+
function _collectToken(
|
179
|
+
TokenHandler tokenHandler,
|
180
|
+
address from,
|
181
|
+
Amount amount
|
182
|
+
)
|
183
|
+
internal
|
184
|
+
virtual
|
185
|
+
{
|
186
|
+
tokenHandler.collectTokens(
|
187
|
+
from,
|
188
|
+
amount);
|
189
|
+
}
|
190
|
+
|
191
|
+
function _distributeToken(
|
192
|
+
TokenHandler tokenHandler,
|
193
|
+
address to,
|
194
|
+
Amount amount
|
195
|
+
)
|
196
|
+
internal
|
197
|
+
virtual
|
198
|
+
{
|
199
|
+
tokenHandler.distributeTokens(
|
200
|
+
tokenHandler.getWallet(),
|
201
|
+
to,
|
202
|
+
amount);
|
178
203
|
}
|
179
204
|
|
180
205
|
|
@@ -187,6 +212,8 @@ contract StakingService is
|
|
187
212
|
restricted()
|
188
213
|
onlyNftOwner(stakeNftId)
|
189
214
|
{
|
215
|
+
_checkNftType(stakeNftId, STAKE());
|
216
|
+
|
190
217
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
191
218
|
address stakeOwner = msg.sender;
|
192
219
|
|
@@ -197,12 +224,12 @@ contract StakingService is
|
|
197
224
|
|
198
225
|
// collect staked dip by staking
|
199
226
|
if (dipAmount.gtz()) {
|
200
|
-
|
227
|
+
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
228
|
+
_collectToken(
|
229
|
+
$._staking.getTokenHandler(),
|
201
230
|
stakeOwner,
|
202
231
|
dipAmount);
|
203
232
|
}
|
204
|
-
|
205
|
-
emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
|
206
233
|
}
|
207
234
|
|
208
235
|
|
@@ -218,6 +245,8 @@ contract StakingService is
|
|
218
245
|
NftId newStakeNftId
|
219
246
|
)
|
220
247
|
{
|
248
|
+
_checkNftType(stakeNftId, STAKE());
|
249
|
+
|
221
250
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
222
251
|
// TODO implement
|
223
252
|
}
|
@@ -230,6 +259,8 @@ contract StakingService is
|
|
230
259
|
virtual
|
231
260
|
restricted()
|
232
261
|
{
|
262
|
+
_checkNftType(stakeNftId, STAKE());
|
263
|
+
|
233
264
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
234
265
|
$._staking.updateRewards(stakeNftId);
|
235
266
|
|
@@ -243,15 +274,17 @@ contract StakingService is
|
|
243
274
|
restricted()
|
244
275
|
onlyNftOwner(stakeNftId)
|
245
276
|
{
|
277
|
+
_checkNftType(stakeNftId, STAKE());
|
278
|
+
|
246
279
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
247
280
|
address stakeOwner = msg.sender;
|
248
281
|
|
249
282
|
Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
|
250
|
-
|
283
|
+
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
284
|
+
_distributeToken(
|
285
|
+
$._staking.getTokenHandler(),
|
251
286
|
stakeOwner,
|
252
287
|
rewardsClaimedAmount);
|
253
|
-
|
254
|
-
emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
|
255
288
|
}
|
256
289
|
|
257
290
|
|
@@ -261,6 +294,8 @@ contract StakingService is
|
|
261
294
|
restricted()
|
262
295
|
onlyNftOwner(stakeNftId)
|
263
296
|
{
|
297
|
+
_checkNftType(stakeNftId, STAKE());
|
298
|
+
|
264
299
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
265
300
|
address stakeOwner = msg.sender;
|
266
301
|
|
@@ -270,11 +305,17 @@ contract StakingService is
|
|
270
305
|
) = $._staking.unstake(stakeNftId);
|
271
306
|
|
272
307
|
Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
|
273
|
-
|
274
|
-
|
308
|
+
emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
|
309
|
+
|
310
|
+
$._staking.getTokenHandler().pushToken(
|
311
|
+
stakeOwner,
|
275
312
|
totalAmount);
|
276
313
|
|
277
|
-
|
314
|
+
// TODO cleanup
|
315
|
+
// _distributeToken(
|
316
|
+
// $._staking.getTokenHandler(),
|
317
|
+
// stakeOwner,
|
318
|
+
// totalAmount);
|
278
319
|
}
|
279
320
|
|
280
321
|
|
@@ -335,7 +376,7 @@ contract StakingService is
|
|
335
376
|
address stakingAddress
|
336
377
|
) = abi.decode(data, (address, address, address));
|
337
378
|
|
338
|
-
|
379
|
+
_initializeService(registryAddress, authority, owner);
|
339
380
|
|
340
381
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
341
382
|
$._registryService = RegistryService(_getServiceAddress(REGISTRY()));
|
@@ -343,7 +384,7 @@ contract StakingService is
|
|
343
384
|
$._dip = $._staking.getToken();
|
344
385
|
$._tokenHandler = $._staking.getTokenHandler();
|
345
386
|
|
346
|
-
|
387
|
+
_registerInterface(type(IStakingService).interfaceId);
|
347
388
|
}
|
348
389
|
|
349
390
|
|
@@ -389,12 +430,13 @@ contract StakingService is
|
|
389
430
|
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
390
431
|
newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
|
391
432
|
|
433
|
+
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
434
|
+
|
392
435
|
// collect reward dip from provider
|
393
|
-
|
436
|
+
_collectToken(
|
437
|
+
$._staking.getTokenHandler(),
|
394
438
|
rewardProvider,
|
395
439
|
dipAmount);
|
396
|
-
|
397
|
-
emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
|
398
440
|
}
|
399
441
|
|
400
442
|
|
@@ -18,14 +18,14 @@ contract StakingServiceManager is
|
|
18
18
|
address registryAddress,
|
19
19
|
bytes32 salt
|
20
20
|
)
|
21
|
-
ProxyManager(registryAddress)
|
22
21
|
{
|
23
22
|
StakingService svc = new StakingService();
|
24
23
|
bytes memory data = abi.encode(
|
25
24
|
authority,
|
26
25
|
registryAddress,
|
27
26
|
IRegistry(registryAddress).getStakingAddress());
|
28
|
-
IVersionable versionable =
|
27
|
+
IVersionable versionable = initialize(
|
28
|
+
registryAddress,
|
29
29
|
address(svc),
|
30
30
|
data,
|
31
31
|
salt);
|
@@ -132,9 +132,9 @@ library TargetManagerLib {
|
|
132
132
|
public
|
133
133
|
pure
|
134
134
|
{
|
135
|
-
// check locking period is
|
136
|
-
if (lockingPeriod.
|
137
|
-
revert IStaking.
|
135
|
+
// check locking period is >= min locking period
|
136
|
+
if (lockingPeriod.lt(getMinimumLockingPeriod())) {
|
137
|
+
revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
|
138
138
|
}
|
139
139
|
|
140
140
|
// check locking period <= max locking period
|
@@ -190,6 +190,10 @@ library TargetManagerLib {
|
|
190
190
|
return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
|
191
191
|
}
|
192
192
|
|
193
|
+
/// @dev the minimum locking period is 24 hours
|
194
|
+
function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
|
195
|
+
return SecondsLib.toSeconds(24 * 3600);
|
196
|
+
}
|
193
197
|
|
194
198
|
function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
|
195
199
|
return UFixedLib.toUFixed(33, -2);
|
@@ -11,7 +11,9 @@ using {
|
|
11
11
|
eqAmount as ==,
|
12
12
|
nqAmount as !=,
|
13
13
|
ltAmount as <,
|
14
|
+
ltAmount as <=,
|
14
15
|
gtAmount as >,
|
16
|
+
gteAmount as >=,
|
15
17
|
AmountLib.add,
|
16
18
|
AmountLib.eq,
|
17
19
|
AmountLib.eqz,
|
@@ -43,10 +45,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) {
|
|
43
45
|
return AmountLib.lt(a, b);
|
44
46
|
}
|
45
47
|
|
48
|
+
function lteAmount(Amount a, Amount b) pure returns (bool) {
|
49
|
+
return AmountLib.lte(a, b);
|
50
|
+
}
|
51
|
+
|
46
52
|
function gtAmount(Amount a, Amount b) pure returns (bool) {
|
47
53
|
return AmountLib.gt(a, b);
|
48
54
|
}
|
49
55
|
|
56
|
+
function gteAmount(Amount a, Amount b) pure returns (bool) {
|
57
|
+
return AmountLib.gte(a, b);
|
58
|
+
}
|
59
|
+
|
50
60
|
library AmountLib {
|
51
61
|
|
52
62
|
error ErrorAmountLibValueTooBig(uint256 amount);
|
@@ -84,6 +94,11 @@ library AmountLib {
|
|
84
94
|
return Amount.unwrap(a1) < Amount.unwrap(a2);
|
85
95
|
}
|
86
96
|
|
97
|
+
/// @dev return true if amount a1 is less or equal than a2
|
98
|
+
function lte(Amount a1, Amount a2) public pure returns (bool) {
|
99
|
+
return Amount.unwrap(a1) <= Amount.unwrap(a2);
|
100
|
+
}
|
101
|
+
|
87
102
|
/// @dev return true if amount a1 is greater than a2
|
88
103
|
function gt(Amount a1, Amount a2) public pure returns (bool) {
|
89
104
|
return Amount.unwrap(a1) > Amount.unwrap(a2);
|
@@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol";
|
|
12
12
|
using {
|
13
13
|
eqClaimId as ==,
|
14
14
|
neClaimId as !=,
|
15
|
+
ClaimIdLib.eq,
|
15
16
|
ClaimIdLib.eqz,
|
16
17
|
ClaimIdLib.gtz,
|
17
18
|
ClaimIdLib.toInt,
|
@@ -21,7 +22,7 @@ using {
|
|
21
22
|
|
22
23
|
// pure free functions for operators
|
23
24
|
function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
|
24
|
-
return
|
25
|
+
return ClaimIdLib.eq(a, b);
|
25
26
|
}
|
26
27
|
|
27
28
|
function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
|
@@ -68,6 +69,10 @@ library ClaimIdLib {
|
|
68
69
|
return ClaimId.unwrap(a) > 0;
|
69
70
|
}
|
70
71
|
|
72
|
+
function eq(ClaimId a, ClaimId b) public pure returns (bool) {
|
73
|
+
return ClaimId.unwrap(a) == ClaimId.unwrap(b);
|
74
|
+
}
|
75
|
+
|
71
76
|
/// @dev Returns true if the value is zero (== 0).
|
72
77
|
function eqz(ClaimId a) public pure returns (bool) {
|
73
78
|
return ClaimId.unwrap(a) == 0;
|