@etherisc/gif-next 0.0.2-d5b7b78-706 → 0.0.2-d5fac82-078
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 +8 -84
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +90 -14
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +145 -14
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +110 -283
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +104 -55
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +420 -2725
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +366 -71
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +179 -214
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +121 -95
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +61 -12
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +1 -130
- 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +234 -129
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +162 -21
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +91 -21
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +184 -100
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +211 -100
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +120 -166
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +152 -21
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +86 -28
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +82 -22
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +110 -30
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +165 -84
- 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 +133 -45
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +209 -104
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +103 -55
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +542 -86
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -35
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +67 -7
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +133 -35
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +138 -7
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +23 -43
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +81 -33
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +27 -21
- 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 +110 -28
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/{components → distribution}/Distribution.sol +21 -16
- package/contracts/distribution/DistributionService.sol +351 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
- package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
- package/contracts/instance/BundleManager.sol +8 -9
- package/contracts/instance/IInstance.sol +45 -66
- package/contracts/instance/IInstanceService.sol +21 -20
- package/contracts/instance/Instance.sol +121 -218
- package/contracts/instance/InstanceAdmin.sol +354 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
- package/contracts/instance/InstanceReader.sol +96 -18
- package/contracts/instance/InstanceService.sol +120 -317
- package/contracts/instance/InstanceServiceManager.sol +11 -21
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +39 -45
- package/contracts/instance/base/Lifecycle.sol +17 -5
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
- package/contracts/instance/module/IAccess.sol +3 -13
- package/contracts/instance/module/IBundle.sol +10 -8
- package/contracts/instance/module/IComponents.sol +11 -5
- package/contracts/instance/module/IDistribution.sol +7 -6
- package/contracts/instance/module/IPolicy.sol +22 -16
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +4 -4
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +384 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/{components → pool}/IPoolComponent.sol +14 -13
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/{components → pool}/Pool.sol +25 -22
- package/contracts/pool/PoolService.sol +404 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +187 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/product/ClaimService.sol +443 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/{components → product}/IProductComponent.sol +11 -10
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +378 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +276 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/{components → product}/Product.sol +160 -74
- package/contracts/product/ProductService.sol +212 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/IRegistry.sol +28 -17
- package/contracts/registry/IRegistryService.sol +29 -37
- package/contracts/registry/Registry.sol +46 -48
- package/contracts/registry/RegistryAdmin.sol +143 -0
- package/contracts/registry/RegistryService.sol +37 -88
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +318 -177
- package/contracts/registry/TokenRegistry.sol +6 -4
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +469 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/{components → shared}/Component.sol +31 -11
- package/contracts/shared/ComponentService.sol +141 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
- package/contracts/{components → shared}/IComponent.sol +22 -6
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +24 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +6 -6
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/NftOwnable.sol +13 -16
- package/contracts/shared/PolicyHolder.sol +31 -18
- package/contracts/shared/ProxyManager.sol +34 -3
- package/contracts/shared/Registerable.sol +12 -11
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +23 -9
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakingService.sol +169 -0
- package/contracts/staking/StakingServiceManager.sol +40 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +16 -8
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +10 -5
- package/contracts/{types → type}/PayoutId.sol +33 -5
- package/contracts/{types → type}/RoleId.sol +50 -8
- package/contracts/{types → type}/StateId.sol +6 -2
- package/contracts/{types → type}/Timestamp.sol +5 -0
- package/package.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/instance/InstanceAccessManager.sol +0 -522
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/service/ApplicationService.sol +0 -350
- package/contracts/instance/service/BundleService.sol +0 -336
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/DistributionService.sol +0 -467
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -62
- package/contracts/instance/service/IClaimService.sol +0 -61
- package/contracts/instance/service/IPoolService.sol +0 -35
- package/contracts/instance/service/PolicyService.sol +0 -403
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -220
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -241
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Blocknumber.sol +0 -0
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/NftId.sol +0 -0
- /package/contracts/{types → type}/Referral.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
- /package/contracts/{types → type}/Seconds.sol +0 -0
- /package/contracts/{types → type}/UFixed.sol +0 -0
- /package/contracts/{types → type}/Version.sol +0 -0
@@ -2,15 +2,17 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
|
5
|
+
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
5
6
|
|
6
|
-
import {Blocknumber, blockNumber} from "../
|
7
|
+
import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
|
7
8
|
import {IVersionable} from "./IVersionable.sol";
|
8
9
|
import {NftOwnable} from "./NftOwnable.sol";
|
9
10
|
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
10
11
|
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
|
11
|
-
import {Timestamp, TimestampLib} from "../
|
12
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
12
13
|
import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
|
13
|
-
import {Version, VersionLib} from "../
|
14
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
15
|
+
import {NftId} from "../type/NftId.sol";
|
14
16
|
|
15
17
|
/// @dev manages proxy deployments for upgradable contracs of type IVersionable
|
16
18
|
contract ProxyManager is
|
@@ -79,6 +81,31 @@ contract ProxyManager is
|
|
79
81
|
emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
|
80
82
|
}
|
81
83
|
|
84
|
+
function deployDetermenistic(address initialImplementation, bytes memory initializationData, bytes32 salt)
|
85
|
+
public
|
86
|
+
virtual
|
87
|
+
onlyOwner()
|
88
|
+
returns (IVersionable versionable)
|
89
|
+
{
|
90
|
+
if (_versions.length > 0) {
|
91
|
+
revert ErrorProxyManagerAlreadyDeployed();
|
92
|
+
}
|
93
|
+
|
94
|
+
address currentProxyOwner = getOwner();
|
95
|
+
address initialProxyAdminOwner = address(this);
|
96
|
+
|
97
|
+
_proxy = new UpgradableProxyWithAdmin{salt: salt}(
|
98
|
+
initialImplementation,
|
99
|
+
initialProxyAdminOwner,
|
100
|
+
getDeployData(currentProxyOwner, initializationData)
|
101
|
+
);
|
102
|
+
|
103
|
+
versionable = IVersionable(address(_proxy));
|
104
|
+
_updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
|
105
|
+
|
106
|
+
emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
|
107
|
+
}
|
108
|
+
|
82
109
|
/// @dev upgrade existing contract
|
83
110
|
function upgrade(address newImplementation, bytes memory upgradeData)
|
84
111
|
public
|
@@ -106,6 +133,10 @@ contract ProxyManager is
|
|
106
133
|
|
107
134
|
}
|
108
135
|
|
136
|
+
function linkToProxy() public returns (NftId) {
|
137
|
+
return linkToNftOwnable(address(_proxy));
|
138
|
+
}
|
139
|
+
|
109
140
|
function getDeployData(address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
|
110
141
|
return abi.encodeWithSelector(
|
111
142
|
IVersionable.initializeVersionable.selector,
|
@@ -3,13 +3,12 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
5
|
|
6
|
-
import {NftId, zeroNftId} from "../
|
6
|
+
import {NftId, zeroNftId} from "../type/NftId.sol";
|
7
7
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
8
|
-
import {ObjectType} from "../
|
8
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
9
9
|
|
10
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
11
|
import {IRegisterable} from "./IRegisterable.sol";
|
12
|
-
import {Versionable} from "./Versionable.sol";
|
13
12
|
|
14
13
|
contract Registerable is
|
15
14
|
NftOwnable,
|
@@ -25,12 +24,6 @@ contract Registerable is
|
|
25
24
|
bytes _data;
|
26
25
|
}
|
27
26
|
|
28
|
-
function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
|
29
|
-
assembly {
|
30
|
-
$.slot := REGISTERABLE_LOCATION_V1
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
27
|
function initializeRegisterable(
|
35
28
|
address registryAddress,
|
36
29
|
NftId parentNftId,
|
@@ -47,7 +40,11 @@ contract Registerable is
|
|
47
40
|
initialOwner,
|
48
41
|
registryAddress);
|
49
42
|
|
50
|
-
RegisterableStorage storage
|
43
|
+
RegisterableStorage storage $;
|
44
|
+
assembly {
|
45
|
+
$.slot := REGISTERABLE_LOCATION_V1
|
46
|
+
}
|
47
|
+
|
51
48
|
$._parentNftId = parentNftId;
|
52
49
|
$._objectType = objectType;
|
53
50
|
$._isInterceptor = isInterceptor;
|
@@ -61,7 +58,11 @@ contract Registerable is
|
|
61
58
|
virtual
|
62
59
|
returns (IRegistry.ObjectInfo memory info)
|
63
60
|
{
|
64
|
-
RegisterableStorage
|
61
|
+
RegisterableStorage storage $;
|
62
|
+
assembly {
|
63
|
+
$.slot := REGISTERABLE_LOCATION_V1
|
64
|
+
}
|
65
|
+
|
65
66
|
info = IRegistry.ObjectInfo(
|
66
67
|
zeroNftId(),
|
67
68
|
$._parentNftId,
|
@@ -1,9 +1,12 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
|
4
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
|
+
|
7
|
+
import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
8
|
+
import {NftId, zeroNftId} from "../type/NftId.sol";
|
9
|
+
import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
|
7
10
|
|
8
11
|
import {Versionable} from "./Versionable.sol";
|
9
12
|
import {IService} from "./IService.sol";
|
@@ -18,14 +21,11 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
18
21
|
abstract contract Service is
|
19
22
|
Registerable,
|
20
23
|
Versionable,
|
24
|
+
AccessManagedUpgradeable,
|
21
25
|
IService
|
22
26
|
{
|
23
|
-
function getDomain() public pure virtual override returns(ObjectType);
|
24
27
|
|
25
|
-
|
26
|
-
function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
|
27
|
-
return VersionPartLib.toVersionPart(3);
|
28
|
-
}
|
28
|
+
uint8 private constant GIF_MAJOR_VERSION = 3;
|
29
29
|
|
30
30
|
// from Versionable
|
31
31
|
function getVersion()
|
@@ -34,11 +34,12 @@ abstract contract Service is
|
|
34
34
|
virtual override (IVersionable, Versionable)
|
35
35
|
returns(Version)
|
36
36
|
{
|
37
|
-
return VersionLib.toVersion(
|
37
|
+
return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
|
38
38
|
}
|
39
39
|
|
40
40
|
function initializeService(
|
41
41
|
address registry,
|
42
|
+
address authority, // real authority for registry service adress(0) for other services
|
42
43
|
address initialOwner
|
43
44
|
)
|
44
45
|
public
|
@@ -53,6 +54,19 @@ abstract contract Service is
|
|
53
54
|
initialOwner,
|
54
55
|
""); // data
|
55
56
|
|
57
|
+
// externally provided authority
|
58
|
+
if(authority != address(0)) {
|
59
|
+
__AccessManaged_init(authority);
|
60
|
+
} else {
|
61
|
+
address registryServiceAddress = getRegistry().getServiceAddress(
|
62
|
+
REGISTRY(),
|
63
|
+
VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
|
64
|
+
|
65
|
+
// copy authority from already registered registry services
|
66
|
+
__AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
|
67
|
+
}
|
68
|
+
|
69
|
+
registerInterface(type(IAccessManaged).interfaceId);
|
56
70
|
registerInterface(type(IService).interfaceId);
|
57
71
|
}
|
58
72
|
}
|
@@ -4,6 +4,8 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
6
6
|
|
7
|
+
import {Amount} from "../type/Amount.sol";
|
8
|
+
|
7
9
|
/// @dev token specific transfer helper
|
8
10
|
/// relies internally on oz SafeERC20.safeTransferFrom
|
9
11
|
contract TokenHandler {
|
@@ -16,11 +18,11 @@ contract TokenHandler {
|
|
16
18
|
function transfer(
|
17
19
|
address from,
|
18
20
|
address to,
|
19
|
-
|
21
|
+
Amount amount
|
20
22
|
)
|
21
23
|
external
|
22
24
|
{
|
23
|
-
SafeERC20.safeTransferFrom(_token, from, to, amount);
|
25
|
+
SafeERC20.safeTransferFrom(_token, from, to, amount.toInt());
|
24
26
|
}
|
25
27
|
|
26
28
|
function getToken()
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
5
5
|
|
6
6
|
import {IVersionable} from "./IVersionable.sol";
|
7
|
-
import {Version, VersionLib} from "../
|
7
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
8
8
|
|
9
9
|
|
10
10
|
abstract contract Versionable is
|
@@ -0,0 +1,102 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {IService} from "../shared/IService.sol";
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {Seconds} from "../type/Seconds.sol";
|
8
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
9
|
+
|
10
|
+
|
11
|
+
interface IStakingService is IService
|
12
|
+
{
|
13
|
+
/// @dev create a new stake with amount DIP to the specified target
|
14
|
+
/// returns the id of the newly minted stake nft
|
15
|
+
/// permissionless function
|
16
|
+
function create(
|
17
|
+
NftId targetNftId,
|
18
|
+
Amount amount
|
19
|
+
)
|
20
|
+
external
|
21
|
+
returns (
|
22
|
+
NftId stakeNftId
|
23
|
+
);
|
24
|
+
|
25
|
+
/// @dev increase an existing stake by amount DIP
|
26
|
+
/// updates the staking reward amount
|
27
|
+
/// function restricted to the current stake owner
|
28
|
+
function stake(
|
29
|
+
NftId stakeNftId,
|
30
|
+
Amount amount
|
31
|
+
)
|
32
|
+
external;
|
33
|
+
|
34
|
+
/// @dev decrease an existing stake by amount DIP
|
35
|
+
/// updates the staking reward amount
|
36
|
+
/// function restricted to the current stake owner
|
37
|
+
function unstake(
|
38
|
+
NftId stakeNftId,
|
39
|
+
Amount amount
|
40
|
+
)
|
41
|
+
external;
|
42
|
+
|
43
|
+
/// @dev closes the specified stake
|
44
|
+
/// all related stakes and all accumulated reward DIP are transferred to the current stake holder
|
45
|
+
/// function restricted to the current stake owner
|
46
|
+
function close(
|
47
|
+
NftId stakeNftId
|
48
|
+
)
|
49
|
+
external;
|
50
|
+
|
51
|
+
/// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
|
52
|
+
/// all related stakes and all accumulated reward DIP are transferred to the current stake holder
|
53
|
+
/// function restricted to the current stake owner
|
54
|
+
function reStake(
|
55
|
+
NftId stakeNftId,
|
56
|
+
NftId newTargetNftId
|
57
|
+
)
|
58
|
+
external
|
59
|
+
returns (
|
60
|
+
NftId newStakeNftId,
|
61
|
+
Timestamp unlockedAt
|
62
|
+
);
|
63
|
+
|
64
|
+
/// @dev increases the total value locked amount for the specified target by the provided token amount.
|
65
|
+
/// function is called when a new policy is collateralized
|
66
|
+
/// function restricted to the pool service
|
67
|
+
function increaseTotalValueLocked(
|
68
|
+
NftId targetNftId,
|
69
|
+
address token,
|
70
|
+
Amount amount
|
71
|
+
)
|
72
|
+
external
|
73
|
+
returns (Amount totalValueLocked);
|
74
|
+
|
75
|
+
|
76
|
+
/// @dev decreases the total value locked amount for the specified target by the provided token amount.
|
77
|
+
/// function is called when a new policy is closed or payouts are executed
|
78
|
+
/// function restricted to the pool service
|
79
|
+
function decreaseTotalValueLocked(
|
80
|
+
NftId targetNftId,
|
81
|
+
address token,
|
82
|
+
Amount amount
|
83
|
+
)
|
84
|
+
external
|
85
|
+
returns (Amount totalValueLocked);
|
86
|
+
|
87
|
+
/// @dev sends total value locked data to the global staking contract.
|
88
|
+
/// this is done via CCIP (cross chain communication)
|
89
|
+
function sendTotalValueLockedData(
|
90
|
+
NftId targetNftId,
|
91
|
+
address token
|
92
|
+
)
|
93
|
+
external;
|
94
|
+
|
95
|
+
/// @dev receives total value locked data from a staking contract on a different chain.
|
96
|
+
/// this is done via CCIP (cross chain communication)
|
97
|
+
function receiveTotalValueLockedData(
|
98
|
+
NftId targetNftId,
|
99
|
+
address token
|
100
|
+
)
|
101
|
+
external;
|
102
|
+
}
|
@@ -0,0 +1,169 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
6
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
import {IStakingService} from "./IStakingService.sol";
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {ObjectType, POOL, STAKE} from "../type/ObjectType.sol";
|
10
|
+
import {Service} from "../shared/Service.sol";
|
11
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
12
|
+
|
13
|
+
|
14
|
+
contract StakingService is
|
15
|
+
Service,
|
16
|
+
IStakingService
|
17
|
+
{
|
18
|
+
// TODO decide and implement string spec for location calculation
|
19
|
+
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
|
20
|
+
bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
|
21
|
+
|
22
|
+
struct StakingServiceStorage {
|
23
|
+
IPoolService _poolService;
|
24
|
+
}
|
25
|
+
|
26
|
+
function getDomain() public pure override returns(ObjectType) {
|
27
|
+
return STAKE();
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
function create(
|
32
|
+
NftId targetNftId,
|
33
|
+
Amount amount
|
34
|
+
)
|
35
|
+
external
|
36
|
+
virtual
|
37
|
+
returns (
|
38
|
+
NftId stakeNftId
|
39
|
+
)
|
40
|
+
{
|
41
|
+
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
function stake(
|
46
|
+
NftId stakeNftId,
|
47
|
+
Amount amount
|
48
|
+
)
|
49
|
+
external
|
50
|
+
virtual
|
51
|
+
{
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
function unstake(
|
57
|
+
NftId stakeNftId,
|
58
|
+
Amount amount
|
59
|
+
)
|
60
|
+
external
|
61
|
+
virtual
|
62
|
+
{
|
63
|
+
|
64
|
+
}
|
65
|
+
|
66
|
+
function close(
|
67
|
+
NftId stakeNftId
|
68
|
+
)
|
69
|
+
external
|
70
|
+
virtual
|
71
|
+
{
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
function reStake(
|
76
|
+
NftId stakeNftId,
|
77
|
+
NftId newTargetNftId
|
78
|
+
)
|
79
|
+
external
|
80
|
+
virtual
|
81
|
+
returns (
|
82
|
+
NftId newStakeNftId,
|
83
|
+
Timestamp unlockedAt
|
84
|
+
)
|
85
|
+
{
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
function increaseTotalValueLocked(
|
91
|
+
NftId targetNftId,
|
92
|
+
address token,
|
93
|
+
Amount amount
|
94
|
+
)
|
95
|
+
external
|
96
|
+
virtual
|
97
|
+
returns (Amount totalValueLocked)
|
98
|
+
{
|
99
|
+
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
function decreaseTotalValueLocked(
|
104
|
+
NftId targetNftId,
|
105
|
+
address token,
|
106
|
+
Amount amount
|
107
|
+
)
|
108
|
+
external
|
109
|
+
virtual
|
110
|
+
returns (Amount totalValueLocked)
|
111
|
+
{
|
112
|
+
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
function sendTotalValueLockedData(
|
117
|
+
NftId targetNftId,
|
118
|
+
address token
|
119
|
+
)
|
120
|
+
external
|
121
|
+
virtual
|
122
|
+
{
|
123
|
+
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
function receiveTotalValueLockedData(
|
128
|
+
NftId targetNftId,
|
129
|
+
address token
|
130
|
+
)
|
131
|
+
external
|
132
|
+
virtual
|
133
|
+
{
|
134
|
+
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
function _initialize(
|
139
|
+
address owner,
|
140
|
+
bytes memory data
|
141
|
+
)
|
142
|
+
internal
|
143
|
+
virtual override
|
144
|
+
initializer()
|
145
|
+
{
|
146
|
+
(
|
147
|
+
address registryAddress,,
|
148
|
+
//address managerAddress
|
149
|
+
address authority
|
150
|
+
) = abi.decode(data, (address, address, address));
|
151
|
+
|
152
|
+
initializeService(registryAddress, authority, owner);
|
153
|
+
|
154
|
+
StakingServiceStorage storage $ = _getStakingServiceStorage();
|
155
|
+
$._poolService = IPoolService(_getServiceAddress(POOL()));
|
156
|
+
|
157
|
+
registerInterface(type(IStakingService).interfaceId);
|
158
|
+
}
|
159
|
+
|
160
|
+
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
161
|
+
return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
|
162
|
+
}
|
163
|
+
|
164
|
+
function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
|
165
|
+
assembly {
|
166
|
+
$.slot := STAKING_SERVICE_LOCATION_V1
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {StakingService} from "./StakingService.sol";
|
7
|
+
|
8
|
+
contract StakingServiceManager is
|
9
|
+
ProxyManager
|
10
|
+
{
|
11
|
+
|
12
|
+
StakingService private _stakingService;
|
13
|
+
|
14
|
+
/// @dev initializes proxy manager with service implementation
|
15
|
+
constructor(
|
16
|
+
address authority,
|
17
|
+
address registryAddress,
|
18
|
+
bytes32 salt
|
19
|
+
)
|
20
|
+
ProxyManager(registryAddress)
|
21
|
+
{
|
22
|
+
StakingService svc = new StakingService{salt: salt}();
|
23
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
24
|
+
IVersionable versionable = deployDetermenistic(
|
25
|
+
address(svc),
|
26
|
+
data,
|
27
|
+
salt);
|
28
|
+
|
29
|
+
_stakingService = StakingService(address(versionable));
|
30
|
+
}
|
31
|
+
|
32
|
+
//--- view functions ----------------------------------------------------//
|
33
|
+
function getStakingService()
|
34
|
+
external
|
35
|
+
view
|
36
|
+
returns (StakingService)
|
37
|
+
{
|
38
|
+
return _stakingService;
|
39
|
+
}
|
40
|
+
}
|
@@ -0,0 +1,109 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {UFixed, UFixedLib} from "./UFixed.sol";
|
5
|
+
|
6
|
+
type Amount is uint96;
|
7
|
+
|
8
|
+
using {
|
9
|
+
addAmount as +,
|
10
|
+
subAmount as -,
|
11
|
+
eqAmount as ==,
|
12
|
+
ltAmount as <,
|
13
|
+
gtAmount as >,
|
14
|
+
AmountLib.eq,
|
15
|
+
AmountLib.eqz,
|
16
|
+
AmountLib.gtz,
|
17
|
+
AmountLib.toInt,
|
18
|
+
AmountLib.add,
|
19
|
+
AmountLib.toUFixed
|
20
|
+
} for Amount global;
|
21
|
+
|
22
|
+
function addAmount(Amount a, Amount b) pure returns (Amount) {
|
23
|
+
return AmountLib.add(a, b);
|
24
|
+
}
|
25
|
+
|
26
|
+
function subAmount(Amount a, Amount b) pure returns (Amount) {
|
27
|
+
return AmountLib.sub(a, b);
|
28
|
+
}
|
29
|
+
|
30
|
+
function eqAmount(Amount a, Amount b) pure returns (bool) {
|
31
|
+
return AmountLib.eq(a, b);
|
32
|
+
}
|
33
|
+
|
34
|
+
function ltAmount(Amount a, Amount b) pure returns (bool) {
|
35
|
+
return AmountLib.lt(a, b);
|
36
|
+
}
|
37
|
+
|
38
|
+
function gtAmount(Amount a, Amount b) pure returns (bool) {
|
39
|
+
return AmountLib.gt(a, b);
|
40
|
+
}
|
41
|
+
|
42
|
+
library AmountLib {
|
43
|
+
|
44
|
+
error ErrorAmountLibValueTooBig(uint256 amount);
|
45
|
+
|
46
|
+
function zero() public pure returns (Amount) {
|
47
|
+
return Amount.wrap(0);
|
48
|
+
}
|
49
|
+
|
50
|
+
function max() public pure returns (Amount) {
|
51
|
+
return Amount.wrap(_max());
|
52
|
+
}
|
53
|
+
|
54
|
+
/// @dev converts the uint amount into Amount
|
55
|
+
/// function reverts if value is exceeding max Amount value
|
56
|
+
function toAmount(uint256 amount) public pure returns (Amount) {
|
57
|
+
if(amount > _max()) {
|
58
|
+
revert ErrorAmountLibValueTooBig(amount);
|
59
|
+
}
|
60
|
+
|
61
|
+
return Amount.wrap(uint96(amount));
|
62
|
+
}
|
63
|
+
|
64
|
+
/// @dev return true if amount equals 0
|
65
|
+
function eqz(Amount amount) public pure returns (bool) {
|
66
|
+
return Amount.unwrap(amount) == 0;
|
67
|
+
}
|
68
|
+
|
69
|
+
/// @dev return true if amount1 equals amount2
|
70
|
+
function eq(Amount amount1, Amount amount2) public pure returns (bool) {
|
71
|
+
return Amount.unwrap(amount1) == Amount.unwrap(amount2);
|
72
|
+
}
|
73
|
+
|
74
|
+
/// @dev return true if amount a1 is smaller than a2
|
75
|
+
function lt(Amount a1, Amount a2) public pure returns (bool) {
|
76
|
+
return Amount.unwrap(a1) < Amount.unwrap(a2);
|
77
|
+
}
|
78
|
+
|
79
|
+
/// @dev return true if amount a1 is larger than a2
|
80
|
+
function gt(Amount a1, Amount a2) public pure returns (bool) {
|
81
|
+
return Amount.unwrap(a1) > Amount.unwrap(a2);
|
82
|
+
}
|
83
|
+
|
84
|
+
/// @dev return true if amount is larger than 0
|
85
|
+
function gtz(Amount amount) public pure returns (bool) {
|
86
|
+
return Amount.unwrap(amount) > 0;
|
87
|
+
}
|
88
|
+
|
89
|
+
function add(Amount a1, Amount a2) public pure returns (Amount) {
|
90
|
+
return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
|
91
|
+
}
|
92
|
+
|
93
|
+
function sub(Amount a1, Amount a2) public pure returns (Amount) {
|
94
|
+
return Amount.wrap(Amount.unwrap(a1) - Amount.unwrap(a2));
|
95
|
+
}
|
96
|
+
|
97
|
+
function toInt(Amount amount) public pure returns (uint256) {
|
98
|
+
return uint256(uint96(Amount.unwrap(amount)));
|
99
|
+
}
|
100
|
+
|
101
|
+
function toUFixed(Amount amount) public pure returns (UFixed) {
|
102
|
+
return UFixedLib.toUFixed(Amount.unwrap(amount));
|
103
|
+
}
|
104
|
+
|
105
|
+
function _max() internal pure returns (uint96) {
|
106
|
+
// IMPORTANT: type nees to match with actual definition for Amount
|
107
|
+
return type(uint96).max;
|
108
|
+
}
|
109
|
+
}
|