@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503
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 +23 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- 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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +100 -102
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -53
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -56
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +140 -91
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -161
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +68 -70
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +38 -40
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -54
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -131
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +157 -144
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
- 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 +26 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- 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 +51 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- 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 +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +31 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +137 -51
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -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 +3 -3
- 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 +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- 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/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- 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/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- 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 +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +32 -30
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +8 -1
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +7 -6
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -82
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +62 -72
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +3 -2
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -74
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPoolAuthorization.sol +21 -13
- package/contracts/pool/BundleService.sol +35 -125
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +13 -38
- package/contracts/pool/IPoolService.sol +49 -56
- package/contracts/pool/Pool.sol +9 -9
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +323 -186
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -139
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +23 -10
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +269 -257
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +53 -7
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +7 -2
- package/contracts/registry/RegistryAdmin.sol +129 -237
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +127 -101
- package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +40 -42
- package/contracts/shared/ComponentService.sol +199 -286
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +208 -9
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +9 -27
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +3 -11
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +45 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +40 -96
- package/contracts/staking/IStaking.sol +1 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +45 -20
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +53 -57
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,7 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
4
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
5
|
import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
7
6
|
|
@@ -19,14 +18,13 @@ import {Versionable} from "../upgradeability/Versionable.sol";
|
|
19
18
|
abstract contract Service is
|
20
19
|
Registerable,
|
21
20
|
Versionable,
|
22
|
-
AccessManagedUpgradeable,
|
23
21
|
ReentrancyGuardUpgradeable,
|
24
22
|
IService
|
25
23
|
{
|
26
24
|
|
27
|
-
function
|
28
|
-
address registry,
|
25
|
+
function __Service_init(
|
29
26
|
address authority, // real authority for registry service adress(0) for other services
|
27
|
+
address registry,
|
30
28
|
address initialOwner
|
31
29
|
)
|
32
30
|
internal
|
@@ -35,17 +33,8 @@ abstract contract Service is
|
|
35
33
|
{
|
36
34
|
__ReentrancyGuard_init();
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
__AccessManaged_init(authority);
|
41
|
-
} else {
|
42
|
-
address registryServiceAddress = _getServiceAddress(REGISTRY());
|
43
|
-
|
44
|
-
// copy authority from already registered registry services
|
45
|
-
__AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
|
46
|
-
}
|
47
|
-
|
48
|
-
_initializeRegisterable(
|
36
|
+
__Registerable_init(
|
37
|
+
authority,
|
49
38
|
registry,
|
50
39
|
IRegistry(registry).getNftId(),
|
51
40
|
SERVICE(),
|
@@ -53,8 +42,6 @@ abstract contract Service is
|
|
53
42
|
initialOwner,
|
54
43
|
""); // data
|
55
44
|
|
56
|
-
|
57
|
-
_registerInterface(type(IAccessManaged).interfaceId);
|
58
45
|
_registerInterface(type(IService).interfaceId);
|
59
46
|
}
|
60
47
|
|
@@ -62,18 +49,12 @@ abstract contract Service is
|
|
62
49
|
return _getDomain();
|
63
50
|
}
|
64
51
|
|
65
|
-
function
|
66
|
-
return
|
52
|
+
function getVersion() public pure virtual override (IVersionable, Versionable) returns(Version) {
|
53
|
+
return VersionLib.toVersion(3, 0, 0);
|
67
54
|
}
|
68
55
|
|
69
|
-
|
70
|
-
|
71
|
-
public
|
72
|
-
pure
|
73
|
-
virtual override (IVersionable, Versionable)
|
74
|
-
returns(Version)
|
75
|
-
{
|
76
|
-
return VersionLib.toVersion(GIF_RELEASE,0,0);
|
56
|
+
function getRoleId() external virtual view returns(RoleId serviceRoleId) {
|
57
|
+
return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
|
77
58
|
}
|
78
59
|
|
79
60
|
function _getDomain() internal virtual pure returns (ObjectType);
|
@@ -12,6 +12,10 @@ import {NftId} from "../type/NftId.sol";
|
|
12
12
|
import {SERVICE} from "../type/ObjectType.sol";
|
13
13
|
|
14
14
|
|
15
|
+
/// @dev Token specific transfer helper base contract.
|
16
|
+
/// A default token contract is provided via contract constructor.
|
17
|
+
/// Relies internally on OpenZeppelin SafeERC20.safeTransferFrom.
|
18
|
+
/// This base contract simplifies writing tests.
|
15
19
|
contract TokenHandlerBase {
|
16
20
|
|
17
21
|
// _setWallet
|
@@ -36,10 +40,6 @@ contract TokenHandlerBase {
|
|
36
40
|
// _approveTokenHandler
|
37
41
|
error ErrorTokenHandlerNotWallet(NftId nftId, address tokenHandler, address wallet);
|
38
42
|
|
39
|
-
// _pullAndPullToken
|
40
|
-
error ErrorTokenHandlerWalletsNotDistinct(address from, address to1, address to2);
|
41
|
-
error ErrorTokenHandlerPushAmountsTooLarge(Amount pushAmount, Amount pullAmount);
|
42
|
-
|
43
43
|
// _checkPreconditions
|
44
44
|
error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
|
45
45
|
error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
|
@@ -75,6 +75,23 @@ contract TokenHandlerBase {
|
|
75
75
|
}
|
76
76
|
|
77
77
|
TOKEN = IERC20Metadata(token);
|
78
|
+
|
79
|
+
// self approval of token handler to max amount
|
80
|
+
_approve(TOKEN, AmountLib.max());
|
81
|
+
}
|
82
|
+
|
83
|
+
|
84
|
+
/// @dev Checks the balance and allowance for the from address and amount.
|
85
|
+
/// When requiring amount > 0 set checkAmount to true.
|
86
|
+
function checkBalanceAndAllowance(
|
87
|
+
address from,
|
88
|
+
Amount amount,
|
89
|
+
bool checkAmount
|
90
|
+
)
|
91
|
+
external
|
92
|
+
view
|
93
|
+
{
|
94
|
+
_checkBalanceAndAllowance(from, amount, checkAmount);
|
78
95
|
}
|
79
96
|
|
80
97
|
|
@@ -159,33 +176,6 @@ contract TokenHandlerBase {
|
|
159
176
|
}
|
160
177
|
|
161
178
|
|
162
|
-
function _pullAndPushToken(
|
163
|
-
address from,
|
164
|
-
Amount pullAmount,
|
165
|
-
address to1,
|
166
|
-
Amount amount1,
|
167
|
-
address to2,
|
168
|
-
Amount amount2
|
169
|
-
)
|
170
|
-
internal
|
171
|
-
{
|
172
|
-
address wallet = getWallet();
|
173
|
-
|
174
|
-
if (wallet == to1 || wallet == to2 || to1 == to2) {
|
175
|
-
revert ErrorTokenHandlerWalletsNotDistinct(wallet, to1, to2);
|
176
|
-
}
|
177
|
-
|
178
|
-
if (amount1 + amount2 > pullAmount) {
|
179
|
-
revert ErrorTokenHandlerPushAmountsTooLarge(amount1 + amount2, pullAmount);
|
180
|
-
}
|
181
|
-
|
182
|
-
_pullToken(from, pullAmount);
|
183
|
-
|
184
|
-
if (amount1.gtz()) { _pushToken(to1, amount1); }
|
185
|
-
if (amount2.gtz()) { _pushToken(to2, amount2); }
|
186
|
-
}
|
187
|
-
|
188
|
-
|
189
179
|
function _pullToken(address from, Amount amount)
|
190
180
|
internal
|
191
181
|
{
|
@@ -209,8 +199,8 @@ contract TokenHandlerBase {
|
|
209
199
|
internal
|
210
200
|
{
|
211
201
|
if (checkPreconditions) {
|
212
|
-
|
213
|
-
|
202
|
+
bool checkAmount = true;
|
203
|
+
_checkBalanceAndAllowance(from, amount, checkAmount);
|
214
204
|
}
|
215
205
|
|
216
206
|
// transfer the tokens
|
@@ -224,15 +214,16 @@ contract TokenHandlerBase {
|
|
224
214
|
}
|
225
215
|
|
226
216
|
|
227
|
-
function
|
217
|
+
function _checkBalanceAndAllowance(
|
228
218
|
address from,
|
229
|
-
Amount amount
|
219
|
+
Amount amount,
|
220
|
+
bool checkAmount
|
230
221
|
)
|
231
222
|
internal
|
232
223
|
view
|
233
224
|
{
|
234
225
|
// amount must be greater than zero
|
235
|
-
if (amount.eqz()) {
|
226
|
+
if (checkAmount && amount.eqz()) {
|
236
227
|
revert ErrorTokenHandlerAmountIsZero();
|
237
228
|
}
|
238
229
|
|
@@ -251,9 +242,9 @@ contract TokenHandlerBase {
|
|
251
242
|
}
|
252
243
|
|
253
244
|
|
254
|
-
/// @dev Token specific transfer helper
|
255
|
-
///
|
256
|
-
///
|
245
|
+
/// @dev Token specific transfer helper.
|
246
|
+
/// Contract is derived from TokenHandlerBase and adds
|
247
|
+
/// authorization based on OpenZeppelin AccessManaged.
|
257
248
|
contract TokenHandler is
|
258
249
|
AccessManaged,
|
259
250
|
TokenHandlerBase
|
@@ -262,17 +253,6 @@ contract TokenHandler is
|
|
262
253
|
// onlyService
|
263
254
|
error ErrorTokenHandlerNotService(address service);
|
264
255
|
|
265
|
-
|
266
|
-
error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
|
267
|
-
|
268
|
-
// TODO cleanup
|
269
|
-
// IRegistry public immutable REGISTRY;
|
270
|
-
// IERC20Metadata public immutable TOKEN;
|
271
|
-
// address public immutable COMPONENT;
|
272
|
-
// NftId public immutable NFT_ID;
|
273
|
-
|
274
|
-
// address private _wallet;
|
275
|
-
|
276
256
|
modifier onlyService() {
|
277
257
|
if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
|
278
258
|
revert ErrorTokenHandlerNotService(msg.sender);
|
@@ -297,7 +277,7 @@ contract TokenHandler is
|
|
297
277
|
/// covers the current component balance must exist
|
298
278
|
function setWallet(address newWallet)
|
299
279
|
external
|
300
|
-
|
280
|
+
restricted()
|
301
281
|
onlyService()
|
302
282
|
{
|
303
283
|
_setWallet(newWallet);
|
@@ -313,7 +293,7 @@ contract TokenHandler is
|
|
313
293
|
Amount amount
|
314
294
|
)
|
315
295
|
external
|
316
|
-
|
296
|
+
restricted()
|
317
297
|
onlyService()
|
318
298
|
{
|
319
299
|
_approve(token, amount);
|
@@ -321,69 +301,34 @@ contract TokenHandler is
|
|
321
301
|
|
322
302
|
/// @dev Collect tokens from outside of GIF and transfer them to the wallet.
|
323
303
|
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
324
|
-
function
|
304
|
+
function pullToken(
|
325
305
|
address from,
|
326
306
|
Amount amount
|
327
307
|
)
|
328
308
|
external
|
329
|
-
|
309
|
+
restricted()
|
330
310
|
onlyService()
|
331
311
|
{
|
332
312
|
_pullToken(from, amount);
|
333
313
|
}
|
334
314
|
|
335
315
|
|
336
|
-
/// @dev
|
337
|
-
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
316
|
+
/// @dev Distribute tokens from a wallet within the scope of gif to some address.
|
338
317
|
function pushToken(
|
339
|
-
address from,
|
340
|
-
Amount amount
|
341
|
-
)
|
342
|
-
external
|
343
|
-
// restricted() // TODO re-activate
|
344
|
-
onlyService()
|
345
|
-
{
|
346
|
-
_pushToken(from, amount);
|
347
|
-
}
|
348
|
-
|
349
|
-
|
350
|
-
/// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
|
351
|
-
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
352
|
-
function collectTokensToThreeRecipients(
|
353
|
-
address from,
|
354
318
|
address to,
|
355
|
-
Amount amount
|
356
|
-
address to2,
|
357
|
-
Amount amount2,
|
358
|
-
address to3,
|
359
|
-
Amount amount3
|
319
|
+
Amount amount
|
360
320
|
)
|
361
321
|
external
|
362
322
|
restricted()
|
363
323
|
onlyService()
|
364
324
|
{
|
365
|
-
|
366
|
-
revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
|
367
|
-
}
|
368
|
-
|
369
|
-
_checkPreconditions(from, amount + amount2 + amount3);
|
370
|
-
|
371
|
-
if (amount.gtz()) {
|
372
|
-
_transfer(from, to, amount, false);
|
373
|
-
}
|
374
|
-
if (amount2.gtz()) {
|
375
|
-
_transfer(from, to2, amount2, false);
|
376
|
-
}
|
377
|
-
if (amount3.gtz()) {
|
378
|
-
_transfer(from, to3, amount3, false);
|
379
|
-
}
|
325
|
+
_pushToken(to, amount);
|
380
326
|
}
|
381
327
|
|
382
328
|
|
383
|
-
/// @dev
|
384
|
-
///
|
385
|
-
function
|
386
|
-
address from,
|
329
|
+
/// @dev Distribute fee tokens from a wallet within the scope of gif to some address.
|
330
|
+
/// Separate push function for component service.
|
331
|
+
function pushFeeToken(
|
387
332
|
address to,
|
388
333
|
Amount amount
|
389
334
|
)
|
@@ -391,7 +336,6 @@ contract TokenHandler is
|
|
391
336
|
restricted()
|
392
337
|
onlyService()
|
393
338
|
{
|
394
|
-
// _transfer(from, to, amount, true);
|
395
339
|
_pushToken(to, amount);
|
396
340
|
}
|
397
341
|
}
|
@@ -132,7 +132,7 @@ interface IStaking is
|
|
132
132
|
/// @dev restakes the dips to a new target.
|
133
133
|
/// the sum of the staked dips and the accumulated rewards will be restaked.
|
134
134
|
/// permissioned: only staking service may call this function.
|
135
|
-
function restake(NftId stakeNftId, NftId
|
135
|
+
function restake(NftId stakeNftId, NftId newStakeNftId) external returns (Amount newStakeBalance);
|
136
136
|
|
137
137
|
/// @dev retuns the specified amount of dips to the holder of the specified stake nft.
|
138
138
|
/// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
|
@@ -158,14 +158,6 @@ interface IStaking is
|
|
158
158
|
Amount rewardsClaimedAmount
|
159
159
|
);
|
160
160
|
|
161
|
-
//--- helper functions --------------------------------------------------//
|
162
|
-
|
163
|
-
// /// @dev transfers the specified amount of dips from the from address to the staking wallet.
|
164
|
-
// function collectDipAmount(address from, Amount dipAmount) external;
|
165
|
-
|
166
|
-
// /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
|
167
|
-
// function transferDipAmount(address to, Amount dipAmount) external;
|
168
|
-
|
169
161
|
//--- view and pure functions -------------------------------------------//
|
170
162
|
|
171
163
|
function getStakingStore() external view returns (StakingStore stakingStore);
|
@@ -26,11 +26,13 @@ interface IStakingService is IService
|
|
26
26
|
event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
|
27
27
|
event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
|
28
28
|
event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
|
29
|
+
event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
|
29
30
|
|
30
31
|
event LogStakingServiceRewardsUpdated(NftId stakeNftId);
|
31
32
|
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
32
33
|
|
33
34
|
// modifiers
|
35
|
+
error ErrorStakingServiceNotStakingOwner(address account);
|
34
36
|
error ErrorStakingServiceNotStaking(address stakingAddress);
|
35
37
|
error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
|
36
38
|
|
@@ -48,6 +50,13 @@ interface IStakingService is IService
|
|
48
50
|
// function setProtocolLockingPeriod(Seconds lockingPeriod) external;
|
49
51
|
// TODO also make sure that protocol rewards can be refilled and withdrawn
|
50
52
|
|
53
|
+
/// @dev Approves the staking token handler.
|
54
|
+
/// Reverts if the staking token handler wallet is not the token handler itself.
|
55
|
+
function approveTokenHandler(
|
56
|
+
IERC20Metadata token,
|
57
|
+
Amount amount
|
58
|
+
) external;
|
59
|
+
|
51
60
|
/// @dev creates/registers an on-chain instance staking target.
|
52
61
|
/// function granted to instance service
|
53
62
|
function createInstanceTarget(
|
@@ -108,7 +117,8 @@ interface IStakingService is IService
|
|
108
117
|
)
|
109
118
|
external
|
110
119
|
returns (
|
111
|
-
NftId newStakeNftId
|
120
|
+
NftId newStakeNftId,
|
121
|
+
Amount newStakeBalance
|
112
122
|
);
|
113
123
|
|
114
124
|
|
@@ -1,16 +1,10 @@
|
|
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
|
-
|
6
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
7
|
-
import {Component} from "../shared/Component.sol";
|
8
5
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
6
|
import {IStaking} from "./IStaking.sol";
|
11
|
-
import {Key32} from "../type/Key32.sol";
|
12
7
|
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
|
14
8
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
15
9
|
import {StakingReader} from "./StakingReader.sol";
|
16
10
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -51,7 +45,7 @@ library StakeManagerLib {
|
|
51
45
|
|
52
46
|
// TODO check that additional dip, rewards and rewards increment
|
53
47
|
// are still ok with max target staking amount
|
54
|
-
NftId targetNftId = registry.
|
48
|
+
NftId targetNftId = registry.getParentNftId(stakeNftId);
|
55
49
|
|
56
50
|
stakingStore.restakeRewards(
|
57
51
|
stakeNftId,
|
@@ -72,6 +66,55 @@ library StakeManagerLib {
|
|
72
66
|
|
73
67
|
}
|
74
68
|
|
69
|
+
function restake(
|
70
|
+
StakingReader stakingReader,
|
71
|
+
StakingStore stakingStore,
|
72
|
+
NftId oldStakeNftId,
|
73
|
+
NftId newStakeNftId
|
74
|
+
)
|
75
|
+
external
|
76
|
+
returns (Amount newStakeBalance)
|
77
|
+
{
|
78
|
+
NftId oldTargetNftId = stakingReader.getTargetNftId(oldStakeNftId);
|
79
|
+
(UFixed oldRewardRate,) = checkUnstakeParameters(stakingReader, oldStakeNftId);
|
80
|
+
|
81
|
+
// calculate new rewards update and unstake full amount
|
82
|
+
(
|
83
|
+
Amount rewardIncrementAmount,
|
84
|
+
) = calculateRewardIncrease(
|
85
|
+
stakingReader,
|
86
|
+
oldStakeNftId,
|
87
|
+
oldRewardRate);
|
88
|
+
stakingStore.updateRewards(
|
89
|
+
oldStakeNftId,
|
90
|
+
oldTargetNftId,
|
91
|
+
rewardIncrementAmount);
|
92
|
+
(
|
93
|
+
Amount unstakedAmount,
|
94
|
+
Amount rewardsAmount
|
95
|
+
) = stakingStore.unstakeUpTo(
|
96
|
+
oldStakeNftId,
|
97
|
+
oldTargetNftId,
|
98
|
+
AmountLib.max(), // unstake all stakes
|
99
|
+
AmountLib.max()); // claim all rewards
|
100
|
+
|
101
|
+
// calculate full restake amount
|
102
|
+
newStakeBalance = unstakedAmount + rewardsAmount;
|
103
|
+
NftId newTargetNftId = stakingReader.getTargetNftId(newStakeNftId);
|
104
|
+
|
105
|
+
// create new staking target and increase stake
|
106
|
+
Timestamp newLockedUntil = _checkCreateParameters(stakingReader, newTargetNftId, newStakeBalance);
|
107
|
+
stakingStore.create(
|
108
|
+
newStakeNftId,
|
109
|
+
IStaking.StakeInfo({
|
110
|
+
lockedUntil: newLockedUntil
|
111
|
+
}));
|
112
|
+
stakingStore.increaseStake(
|
113
|
+
newStakeNftId,
|
114
|
+
newTargetNftId,
|
115
|
+
newStakeBalance);
|
116
|
+
}
|
117
|
+
|
75
118
|
function checkCreateParameters(
|
76
119
|
StakingReader stakingReader,
|
77
120
|
NftId targetNftId,
|
@@ -82,6 +125,19 @@ library StakeManagerLib {
|
|
82
125
|
returns (
|
83
126
|
Timestamp lockedUntil
|
84
127
|
)
|
128
|
+
{
|
129
|
+
return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
|
130
|
+
}
|
131
|
+
|
132
|
+
function _checkCreateParameters(
|
133
|
+
StakingReader stakingReader,
|
134
|
+
NftId targetNftId,
|
135
|
+
Amount dipAmount
|
136
|
+
)
|
137
|
+
internal view
|
138
|
+
returns (
|
139
|
+
Timestamp lockedUntil
|
140
|
+
)
|
85
141
|
{
|
86
142
|
Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
|
87
143
|
checkDipAmount(stakingReader, targetNftId, dipAmount);
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
-
import {
|
7
|
+
import {IRelease} from "../registry/IRelease.sol";
|
8
8
|
import {IStaking} from "./IStaking.sol";
|
9
9
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
10
10
|
|
@@ -13,8 +13,9 @@ import {Component} from "../shared/Component.sol";
|
|
13
13
|
import {IComponent} from "../shared/IComponent.sol";
|
14
14
|
import {IComponentService} from "../shared/IComponentService.sol";
|
15
15
|
import {NftId} from "../type/NftId.sol";
|
16
|
-
import {ObjectType,
|
16
|
+
import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
|
17
17
|
import {Seconds} from "../type/Seconds.sol";
|
18
|
+
import {Registerable} from "../shared/Registerable.sol";
|
18
19
|
import {StakeManagerLib} from "./StakeManagerLib.sol";
|
19
20
|
import {StakingReader} from "./StakingReader.sol";
|
20
21
|
import {StakingStore} from "./StakingStore.sol";
|
@@ -24,7 +25,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
24
25
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
25
26
|
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
26
27
|
import {UFixed} from "../type/UFixed.sol";
|
27
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
28
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
28
29
|
import {Versionable} from "../upgradeability/Versionable.sol";
|
29
30
|
|
30
31
|
contract Staking is
|
@@ -38,7 +39,6 @@ contract Staking is
|
|
38
39
|
bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
|
39
40
|
|
40
41
|
struct StakingStorage {
|
41
|
-
IRegistryService _registryService;
|
42
42
|
TokenRegistry _tokenRegistry;
|
43
43
|
TokenHandler _tokenHandler;
|
44
44
|
StakingStore _store;
|
@@ -77,6 +77,16 @@ contract Staking is
|
|
77
77
|
getRegistry().getAuthority());
|
78
78
|
}
|
79
79
|
|
80
|
+
|
81
|
+
function approveTokenHandler(IERC20Metadata token, Amount amount)
|
82
|
+
public
|
83
|
+
restricted()
|
84
|
+
onlyOwner()
|
85
|
+
{
|
86
|
+
_approveTokenHandler(token, amount);
|
87
|
+
}
|
88
|
+
|
89
|
+
|
80
90
|
// set/update staking reader
|
81
91
|
function setStakingReader(StakingReader stakingReader)
|
82
92
|
external
|
@@ -306,21 +316,26 @@ contract Staking is
|
|
306
316
|
|
307
317
|
function restake(
|
308
318
|
NftId stakeNftId,
|
309
|
-
NftId
|
319
|
+
NftId newStakeNftId
|
310
320
|
)
|
311
321
|
external
|
312
322
|
virtual
|
313
323
|
restricted() // only staking service
|
314
324
|
onlyStake(stakeNftId)
|
315
|
-
returns (
|
325
|
+
returns (Amount newStakeBalance)
|
316
326
|
{
|
327
|
+
_checkNftType(stakeNftId, STAKE());
|
328
|
+
_checkNftType(newStakeNftId, STAKE());
|
329
|
+
|
317
330
|
// TODO add check that allows additional staking amount
|
318
331
|
StakingStorage storage $ = _getStakingStorage();
|
319
|
-
|
320
|
-
|
332
|
+
newStakeBalance = StakeManagerLib.restake(
|
333
|
+
$._reader,
|
334
|
+
$._store,
|
335
|
+
stakeNftId,
|
336
|
+
newStakeNftId);
|
321
337
|
}
|
322
338
|
|
323
|
-
|
324
339
|
function updateRewards(NftId stakeNftId)
|
325
340
|
external
|
326
341
|
virtual
|
@@ -407,14 +422,24 @@ contract Staking is
|
|
407
422
|
return _getStakingStorage()._tokenHandler;
|
408
423
|
}
|
409
424
|
|
410
|
-
// from
|
425
|
+
// from IRegisterable
|
426
|
+
function getRelease()
|
427
|
+
public
|
428
|
+
pure
|
429
|
+
virtual override (IRelease, Registerable)
|
430
|
+
returns(VersionPart)
|
431
|
+
{
|
432
|
+
return VersionPartLib.toVersionPart(3);
|
433
|
+
}
|
434
|
+
|
435
|
+
// from IVersionable
|
411
436
|
function getVersion()
|
412
437
|
public
|
413
438
|
pure
|
414
|
-
virtual override (IVersionable, Versionable)
|
439
|
+
virtual override (Component, IVersionable, Versionable)
|
415
440
|
returns(Version)
|
416
441
|
{
|
417
|
-
return VersionLib.toVersion(
|
442
|
+
return VersionLib.toVersion(3,0,0);
|
418
443
|
}
|
419
444
|
|
420
445
|
//--- internal functions ------------------------------------------------//
|
@@ -447,7 +472,7 @@ contract Staking is
|
|
447
472
|
internal
|
448
473
|
virtual override
|
449
474
|
{
|
450
|
-
IComponentService(_getServiceAddress(
|
475
|
+
IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
|
451
476
|
token,
|
452
477
|
amount);
|
453
478
|
}
|
@@ -474,6 +499,13 @@ contract Staking is
|
|
474
499
|
TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
475
500
|
address dipTokenAddress = tokenRegistry.getDipTokenAddress();
|
476
501
|
|
502
|
+
// wiring to external contracts
|
503
|
+
StakingStorage storage $ = _getStakingStorage();
|
504
|
+
$._protocolNftId = registry.getProtocolNftId();
|
505
|
+
$._store = StakingStore(stakingStoreAddress);
|
506
|
+
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
507
|
+
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
508
|
+
|
477
509
|
_initializeComponent(
|
478
510
|
authority,
|
479
511
|
registryAddress,
|
@@ -486,13 +518,6 @@ contract Staking is
|
|
486
518
|
"", // registry data
|
487
519
|
""); // component data
|
488
520
|
|
489
|
-
// wiring to external contracts
|
490
|
-
StakingStorage storage $ = _getStakingStorage();
|
491
|
-
$._protocolNftId = getRegistry().getProtocolNftId();
|
492
|
-
$._store = StakingStore(stakingStoreAddress);
|
493
|
-
$._reader = StakingStore(stakingStoreAddress).getStakingReader();
|
494
|
-
$._tokenRegistry = TokenRegistry(tokenRegistryAddress);
|
495
|
-
|
496
521
|
_registerInterface(type(IStaking).interfaceId);
|
497
522
|
}
|
498
523
|
|