@etherisc/gif-next 0.0.2-f7d1200-068 → 0.0.2-f7fa064-035
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 +5 -2
- 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 +157 -273
- 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 +91 -239
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +190 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- 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 +1519 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1573 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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 +56 -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 +446 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +80 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
- 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 +131 -247
- 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 +66 -80
- 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 +79 -227
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -254
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +172 -228
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +221 -151
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -241
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -374
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -125
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
- 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 +282 -190
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -104
- 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 +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +144 -35
- 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 +124 -97
- 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 +231 -264
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -119
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -243
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +286 -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 +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -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 +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +68 -201
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -299
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -128
- 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 +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- 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 +79 -227
- 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 +288 -16
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- 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 +167 -270
- 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 +100 -97
- 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 +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -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 +55 -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 +84 -65
- 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 +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +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 +106 -19
- 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 +8 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +23 -23
- 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 +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +93 -50
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +11 -3
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -31
- package/contracts/pool/Pool.sol +53 -51
- package/contracts/pool/PoolService.sol +159 -174
- 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 +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +309 -121
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +21 -26
- 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 +309 -174
- 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 +117 -73
- 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 +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- 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 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +36 -52
- package/contracts/shared/ComponentService.sol +246 -151
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -3
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
- 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 +72 -31
- 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 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +99 -22
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +17 -17
- 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 +15 -1
- 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 +3 -2
- 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
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {InitializableERC165} from "./InitializableERC165.sol";
|
5
5
|
import {INftOwnable} from "./INftOwnable.sol";
|
6
6
|
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
7
8
|
import {RegistryLinked} from "./RegistryLinked.sol";
|
8
9
|
|
9
10
|
contract NftOwnable is
|
@@ -27,19 +28,37 @@ contract NftOwnable is
|
|
27
28
|
_;
|
28
29
|
}
|
29
30
|
|
31
|
+
modifier onlyNftOwner(NftId nftId) {
|
32
|
+
if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
|
33
|
+
revert ErrorNftOwnableNotOwner(msg.sender);
|
34
|
+
}
|
35
|
+
_;
|
36
|
+
}
|
37
|
+
|
38
|
+
modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
|
39
|
+
_checkNftType(nftId, expectedObjectType);
|
40
|
+
_;
|
41
|
+
}
|
42
|
+
|
43
|
+
function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
|
44
|
+
if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
|
45
|
+
revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
30
49
|
|
31
50
|
/// @dev initialization for upgradable contracts
|
32
51
|
// used in _initializeRegisterable
|
33
|
-
function
|
34
|
-
address
|
35
|
-
address
|
52
|
+
function _initializeNftOwnable(
|
53
|
+
address registry,
|
54
|
+
address initialOwner
|
36
55
|
)
|
37
|
-
|
56
|
+
internal
|
38
57
|
virtual
|
39
58
|
onlyInitializing()
|
40
59
|
{
|
41
|
-
|
42
|
-
|
60
|
+
_initializeRegistryLinked(registry);
|
61
|
+
_initializeERC165();
|
43
62
|
|
44
63
|
if(initialOwner == address(0)) {
|
45
64
|
revert ErrorNftOwnableInitialOwnerZero();
|
@@ -93,13 +112,14 @@ contract NftOwnable is
|
|
93
112
|
revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
|
94
113
|
}
|
95
114
|
|
96
|
-
$._nftId = getRegistry().
|
115
|
+
$._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
|
97
116
|
|
98
117
|
return $._nftId;
|
99
118
|
}
|
100
119
|
|
101
120
|
|
102
121
|
function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
|
122
|
+
// solhint-disable-next-line no-inline-assembly
|
103
123
|
assembly {
|
104
124
|
$.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
|
105
125
|
}
|
@@ -10,62 +10,41 @@ import {IPolicyHolder} from "./IPolicyHolder.sol";
|
|
10
10
|
import {NftId} from "../type/NftId.sol";
|
11
11
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
12
12
|
import {RegistryLinked} from "./RegistryLinked.sol";
|
13
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
13
14
|
|
14
15
|
/// @dev template implementation for IPolicyHolder
|
15
16
|
contract PolicyHolder is
|
16
17
|
InitializableERC165,
|
17
|
-
RegistryLinked,
|
18
|
+
RegistryLinked,
|
18
19
|
IPolicyHolder
|
19
20
|
{
|
20
|
-
//
|
21
|
-
//
|
22
|
-
|
21
|
+
// TODO add modifier to protect callback functions from unauthorized access
|
22
|
+
// callbacks must only be allowed from the policy and claim services
|
23
|
+
// will need a release parameter to fetch the right service addresses for the modifiers
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
address _beneficiaryDefault;
|
27
|
-
}
|
28
|
-
|
29
|
-
function initializePolicyHolder(
|
30
|
-
address registryAddress,
|
31
|
-
address beneficiaryDefault
|
25
|
+
function _initializePolicyHolder(
|
26
|
+
address registryAddress
|
32
27
|
)
|
33
|
-
|
28
|
+
internal
|
34
29
|
virtual
|
35
30
|
onlyInitializing()
|
36
31
|
{
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
registerInterface(type(IPolicyHolder).interfaceId);
|
32
|
+
_initializeRegistryLinked(registryAddress);
|
33
|
+
_initializeERC165();
|
34
|
+
_registerInterface(type(IPolicyHolder).interfaceId);
|
42
35
|
}
|
43
36
|
|
44
37
|
/// @dev empty default implementation
|
45
|
-
function
|
38
|
+
function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
|
46
39
|
|
47
40
|
/// @dev empty default implementation
|
48
|
-
function
|
41
|
+
function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
|
49
42
|
|
50
43
|
/// @dev empty default implementation
|
51
|
-
function
|
44
|
+
function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
|
52
45
|
|
53
46
|
/// @dev empty default implementation
|
54
|
-
function
|
55
|
-
|
56
|
-
/// @dev empty default implementation
|
57
|
-
function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
|
58
|
-
|
59
|
-
/// @dev returns payout specific beneficiary
|
60
|
-
/// when no such beneficiary is defined the policy specific beneficiary is returned
|
61
|
-
function getBeneficiary(NftId policyNftId, PayoutId payoutId) external virtual view returns (address beneficiary) {
|
62
|
-
beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId];
|
63
|
-
|
64
|
-
// fallback to claim independent beneficiary
|
65
|
-
if(beneficiary == address(0) && payoutId.gtz()) {
|
66
|
-
beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][PayoutIdLib.zero()];
|
67
|
-
}
|
68
|
-
}
|
47
|
+
function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
|
69
48
|
|
70
49
|
//--- IERC165 functions ---------------//
|
71
50
|
function onERC721Received(
|
@@ -80,20 +59,4 @@ contract PolicyHolder is
|
|
80
59
|
{
|
81
60
|
return IERC721Receiver.onERC721Received.selector;
|
82
61
|
}
|
83
|
-
|
84
|
-
/// @dev sets policy specific beneficiary (used when no payout specific beneficiary is defined)
|
85
|
-
function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
|
86
|
-
_setBeneficiary(policyNftId, PayoutIdLib.zero(), beneficiary);
|
87
|
-
}
|
88
|
-
|
89
|
-
/// @dev sets policy and claim specific beneficiary
|
90
|
-
function _setBeneficiary(NftId policyNftId, PayoutId payoutId, address beneficiary) internal {
|
91
|
-
_getPolicyHolderStorage()._beneficiary[policyNftId][payoutId] = beneficiary;
|
92
|
-
}
|
93
|
-
|
94
|
-
function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
|
95
|
-
assembly {
|
96
|
-
$.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
|
97
|
-
}
|
98
|
-
}
|
99
62
|
}
|
@@ -6,6 +6,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
|
|
6
6
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
7
7
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
8
8
|
import {ObjectType} from "../type/ObjectType.sol";
|
9
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
9
10
|
|
10
11
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
12
|
import {IRegisterable} from "./IRegisterable.sol";
|
@@ -14,6 +15,8 @@ contract Registerable is
|
|
14
15
|
NftOwnable,
|
15
16
|
IRegisterable
|
16
17
|
{
|
18
|
+
uint256 public constant GIF_RELEASE = 3;
|
19
|
+
|
17
20
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
|
18
21
|
bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
|
19
22
|
|
@@ -24,21 +27,21 @@ contract Registerable is
|
|
24
27
|
bytes _data;
|
25
28
|
}
|
26
29
|
|
27
|
-
function
|
28
|
-
address
|
30
|
+
function _initializeRegisterable(
|
31
|
+
address registry,
|
29
32
|
NftId parentNftId,
|
30
33
|
ObjectType objectType,
|
31
34
|
bool isInterceptor,
|
32
35
|
address initialOwner,
|
33
|
-
bytes memory
|
36
|
+
bytes memory data // writeonly data that will saved in the object info record of the registry
|
34
37
|
)
|
35
|
-
|
38
|
+
internal
|
36
39
|
virtual
|
37
|
-
onlyInitializing
|
40
|
+
onlyInitializing()
|
38
41
|
{
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
+
_initializeNftOwnable(
|
43
|
+
registry,
|
44
|
+
initialOwner);
|
42
45
|
|
43
46
|
RegisterableStorage storage $;
|
44
47
|
assembly {
|
@@ -48,10 +51,17 @@ contract Registerable is
|
|
48
51
|
$._parentNftId = parentNftId;
|
49
52
|
$._objectType = objectType;
|
50
53
|
$._isInterceptor = isInterceptor;
|
51
|
-
$._data =
|
54
|
+
$._data = data;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
/// @inheritdoc IRegisterable
|
59
|
+
function getRelease() public virtual pure returns (VersionPart release) {
|
60
|
+
return VersionPartLib.toVersionPart(GIF_RELEASE);
|
52
61
|
}
|
53
62
|
|
54
63
|
|
64
|
+
/// @inheritdoc IRegisterable
|
55
65
|
function getInitialInfo()
|
56
66
|
public
|
57
67
|
view
|
@@ -10,14 +10,15 @@ contract RegistryLinked is
|
|
10
10
|
IRegistryLinked
|
11
11
|
{
|
12
12
|
|
13
|
+
// priorize simplicity and size over using standard upgradeability structs
|
13
14
|
IRegistry private _registry;
|
14
15
|
|
15
16
|
/// @dev initialization for upgradable contracts
|
16
17
|
// used in _initializeRegisterable
|
17
|
-
function
|
18
|
+
function _initializeRegistryLinked(
|
18
19
|
address registryAddress
|
19
20
|
)
|
20
|
-
|
21
|
+
internal
|
21
22
|
virtual
|
22
23
|
onlyInitializing()
|
23
24
|
{
|
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
|
+
import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
6
7
|
|
7
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
8
9
|
import {IService} from "./IService.sol";
|
@@ -19,28 +20,20 @@ abstract contract Service is
|
|
19
20
|
Registerable,
|
20
21
|
Versionable,
|
21
22
|
AccessManagedUpgradeable,
|
23
|
+
ReentrancyGuardUpgradeable,
|
22
24
|
IService
|
23
25
|
{
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
function initializeService(
|
27
|
+
function _initializeService(
|
29
28
|
address registry,
|
30
29
|
address authority, // real authority for registry service adress(0) for other services
|
31
30
|
address initialOwner
|
32
31
|
)
|
33
|
-
|
32
|
+
internal
|
34
33
|
virtual
|
35
34
|
onlyInitializing()
|
36
35
|
{
|
37
|
-
|
38
|
-
registry,
|
39
|
-
IRegistry(registry).getNftId(),
|
40
|
-
SERVICE(),
|
41
|
-
false, // is interceptor
|
42
|
-
initialOwner,
|
43
|
-
""); // data
|
36
|
+
__ReentrancyGuard_init();
|
44
37
|
|
45
38
|
// externally provided authority
|
46
39
|
if(authority != address(0)) {
|
@@ -52,8 +45,17 @@ abstract contract Service is
|
|
52
45
|
__AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
|
53
46
|
}
|
54
47
|
|
55
|
-
|
56
|
-
|
48
|
+
_initializeRegisterable(
|
49
|
+
registry,
|
50
|
+
IRegistry(registry).getNftId(),
|
51
|
+
SERVICE(),
|
52
|
+
false, // is interceptor
|
53
|
+
initialOwner,
|
54
|
+
""); // data
|
55
|
+
|
56
|
+
|
57
|
+
_registerInterface(type(IAccessManaged).interfaceId);
|
58
|
+
_registerInterface(type(IService).interfaceId);
|
57
59
|
}
|
58
60
|
|
59
61
|
function getDomain() external virtual pure returns(ObjectType serviceDomain) {
|
@@ -61,22 +63,22 @@ abstract contract Service is
|
|
61
63
|
}
|
62
64
|
|
63
65
|
function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
|
64
|
-
return RoleIdLib.roleForTypeAndVersion(_getDomain(),
|
66
|
+
return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
|
65
67
|
}
|
66
68
|
|
67
|
-
|
69
|
+
/// @inheritdoc IVersionable
|
68
70
|
function getVersion()
|
69
71
|
public
|
70
72
|
pure
|
71
73
|
virtual override (IVersionable, Versionable)
|
72
74
|
returns(Version)
|
73
75
|
{
|
74
|
-
return VersionLib.toVersion(
|
76
|
+
return VersionLib.toVersion(GIF_RELEASE,0,0);
|
75
77
|
}
|
76
78
|
|
77
79
|
function _getDomain() internal virtual pure returns (ObjectType);
|
78
80
|
|
79
81
|
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
80
|
-
return getRegistry().getServiceAddress(domain,
|
82
|
+
return getRegistry().getServiceAddress(domain, getRelease());
|
81
83
|
}
|
82
84
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
4
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
6
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
6
7
|
|
@@ -9,54 +10,130 @@ import {Amount} from "../type/Amount.sol";
|
|
9
10
|
/// @dev token specific transfer helper
|
10
11
|
/// a default token contract is provided via contract constructor
|
11
12
|
/// relies internally on oz SafeERC20.safeTransferFrom
|
12
|
-
contract TokenHandler {
|
13
|
-
|
13
|
+
contract TokenHandler is AccessManaged {
|
14
|
+
error ErrorTokenHandlerAmountIsZero();
|
15
|
+
error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
|
16
|
+
error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
|
17
|
+
error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
|
18
|
+
|
19
|
+
event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
|
14
20
|
|
15
21
|
IERC20Metadata private _token;
|
16
22
|
|
17
|
-
constructor(address token) {
|
23
|
+
constructor(address token, address initialAuthority) AccessManaged(initialAuthority) {
|
18
24
|
_token = IERC20Metadata(token);
|
19
25
|
}
|
20
26
|
|
21
|
-
/// @dev
|
22
|
-
function
|
27
|
+
/// @dev returns the default token defined for this TokenHandler
|
28
|
+
function getToken()
|
29
|
+
external
|
30
|
+
view
|
31
|
+
returns (IERC20Metadata)
|
32
|
+
{
|
33
|
+
return _token;
|
34
|
+
}
|
35
|
+
|
36
|
+
/// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
|
37
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
38
|
+
function collectTokens(
|
23
39
|
address from,
|
24
40
|
address to,
|
25
41
|
Amount amount
|
26
42
|
)
|
27
43
|
external
|
44
|
+
restricted()
|
28
45
|
{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
46
|
+
_transfer(from, to, amount, true);
|
47
|
+
}
|
48
|
+
|
49
|
+
/// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
|
50
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
51
|
+
function collectTokensToThreeRecipients(
|
52
|
+
address from,
|
53
|
+
address to,
|
54
|
+
Amount amount,
|
55
|
+
address to2,
|
56
|
+
Amount amount2,
|
57
|
+
address to3,
|
58
|
+
Amount amount3
|
59
|
+
)
|
60
|
+
external
|
61
|
+
restricted()
|
62
|
+
{
|
63
|
+
if (to == to2 || to == to3 || to2 == to3) {
|
64
|
+
revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
|
65
|
+
}
|
66
|
+
|
67
|
+
_checkPreconditions(from, amount + amount2 + amount3);
|
68
|
+
|
69
|
+
if (amount.gtz()) {
|
70
|
+
_transfer(from, to, amount, false);
|
71
|
+
}
|
72
|
+
if (amount2.gtz()) {
|
73
|
+
_transfer(from, to2, amount2, false);
|
74
|
+
}
|
75
|
+
if (amount3.gtz()) {
|
76
|
+
_transfer(from, to3, amount3, false);
|
77
|
+
}
|
35
78
|
}
|
36
79
|
|
37
|
-
/// @dev
|
38
|
-
|
39
|
-
|
80
|
+
/// @dev distribute tokens from a wallet within the scope of gif to an external address.
|
81
|
+
/// This method also checks balance and allowance and makes sure the amount is greater than zero.
|
82
|
+
function distributeTokens(
|
40
83
|
address from,
|
41
84
|
address to,
|
42
85
|
Amount amount
|
43
86
|
)
|
44
87
|
external
|
88
|
+
restricted()
|
45
89
|
{
|
46
|
-
|
90
|
+
_transfer(from, to, amount, true);
|
91
|
+
}
|
92
|
+
|
93
|
+
function _transfer(
|
94
|
+
address from,
|
95
|
+
address to,
|
96
|
+
Amount amount,
|
97
|
+
bool checkPreconditions
|
98
|
+
)
|
99
|
+
internal
|
100
|
+
{
|
101
|
+
if (checkPreconditions) {
|
102
|
+
// check amount > 0, balance >= amount and allowance >= amount
|
103
|
+
_checkPreconditions(from, amount);
|
104
|
+
}
|
105
|
+
|
106
|
+
// transfer the tokens
|
107
|
+
emit LogTokenHandlerTokenTransfer(address(_token), from, to, amount.toInt());
|
47
108
|
SafeERC20.safeTransferFrom(
|
48
|
-
|
109
|
+
_token,
|
49
110
|
from,
|
50
111
|
to,
|
51
112
|
amount.toInt());
|
52
113
|
}
|
53
114
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
115
|
+
function _checkPreconditions(
|
116
|
+
address from,
|
117
|
+
Amount amount
|
118
|
+
)
|
119
|
+
internal
|
120
|
+
view
|
59
121
|
{
|
60
|
-
|
122
|
+
// amount must be greater than zero
|
123
|
+
if (amount.eqz()) {
|
124
|
+
revert ErrorTokenHandlerAmountIsZero();
|
125
|
+
}
|
126
|
+
|
127
|
+
// balance must be >= amount
|
128
|
+
uint256 balance = _token.balanceOf(from);
|
129
|
+
if (balance < amount.toInt()) {
|
130
|
+
revert ErrorTokenHandlerBalanceTooLow(address(_token), from, balance, amount.toInt());
|
131
|
+
}
|
132
|
+
|
133
|
+
// allowance must be >= amount
|
134
|
+
uint256 allowance = _token.allowance(from, address(this));
|
135
|
+
if (allowance < amount.toInt()) {
|
136
|
+
revert ErrorTokenHandlerAllowanceTooSmall(address(_token), from, address(this), allowance, amount.toInt());
|
137
|
+
}
|
61
138
|
}
|
62
139
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {TokenHandler} from "./TokenHandler.sol";
|
5
|
+
|
6
|
+
library TokenHandlerDeployerLib {
|
7
|
+
|
8
|
+
function deployTokenHandler(address token, address authority) public returns (TokenHandler) {
|
9
|
+
return new TokenHandler(address(token), authority);
|
10
|
+
}
|
11
|
+
|
12
|
+
}
|
@@ -42,8 +42,9 @@ interface IStaking is
|
|
42
42
|
error ErrorStakingTargetNftIdZero();
|
43
43
|
error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
|
44
44
|
error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
|
45
|
-
error
|
45
|
+
error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
|
46
46
|
error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
|
47
|
+
error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
|
47
48
|
error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
|
48
49
|
error ErrorStakingTargetNotFound(NftId targetNftId);
|
49
50
|
error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
|
@@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {IService} from "../shared/IService.sol";
|
8
8
|
import {IStaking} from "./IStaking.sol";
|
9
9
|
import {NftId} from "../type/NftId.sol";
|
10
|
-
import {ObjectType} from "../type/ObjectType.sol";
|
11
10
|
import {Seconds} from "../type/Seconds.sol";
|
12
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
13
11
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
12
|
import {UFixed} from "../type/UFixed.sol";
|
15
13
|
|
@@ -33,7 +31,6 @@ interface IStakingService is IService
|
|
33
31
|
event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
|
34
32
|
|
35
33
|
// modifiers
|
36
|
-
error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
|
37
34
|
error ErrorStakingServiceNotStaking(address stakingAddress);
|
38
35
|
error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
|
39
36
|
|
@@ -114,6 +114,24 @@ library StakeManagerLib {
|
|
114
114
|
lockingPeriod = info.lockingPeriod;
|
115
115
|
}
|
116
116
|
|
117
|
+
function checkUnstakeParameters(
|
118
|
+
StakingReader stakingReader,
|
119
|
+
NftId stakeNftId
|
120
|
+
)
|
121
|
+
public
|
122
|
+
view
|
123
|
+
returns (
|
124
|
+
UFixed rewardRate,
|
125
|
+
Seconds lockingPeriod
|
126
|
+
)
|
127
|
+
{
|
128
|
+
IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
|
129
|
+
|
130
|
+
if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
|
131
|
+
revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
117
135
|
|
118
136
|
function checkTarget(
|
119
137
|
StakingReader stakingReader,
|
@@ -153,31 +171,6 @@ library StakeManagerLib {
|
|
153
171
|
// TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
|
154
172
|
}
|
155
173
|
|
156
|
-
|
157
|
-
function checkDipBalanceAndAllowance(
|
158
|
-
IERC20Metadata dip,
|
159
|
-
address owner,
|
160
|
-
address tokenHandlerAddress,
|
161
|
-
Amount dipAmount
|
162
|
-
)
|
163
|
-
public
|
164
|
-
view
|
165
|
-
{
|
166
|
-
// check balance
|
167
|
-
uint256 amount = dipAmount.toInt();
|
168
|
-
uint256 dipBalance = dip.balanceOf(owner);
|
169
|
-
if (dipBalance < amount) {
|
170
|
-
revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
|
171
|
-
}
|
172
|
-
|
173
|
-
// check allowance
|
174
|
-
uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
|
175
|
-
if (dipAllowance < amount) {
|
176
|
-
revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
|
177
|
-
}
|
178
|
-
}
|
179
|
-
|
180
|
-
|
181
174
|
function calculateRewardIncrease(
|
182
175
|
StakingReader stakingReader,
|
183
176
|
NftId stakeNftId,
|