@etherisc/gif-next 0.0.2-e9a637d-547 → 0.0.2-ead1eb0-841
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 +6 -12
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +61 -14
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +45 -14
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +24 -274
- 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 +93 -13
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -43
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +109 -29
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +6 -6
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +349 -64
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +49 -278
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +39 -128
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +427 -257
- 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/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 +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +105 -29
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +56 -25
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +272 -39
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +56 -25
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -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} +119 -101
- 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 +129 -84
- 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} +63 -175
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +53 -22
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +6 -14
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +53 -22
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
- 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 +6 -6
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +4 -4
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +21 -29
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +9 -9
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
- 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 +38 -7
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +38 -14
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +38 -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 +5 -13
- 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 +8 -21
- 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 +20 -33
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -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 +5 -13
- 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/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -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/{instance/service → distribution}/DistributionService.sol +85 -173
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
- package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
- package/contracts/{instance/service → distribution}/IDistributionService.sol +18 -30
- package/contracts/instance/BundleManager.sol +8 -9
- package/contracts/instance/IInstance.sol +30 -13
- package/contracts/instance/IInstanceService.sol +6 -17
- package/contracts/instance/Instance.sol +76 -46
- package/contracts/instance/InstanceAccessManager.sol +8 -5
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +91 -16
- package/contracts/instance/InstanceService.sol +75 -297
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +57 -65
- 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 +32 -43
- package/contracts/instance/base/Lifecycle.sol +17 -5
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +5 -5
- package/contracts/instance/module/IComponents.sol +8 -8
- 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/{instance/service → pool}/BundleService.sol +95 -144
- package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
- package/contracts/{instance/service → pool}/IBundleService.sol +43 -18
- package/contracts/{components → pool}/IPoolComponent.sol +14 -13
- package/contracts/{instance/service → pool}/IPoolService.sol +28 -13
- package/contracts/{components → pool}/Pool.sol +20 -21
- package/contracts/{instance/service → pool}/PoolService.sol +149 -49
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
- 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/{instance/service → product}/PolicyService.sol +148 -134
- package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/{components → product}/Product.sol +160 -74
- package/contracts/{instance/service → product}/ProductService.sol +44 -43
- package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
- package/contracts/registry/IRegistry.sol +4 -4
- package/contracts/registry/IRegistryService.sol +4 -6
- package/contracts/registry/Registry.sol +3 -3
- package/contracts/registry/RegistryAccessManager.sol +2 -2
- package/contracts/registry/RegistryService.sol +23 -20
- package/contracts/registry/RegistryServiceManager.sol +0 -2
- package/contracts/registry/ReleaseManager.sol +12 -8
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/{components → shared}/Component.sol +26 -8
- package/contracts/{instance/base → shared}/ComponentService.sol +63 -34
- package/contracts/{components → shared}/IComponent.sol +19 -5
- 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 +3 -1
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/NftOwnable.sol +1 -3
- package/contracts/shared/PolicyHolder.sol +31 -18
- package/contracts/shared/ProxyManager.sol +3 -3
- package/contracts/shared/Registerable.sol +12 -11
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +3 -3
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakeingServiceManager.sol +37 -0
- package/contracts/staking/StakingService.sol +166 -0
- package/contracts/{types → type}/Amount.sol +49 -0
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +7 -6
- 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 +44 -9
- 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/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 -1039
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
- 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/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 -1092
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
- 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 -596
- 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/Amount.sol/AmountLib.dbg.json +0 -4
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
- 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 -288
- 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/service/ApplicationService.sol +0 -351
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/IClaimService.sol +0 -61
- 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
@@ -1,44 +1,44 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IRegistry} from "
|
5
|
-
import {IProductComponent} from "
|
6
|
-
import {Product} from "
|
7
|
-
import {IComponent} from "
|
8
|
-
import {IPoolComponent} from "
|
9
|
-
import {IDistributionComponent} from "
|
10
|
-
import {IInstance} from "../IInstance.sol";
|
11
|
-
import {IPolicy} from "../module/IPolicy.sol";
|
12
|
-
import {IRisk} from "../module/IRisk.sol";
|
13
|
-
import {IBundle} from "../module/IBundle.sol";
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
+
import {Product} from "./Product.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
8
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
9
|
+
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
12
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
13
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
14
14
|
import {IProductService} from "./IProductService.sol";
|
15
|
-
import {ITreasury} from "../module/ITreasury.sol";
|
16
|
-
import {ISetup} from "../module/ISetup.sol";
|
17
|
-
|
18
|
-
import {TokenHandler} from "
|
19
|
-
|
20
|
-
import {IVersionable} from "
|
21
|
-
import {Versionable} from "
|
22
|
-
|
23
|
-
import {Timestamp, zeroTimestamp} from "
|
24
|
-
import {UFixed, UFixedLib} from "
|
25
|
-
import {Blocknumber, blockNumber} from "
|
26
|
-
import {ObjectType, PRODUCT, POOL, POLICY} from "
|
27
|
-
import {APPLIED,
|
28
|
-
import {NftId, NftIdLib, zeroNftId} from "
|
29
|
-
import {Fee, FeeLib} from "
|
30
|
-
import {ReferralId} from "
|
31
|
-
import {RiskId} from "
|
32
|
-
import {StateId} from "
|
33
|
-
import {Version, VersionLib} from "
|
34
|
-
import {RoleId, PRODUCT_OWNER_ROLE} from "
|
35
|
-
|
36
|
-
import {IService} from "
|
37
|
-
import {Service} from "
|
38
|
-
import {ComponentService} from "../
|
15
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
16
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
17
|
+
|
18
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
|
+
|
20
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
21
|
+
import {Versionable} from "../shared/Versionable.sol";
|
22
|
+
|
23
|
+
import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
|
24
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
25
|
+
import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
|
26
|
+
import {ObjectType, PRODUCT, POOL, POLICY} from "../type/ObjectType.sol";
|
27
|
+
import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
|
28
|
+
import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
|
29
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
30
|
+
import {ReferralId} from "../type/Referral.sol";
|
31
|
+
import {RiskId} from "../type/RiskId.sol";
|
32
|
+
import {StateId} from "../type/StateId.sol";
|
33
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
34
|
+
import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
35
|
+
|
36
|
+
import {IService} from "../shared/IService.sol";
|
37
|
+
import {Service} from "../shared/Service.sol";
|
38
|
+
import {ComponentService} from "../shared/ComponentService.sol";
|
39
39
|
import {IProductService} from "./IProductService.sol";
|
40
|
-
import {InstanceReader} from "../InstanceReader.sol";
|
41
|
-
import {IPoolService} from "
|
40
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
41
|
+
import {IPoolService} from "../pool/PoolService.sol";
|
42
42
|
|
43
43
|
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
44
44
|
contract ProductService is ComponentService, IProductService {
|
@@ -157,7 +157,7 @@ contract ProductService is ComponentService, IProductService {
|
|
157
157
|
{
|
158
158
|
// TODO check args
|
159
159
|
|
160
|
-
(NftId productNftId
|
160
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
161
161
|
InstanceReader instanceReader = instance.getInstanceReader();
|
162
162
|
|
163
163
|
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
@@ -175,8 +175,9 @@ contract ProductService is ComponentService, IProductService {
|
|
175
175
|
external
|
176
176
|
override
|
177
177
|
{
|
178
|
-
(NftId productNftId
|
178
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
179
179
|
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
180
|
+
|
180
181
|
instance.getInstanceStore().createRisk(
|
181
182
|
riskId,
|
182
183
|
riskInfo
|
@@ -189,7 +190,7 @@ contract ProductService is ComponentService, IProductService {
|
|
189
190
|
)
|
190
191
|
external
|
191
192
|
{
|
192
|
-
(,, IInstance instance) =
|
193
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
193
194
|
InstanceReader instanceReader = instance.getInstanceReader();
|
194
195
|
|
195
196
|
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
@@ -200,10 +201,10 @@ contract ProductService is ComponentService, IProductService {
|
|
200
201
|
function updateRiskState(
|
201
202
|
RiskId riskId,
|
202
203
|
StateId state
|
203
|
-
)
|
204
|
-
external
|
204
|
+
)
|
205
|
+
external
|
205
206
|
{
|
206
|
-
(,, IInstance instance) =
|
207
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
207
208
|
instance.getInstanceStore().updateRiskState(riskId, state);
|
208
209
|
}
|
209
|
-
}
|
210
|
+
}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "
|
5
|
-
import {ProxyManager} from "
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
6
|
import {ProductService} from "./ProductService.sol";
|
7
|
-
import {Registry} from "
|
8
|
-
import {RegistryService} from "
|
9
|
-
import {VersionLib} from "
|
7
|
+
import {Registry} from "../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../type/Version.sol";
|
10
10
|
|
11
11
|
contract ProductServiceManager is ProxyManager {
|
12
12
|
|
@@ -3,10 +3,10 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {ObjectType} from "../
|
8
|
-
import {VersionPart} from "../
|
9
|
-
import {Timestamp} from "../
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
|
+
import {VersionPart} from "../type/Version.sol";
|
9
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
10
10
|
|
11
11
|
interface IRegistry is IERC165 {
|
12
12
|
|
@@ -3,19 +3,17 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
// import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {ObjectType} from "../
|
8
|
-
import {RoleId} from "../
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
|
+
import {RoleId} from "../type/RoleId.sol";
|
9
9
|
import {IService} from "../shared/IService.sol";
|
10
10
|
import {IRegistry} from "./IRegistry.sol";
|
11
11
|
|
12
12
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
|
-
import {IComponent} from "../
|
13
|
+
import {IComponent} from "../shared/IComponent.sol";
|
14
14
|
|
15
15
|
interface IRegistryService is
|
16
16
|
IService
|
17
|
-
// TODO cleanup
|
18
|
-
// IAccessManaged
|
19
17
|
{
|
20
18
|
error SelfRegistration();
|
21
19
|
error NotRegistryOwner();
|
@@ -3,9 +3,9 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
-
import {NftId, toNftId, zeroNftId} from "../
|
7
|
-
import {VersionPart} from "../
|
8
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../
|
6
|
+
import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
|
7
|
+
import {VersionPart} from "../type/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
9
9
|
|
10
10
|
import {ChainNft} from "./ChainNft.sol";
|
11
11
|
import {IRegistry} from "./IRegistry.sol";
|
@@ -7,7 +7,7 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
7
7
|
import {RoleId, RoleIdLib,
|
8
8
|
GIF_MANAGER_ROLE,
|
9
9
|
GIF_ADMIN_ROLE,
|
10
|
-
RELEASE_MANAGER_ROLE} from "../
|
10
|
+
RELEASE_MANAGER_ROLE} from "../type/RoleId.sol";
|
11
11
|
|
12
12
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
13
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
@@ -19,7 +19,7 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
19
19
|
- responsible for setting and granting of REGISTRAR roles
|
20
20
|
1) REGISTRAR roles
|
21
21
|
- set and granted by RELEASE_MANAGER_ROLE
|
22
|
-
- each
|
22
|
+
- for each service and major version X there is 1 unique member (the service with version X itself) (subject to change)
|
23
23
|
- each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
|
24
24
|
2) GIF_MANAGER_ROLE
|
25
25
|
- can have arbitrary number of members
|
@@ -7,23 +7,22 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
|
|
7
7
|
import {IRegistry} from "./IRegistry.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
10
|
+
import {IComponent} from "../../contracts/shared/IComponent.sol";
|
11
|
+
import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
|
12
|
+
import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
|
13
|
+
import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
|
15
14
|
|
16
15
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
17
16
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
18
17
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
19
18
|
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
20
19
|
|
21
|
-
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/
|
22
|
-
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/
|
23
|
-
import {StateId, ACTIVE, PAUSED} from "../../contracts/
|
24
|
-
import {NftId, NftIdLib, zeroNftId} from "../../contracts/
|
25
|
-
import {Fee, FeeLib} from "../../contracts/
|
26
|
-
import {Version, VersionPart, VersionLib} from "../../contracts/
|
20
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
|
21
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, PRICE} from "../../contracts/type/ObjectType.sol";
|
22
|
+
import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
|
23
|
+
import {NftId, NftIdLib, zeroNftId} from "../../contracts/type/NftId.sol";
|
24
|
+
import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
|
25
|
+
import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
|
27
26
|
|
28
27
|
import {Service} from "../shared/Service.sol";
|
29
28
|
import {IService} from "../shared/IService.sol";
|
@@ -176,7 +175,7 @@ contract RegistryService is
|
|
176
175
|
FunctionConfig[] memory config
|
177
176
|
)
|
178
177
|
{
|
179
|
-
config = new FunctionConfig[](
|
178
|
+
config = new FunctionConfig[](9);
|
180
179
|
|
181
180
|
// order of service registrations MUST be reverse to this array
|
182
181
|
/*config[-1].serviceDomain = STAKE();
|
@@ -205,15 +204,19 @@ contract RegistryService is
|
|
205
204
|
config[5].selectors = new bytes4[](1);
|
206
205
|
config[5].selectors[0] = RegistryService.registerBundle.selector;
|
207
206
|
|
208
|
-
|
209
|
-
config[6].
|
210
|
-
config[6].selectors
|
211
|
-
config[6].selectors[1] = RegistryService.registerDistributor.selector;
|
207
|
+
// registration of pricing service must preceed registration of application service
|
208
|
+
config[6].serviceDomain = PRICE();
|
209
|
+
config[6].selectors = new bytes4[](0);
|
212
210
|
|
213
|
-
//
|
214
|
-
config[7].serviceDomain =
|
215
|
-
config[7].selectors = new bytes4[](
|
216
|
-
config[7].selectors[0] = RegistryService.
|
211
|
+
// registration of distribution service must preceed registration of pricing service
|
212
|
+
config[7].serviceDomain = DISTRIBUTION();
|
213
|
+
config[7].selectors = new bytes4[](2);
|
214
|
+
config[7].selectors[0] = RegistryService.registerDistribution.selector;
|
215
|
+
config[7].selectors[1] = RegistryService.registerDistributor.selector;
|
216
|
+
|
217
|
+
config[8].serviceDomain = INSTANCE();
|
218
|
+
config[8].selectors = new bytes4[](1);
|
219
|
+
config[8].selectors[0] = RegistryService.registerInstance.selector;
|
217
220
|
}
|
218
221
|
|
219
222
|
// Internal
|
@@ -3,8 +3,6 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
5
|
|
6
|
-
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
7
|
-
|
8
6
|
import {Registry} from "./Registry.sol";
|
9
7
|
import {IVersionable} from "../shared/IVersionable.sol";
|
10
8
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
@@ -3,11 +3,11 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
5
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../
|
9
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {RoleId} from "../type/RoleId.sol";
|
8
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
9
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
10
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
11
11
|
|
12
12
|
import {IService} from "../shared/IService.sol";
|
13
13
|
|
@@ -61,7 +61,8 @@ contract ReleaseManager is AccessManaged
|
|
61
61
|
|
62
62
|
mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
|
63
63
|
|
64
|
-
|
64
|
+
// registry service function selector assigned to domain
|
65
|
+
mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors;
|
65
66
|
|
66
67
|
uint _awaitingRegistration; // "services left to register" counter
|
67
68
|
|
@@ -90,7 +91,9 @@ contract ReleaseManager is AccessManaged
|
|
90
91
|
restricted // GIF_ADMIN_ROLE
|
91
92
|
{
|
92
93
|
// allow to register new registry service for next version
|
94
|
+
// TODO check/test: assignment to _next likely missing ...
|
93
95
|
VersionPartLib.toVersionPart(_next.toInt() + 1);
|
96
|
+
|
94
97
|
// disallow registration of regular services for next version while registry service is not registered
|
95
98
|
_awaitingRegistration = 0;
|
96
99
|
|
@@ -124,9 +127,10 @@ contract ReleaseManager is AccessManaged
|
|
124
127
|
emit LogReleaseActivation(version);
|
125
128
|
}
|
126
129
|
|
127
|
-
// TODO
|
130
|
+
// TODO implement reliable way this function can only be called directly after createNextRelease()
|
128
131
|
// IMPORTANT: MUST never be possible to create with access/release manager, token registry
|
129
|
-
// callable once per release after release creation
|
132
|
+
// callable once per release after release creation
|
133
|
+
// can not register regular services
|
130
134
|
function registerRegistryService(IRegistryService service)
|
131
135
|
external
|
132
136
|
restricted // GIF_MANAGER_ROLE
|
@@ -6,8 +6,8 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
|
|
6
6
|
|
7
7
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
8
8
|
import {IRegistry} from "./IRegistry.sol";
|
9
|
-
import {VersionPart} from "../
|
10
|
-
import {REGISTRY} from "../
|
9
|
+
import {VersionPart} from "../type/Version.sol";
|
10
|
+
import {REGISTRY} from "../type/ObjectType.sol";
|
11
11
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
12
12
|
|
13
13
|
/// @title contract to register token per GIF major release.
|
@@ -8,19 +8,19 @@ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
|
|
8
8
|
|
9
9
|
import {IComponent} from "./IComponent.sol";
|
10
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
12
11
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
13
12
|
import {IInstance} from "../instance/IInstance.sol";
|
14
13
|
import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
|
15
14
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
15
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
|
-
import {NftId} from "../
|
18
|
-
import {ObjectType, INSTANCE, PRODUCT} from "../
|
19
|
-
import {VersionPart} from "../
|
16
|
+
import {NftId} from "../type/NftId.sol";
|
17
|
+
import {ObjectType, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
|
18
|
+
import {VersionPart} from "../type/Version.sol";
|
20
19
|
import {Registerable} from "../shared/Registerable.sol";
|
21
|
-
import {RoleId, RoleIdLib} from "../
|
20
|
+
import {RoleId, RoleIdLib} from "../type/RoleId.sol";
|
22
21
|
import {IAccess} from "../instance/module/IAccess.sol";
|
23
|
-
import {
|
22
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
|
+
import {VersionPart} from "../type/Version.sol";
|
24
24
|
|
25
25
|
// TODO discuss to inherit from oz accessmanaged
|
26
26
|
// then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
|
@@ -95,14 +95,28 @@ abstract contract Component is
|
|
95
95
|
registerInterface(type(IComponent).interfaceId);
|
96
96
|
}
|
97
97
|
|
98
|
-
function lock() external onlyOwner
|
98
|
+
function lock() external onlyOwner {
|
99
99
|
IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
|
100
100
|
}
|
101
101
|
|
102
|
-
function unlock() external onlyOwner
|
102
|
+
function unlock() external onlyOwner {
|
103
103
|
IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
|
104
104
|
}
|
105
105
|
|
106
|
+
function approveTokenHandler(uint256 spendingLimitAmount) external onlyOwner {
|
107
|
+
IComponents.ComponentInfo memory info = getComponentInfo();
|
108
|
+
|
109
|
+
if(info.wallet != address(this)) {
|
110
|
+
revert ErrorComponentWalletNotComponent();
|
111
|
+
}
|
112
|
+
|
113
|
+
info.token.approve(
|
114
|
+
address(info.tokenHandler),
|
115
|
+
spendingLimitAmount);
|
116
|
+
|
117
|
+
emit LogComponentTokenHandlerApproved(spendingLimitAmount);
|
118
|
+
}
|
119
|
+
|
106
120
|
function setWallet(address newWallet)
|
107
121
|
external
|
108
122
|
override
|
@@ -197,6 +211,10 @@ abstract contract Component is
|
|
197
211
|
return _getComponentStorage()._token;
|
198
212
|
}
|
199
213
|
|
214
|
+
function getTokenHandler() public view returns (TokenHandler tokenHandler) {
|
215
|
+
return getComponentInfo().tokenHandler;
|
216
|
+
}
|
217
|
+
|
200
218
|
function isNftInterceptor() public view override returns(bool isInterceptor) {
|
201
219
|
return _getComponentStorage()._isNftInterceptor;
|
202
220
|
}
|
@@ -1,31 +1,37 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IComponent} from "
|
5
|
-
import {IRegistry} from "
|
6
|
-
import {IRegistryService} from "
|
7
|
-
import {IInstance} from "
|
8
|
-
import {IAccess} from "../module/IAccess.sol";
|
9
|
-
import {ObjectType, INSTANCE, REGISTRY} from "
|
10
|
-
import {NftId} from "
|
11
|
-
import {RoleId} from "
|
12
|
-
|
13
|
-
import {Service} from "
|
14
|
-
import {InstanceService} from "../InstanceService.sol";
|
15
|
-
import {InstanceAccessManager} from "../InstanceAccessManager.sol";
|
16
|
-
|
17
|
-
abstract contract ComponentService is
|
4
|
+
import {IComponent} from "./IComponent.sol";
|
5
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
|
+
import {IAccess} from "../instance/module/IAccess.sol";
|
9
|
+
import {ObjectType, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
10
|
+
import {NftId} from "../type/NftId.sol";
|
11
|
+
import {RoleId} from "../type/RoleId.sol";
|
12
|
+
|
13
|
+
import {Service} from "../shared/Service.sol";
|
14
|
+
import {InstanceService} from "../instance/InstanceService.sol";
|
15
|
+
import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
|
16
|
+
|
17
|
+
abstract contract ComponentService is
|
18
|
+
Service
|
19
|
+
{
|
18
20
|
|
19
21
|
error ErrorComponentServiceNotComponent(address component);
|
20
22
|
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
21
23
|
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
22
24
|
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
23
25
|
error ErrorComponentServiceComponentLocked(address component);
|
26
|
+
error ErrorComponentServiceSenderNotService(address sender);
|
27
|
+
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
24
28
|
|
25
29
|
/// @dev modifier to check if caller is a registered service
|
26
30
|
modifier onlyService() {
|
27
31
|
address caller = msg.sender;
|
28
|
-
|
32
|
+
if(!getRegistry().isRegisteredService(caller)) {
|
33
|
+
revert ErrorComponentServiceSenderNotService(caller);
|
34
|
+
}
|
29
35
|
_;
|
30
36
|
}
|
31
37
|
|
@@ -39,10 +45,6 @@ abstract contract ComponentService is Service {
|
|
39
45
|
return InstanceService(_getServiceAddress(INSTANCE()));
|
40
46
|
}
|
41
47
|
|
42
|
-
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
43
|
-
return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
|
44
|
-
}
|
45
|
-
|
46
48
|
// internal functions
|
47
49
|
function _checkComponentForRegistration(
|
48
50
|
address componentAddress,
|
@@ -88,34 +90,61 @@ abstract contract ComponentService is Service {
|
|
88
90
|
}
|
89
91
|
|
90
92
|
// internal view functions
|
91
|
-
|
92
|
-
|
93
|
-
ObjectType expectedType
|
93
|
+
function _getAndVerifyCallingComponentAndInstance(
|
94
|
+
ObjectType expectedType // assume always of `component` type
|
94
95
|
)
|
95
96
|
internal
|
96
97
|
view
|
97
98
|
returns(
|
98
|
-
NftId
|
99
|
-
IRegistry.ObjectInfo memory
|
99
|
+
NftId componentNftId,
|
100
|
+
IRegistry.ObjectInfo memory componentInfo,
|
100
101
|
IInstance instance
|
101
102
|
)
|
102
103
|
{
|
103
|
-
|
104
|
-
|
105
|
-
info = registry.getObjectInfo(msg.sender);
|
106
|
-
require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
|
104
|
+
componentNftId = getRegistry().getNftId(msg.sender);
|
105
|
+
(componentInfo, instance) = _getAndVerifyComponentInfoAndInstance(componentNftId, expectedType);
|
107
106
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
if (instance.getInstanceAccessManager().isTargetLocked(info.objectAddress)) {
|
112
|
-
revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
|
107
|
+
// locked component can not call services
|
108
|
+
if (instance.getInstanceAccessManager().isTargetLocked(componentInfo.objectAddress)) {
|
109
|
+
revert IAccess.ErrorIAccessTargetLocked(componentInfo.objectAddress);
|
113
110
|
}
|
114
111
|
}
|
115
112
|
|
113
|
+
function _getAndVerifyComponentInfoAndInstance(
|
114
|
+
NftId componentNftId,
|
115
|
+
ObjectType expectedType // assume always of `component` type
|
116
|
+
)
|
117
|
+
internal
|
118
|
+
view
|
119
|
+
returns(
|
120
|
+
IRegistry.ObjectInfo memory componentInfo,
|
121
|
+
IInstance instance
|
122
|
+
)
|
123
|
+
{
|
124
|
+
componentInfo = getRegistry().getObjectInfo(componentNftId);
|
125
|
+
if(componentInfo.objectType != expectedType) {
|
126
|
+
revert ErrorComponentServiceComponentTypeInvalid(
|
127
|
+
componentInfo.objectAddress,
|
128
|
+
expectedType,
|
129
|
+
componentInfo.objectType);
|
130
|
+
}
|
131
|
+
|
132
|
+
instance = _getInstance(componentInfo.parentNftId);
|
133
|
+
}
|
134
|
+
// assume componentNftId is always of `instance` type
|
116
135
|
function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
|
117
136
|
return IInstance(
|
118
137
|
getRegistry().getObjectInfo(
|
119
138
|
instanceNftId).objectAddress);
|
120
139
|
}
|
121
|
-
|
140
|
+
// assume componentNftId is always of `component` type
|
141
|
+
/*function _getInstanceForComponent(NftId componentNftId) internal view returns (IInstance) {
|
142
|
+
NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
143
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
144
|
+
return IInstance(instanceAddress);
|
145
|
+
}*/
|
146
|
+
|
147
|
+
function _getServiceAddress(ObjectType domain) internal view returns (address) {
|
148
|
+
return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
|
149
|
+
}
|
150
|
+
}
|
@@ -7,11 +7,12 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
7
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
|
-
import {IProductService} from "../
|
10
|
+
import {IProductService} from "../product/IProductService.sol";
|
11
11
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
12
|
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
13
|
-
import {NftId} from "../
|
14
|
-
import {ObjectType} from "../
|
13
|
+
import {NftId} from "../type/NftId.sol";
|
14
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
15
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
15
16
|
|
16
17
|
/// @dev component base class
|
17
18
|
/// component examples are product, distribution, pool and oracle
|
@@ -29,9 +30,13 @@ interface IComponent is
|
|
29
30
|
error ErrorComponentWalletAddressIsSameAsCurrent();
|
30
31
|
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
31
32
|
|
33
|
+
error ErrorComponentWalletNotComponent();
|
34
|
+
|
32
35
|
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
33
36
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
34
37
|
|
38
|
+
event LogComponentTokenHandlerApproved(uint256 limit);
|
39
|
+
|
35
40
|
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
36
41
|
/// only component owner (nft holder) is authorizes to call this function
|
37
42
|
function lock() external;
|
@@ -40,6 +45,11 @@ interface IComponent is
|
|
40
45
|
/// only component owner (nft holder) is authorizes to call this function
|
41
46
|
function unlock() external;
|
42
47
|
|
48
|
+
/// @dev approves token hanlder to spend up to the specified amount of tokens
|
49
|
+
/// reverts if component wallet is not component itself
|
50
|
+
/// only component owner (nft holder) is authorizes to call this function
|
51
|
+
function approveTokenHandler(uint256 spendingLimitAmount) external;
|
52
|
+
|
43
53
|
/// @dev sets the wallet address for the component
|
44
54
|
/// if the current wallet has tokens, these will be transferred
|
45
55
|
/// if the new wallet address is externally owned, an approval from the
|
@@ -49,6 +59,9 @@ interface IComponent is
|
|
49
59
|
/// @dev only product service may set product nft id during registration of product setup
|
50
60
|
function setProductNftId(NftId productNftId) external;
|
51
61
|
|
62
|
+
/// @dev defines the instance to which this component is linked to
|
63
|
+
function getInstance() external view returns (IInstance instance);
|
64
|
+
|
52
65
|
/// @dev returns the name of this component
|
53
66
|
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
54
67
|
function getName() external view returns (string memory name);
|
@@ -56,8 +69,9 @@ interface IComponent is
|
|
56
69
|
/// @dev defines which ERC20 token is used by this component
|
57
70
|
function getToken() external view returns (IERC20Metadata token);
|
58
71
|
|
59
|
-
/// @dev
|
60
|
-
|
72
|
+
/// @dev returns token handler for this component
|
73
|
+
/// only registered components return a non zero token handler
|
74
|
+
function getTokenHandler() external view returns (TokenHandler tokenHandler);
|
61
75
|
|
62
76
|
/// @dev defines the wallet address used to hold the ERC20 tokens related to this component
|
63
77
|
/// the default address is the component token address
|