@etherisc/gif-next 0.0.2-770fd3b-604 → 0.0.2-77a1ccf-469
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 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +22 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +79 -233
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +19 -92
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +57 -178
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +239 -104
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +23 -164
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +240 -155
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +27 -218
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +343 -308
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +469 -466
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +79 -110
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/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/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +54 -276
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +645 -268
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -109
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +26 -191
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -167
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +12 -177
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +65 -443
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +42 -272
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +179 -104
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
- 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 +71 -180
- 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 +7 -7
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +90 -264
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- 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/shared/Versionable.sol/Versionable.json +0 -150
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +69 -84
- package/contracts/components/Distribution.sol +26 -31
- package/contracts/components/IComponent.sol +34 -16
- package/contracts/components/IDistributionComponent.sol +1 -22
- package/contracts/components/IPoolComponent.sol +89 -25
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +216 -92
- package/contracts/components/Product.sol +36 -25
- package/contracts/instance/BundleManager.sol +1 -1
- package/contracts/instance/IInstance.sol +7 -1
- package/contracts/instance/Instance.sol +17 -7
- package/contracts/instance/InstanceService.sol +67 -10
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +5 -6
- package/contracts/instance/service/ApplicationService.sol +138 -57
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +4 -3
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +146 -26
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -9
- package/contracts/instance/service/IBundleService.sol +3 -2
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +23 -2
- package/contracts/instance/service/IPolicyService.sol +17 -35
- package/contracts/instance/service/PolicyService.sol +47 -169
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistryService.sol +10 -8
- package/contracts/registry/Registry.sol +3 -1
- package/contracts/registry/RegistryService.sol +62 -40
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +18 -28
- package/contracts/registry/TokenRegistry.sol +13 -10
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/INftOwnable.sol +4 -9
- package/contracts/shared/IRegistryLinked.sol +0 -3
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +10 -80
- package/contracts/shared/ProxyManager.sol +98 -24
- package/contracts/shared/Registerable.sol +3 -10
- package/contracts/shared/RegistryLinked.sol +10 -26
- package/contracts/shared/Service.sol +10 -12
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/ObjectType.sol +4 -4
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +10 -5
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/Timestamp.sol +12 -13
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -18,6 +18,7 @@ import {VersionPart} from "../types/Version.sol";
|
|
18
18
|
import {Registerable} from "../shared/Registerable.sol";
|
19
19
|
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
20
20
|
import {IAccess} from "../instance/module/IAccess.sol";
|
21
|
+
import {VersionPart} from "../types/Version.sol";
|
21
22
|
|
22
23
|
// TODO discuss to inherit from oz accessmanaged
|
23
24
|
// then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
|
@@ -28,40 +29,21 @@ abstract contract Component is
|
|
28
29
|
AccessManagedUpgradeable
|
29
30
|
{
|
30
31
|
// keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
|
31
|
-
bytes32 public constant
|
32
|
+
bytes32 public constant COMPONENT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
|
32
33
|
|
33
34
|
struct ComponentStorage {
|
34
|
-
IInstance _instance; // instance for this component
|
35
|
-
InstanceReader _instanceReader; // instance reader for this component
|
36
35
|
string _name; // unique (per instance) component name
|
37
36
|
IERC20Metadata _token; // token for this component
|
37
|
+
IInstance _instance; // instance for this component
|
38
38
|
address _wallet; // wallet for this component (default = component contract itself)
|
39
|
+
InstanceReader _instanceReader; // instance reader for this component
|
39
40
|
bool _isNftInterceptor; // declares if component is involved in nft transfers
|
40
|
-
IInstanceService _instanceService; // instance service for this component
|
41
|
-
|
42
41
|
NftId _productNftId; // only relevant for components that are linked to a aproduct
|
43
|
-
IProductService _productService; // product service for component, might not be relevant for some component types (eg oracles)
|
44
|
-
}
|
45
|
-
|
46
|
-
|
47
|
-
modifier onlyChainNft() {
|
48
|
-
if(msg.sender != getRegistry().getChainNftAddress()) {
|
49
|
-
revert ErrorComponentNotChainNft(msg.sender);
|
50
|
-
}
|
51
|
-
_;
|
52
|
-
}
|
53
|
-
|
54
|
-
|
55
|
-
modifier onlyProductService() {
|
56
|
-
if(msg.sender != address(_getComponentStorage()._productService)) {
|
57
|
-
revert ErrorComponentNotProductService(msg.sender);
|
58
|
-
}
|
59
|
-
_;
|
60
42
|
}
|
61
43
|
|
62
44
|
function _getComponentStorage() private pure returns (ComponentStorage storage $) {
|
63
45
|
assembly {
|
64
|
-
$.slot :=
|
46
|
+
$.slot := COMPONENT_LOCATION_V1
|
65
47
|
}
|
66
48
|
}
|
67
49
|
|
@@ -73,78 +55,44 @@ abstract contract Component is
|
|
73
55
|
ObjectType componentType,
|
74
56
|
bool isInterceptor,
|
75
57
|
address initialOwner,
|
76
|
-
bytes memory data
|
58
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
77
59
|
)
|
78
60
|
public
|
79
61
|
virtual
|
80
62
|
onlyInitializing()
|
81
63
|
{
|
82
|
-
|
83
|
-
initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, data);
|
84
|
-
|
85
|
-
// set unique name of component
|
86
|
-
$._name = name;
|
87
|
-
$._isNftInterceptor = isInterceptor;
|
64
|
+
initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, registryData);
|
88
65
|
|
89
66
|
// set and check linked instance
|
90
|
-
|
91
|
-
$._instance = IInstance(
|
67
|
+
ComponentStorage storage $ = _getComponentStorage();
|
68
|
+
$._instance = IInstance(
|
69
|
+
getRegistry().getObjectInfo(instanceNftId).objectAddress);
|
70
|
+
|
92
71
|
if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
|
93
|
-
revert ErrorComponentNotInstance(instanceNftId
|
72
|
+
revert ErrorComponentNotInstance(instanceNftId);
|
94
73
|
}
|
95
74
|
|
96
75
|
// initialize AccessManagedUpgradeable
|
97
76
|
__AccessManaged_init($._instance.authority());
|
98
77
|
|
99
|
-
// set
|
100
|
-
|
101
|
-
$.
|
78
|
+
// set component state
|
79
|
+
$._name = name;
|
80
|
+
$._isNftInterceptor = isInterceptor;
|
102
81
|
$._instanceReader = $._instance.getInstanceReader();
|
103
|
-
$._productService = IProductService(getRegistry().getServiceAddress(PRODUCT(), gifVersion));
|
104
|
-
|
105
|
-
// set wallet and token
|
106
82
|
$._wallet = address(this);
|
107
83
|
$._token = IERC20Metadata(token);
|
108
84
|
|
109
85
|
registerInterface(type(IComponent).interfaceId);
|
110
86
|
}
|
111
87
|
|
112
|
-
/// @dev callback function for nft transfers. may only be called by chain nft contract.
|
113
|
-
/// default implementation is empty. overriding functions MUST add onlyChainNft modifier
|
114
|
-
function nftTransferFrom(address from, address to, uint256 tokenId)
|
115
|
-
external
|
116
|
-
virtual override
|
117
|
-
onlyChainNft()
|
118
|
-
{ }
|
119
|
-
|
120
|
-
// TODO discuss replacement with modifier restricted from accessmanaged
|
121
88
|
function lock() external onlyOwner override {
|
122
|
-
|
89
|
+
IInstanceService(_getServiceAddress(INSTANCE())).setTargetLocked(getName(), true);
|
123
90
|
}
|
124
91
|
|
125
92
|
function unlock() external onlyOwner override {
|
126
|
-
|
93
|
+
IInstanceService(_getServiceAddress(INSTANCE())).setTargetLocked(getName(), false);
|
127
94
|
}
|
128
95
|
|
129
|
-
// only product service may set product nft id during registration of product setup
|
130
|
-
function setProductNftId(NftId productNftId)
|
131
|
-
external
|
132
|
-
override
|
133
|
-
onlyProductService()
|
134
|
-
{
|
135
|
-
ComponentStorage storage $ = _getComponentStorage();
|
136
|
-
|
137
|
-
if($._productNftId.gtz()) {
|
138
|
-
revert ErrorComponentProductNftAlreadySet();
|
139
|
-
}
|
140
|
-
|
141
|
-
$._productNftId = productNftId;
|
142
|
-
}
|
143
|
-
|
144
|
-
/// @dev Sets the wallet address for the component.
|
145
|
-
/// if the current wallet has tokens, these will be transferred.
|
146
|
-
/// if the new wallet address is externally owned, an approval from the
|
147
|
-
/// owner of the external wallet for the component to move all tokens must exist.
|
148
96
|
function setWallet(address newWallet)
|
149
97
|
external
|
150
98
|
override
|
@@ -159,8 +107,9 @@ abstract contract Component is
|
|
159
107
|
if (newWallet == address(0)) {
|
160
108
|
revert ErrorComponentWalletAddressZero();
|
161
109
|
}
|
110
|
+
|
162
111
|
if (newWallet == currentWallet) {
|
163
|
-
revert ErrorComponentWalletAddressIsSameAsCurrent(
|
112
|
+
revert ErrorComponentWalletAddressIsSameAsCurrent();
|
164
113
|
}
|
165
114
|
|
166
115
|
if (currentBalance > 0) {
|
@@ -177,7 +126,7 @@ abstract contract Component is
|
|
177
126
|
|
178
127
|
// effects
|
179
128
|
$._wallet = newWallet;
|
180
|
-
emit LogComponentWalletAddressChanged(newWallet);
|
129
|
+
emit LogComponentWalletAddressChanged(currentWallet, newWallet);
|
181
130
|
|
182
131
|
// interactions
|
183
132
|
if (currentBalance > 0) {
|
@@ -192,11 +141,41 @@ abstract contract Component is
|
|
192
141
|
}
|
193
142
|
}
|
194
143
|
|
195
|
-
function
|
196
|
-
|
197
|
-
view
|
144
|
+
function setProductNftId(NftId productNftId)
|
145
|
+
external
|
198
146
|
override
|
199
|
-
|
147
|
+
{
|
148
|
+
ComponentStorage storage $ = _getComponentStorage();
|
149
|
+
|
150
|
+
// verify caller is product service
|
151
|
+
if(msg.sender != _getServiceAddress(PRODUCT())) {
|
152
|
+
revert ErrorComponentNotProductService(msg.sender);
|
153
|
+
}
|
154
|
+
|
155
|
+
// verify component is not yet linked to a product
|
156
|
+
if($._productNftId.gtz()) {
|
157
|
+
revert ErrorComponentProductNftAlreadySet();
|
158
|
+
}
|
159
|
+
|
160
|
+
$._productNftId = productNftId;
|
161
|
+
}
|
162
|
+
|
163
|
+
/// @dev callback function for nft transfers
|
164
|
+
/// may only be called by chain nft contract.
|
165
|
+
/// do not override this function to implement business logic for handling transfers
|
166
|
+
/// override internal function _nftTransferFrom instead
|
167
|
+
function nftTransferFrom(address from, address to, uint256 tokenId)
|
168
|
+
external
|
169
|
+
virtual override
|
170
|
+
{
|
171
|
+
if(msg.sender != getRegistry().getChainNftAddress()) {
|
172
|
+
revert ErrorComponentNotChainNft(msg.sender);
|
173
|
+
}
|
174
|
+
|
175
|
+
_nftTransferFrom(from, to, tokenId);
|
176
|
+
}
|
177
|
+
|
178
|
+
function getWallet() public view override returns (address walletAddress)
|
200
179
|
{
|
201
180
|
return _getComponentStorage()._wallet;
|
202
181
|
}
|
@@ -213,10 +192,6 @@ abstract contract Component is
|
|
213
192
|
return _getComponentStorage()._instance;
|
214
193
|
}
|
215
194
|
|
216
|
-
function getInstanceReader() public view returns (InstanceReader reader) {
|
217
|
-
return _getComponentStorage()._instanceReader;
|
218
|
-
}
|
219
|
-
|
220
195
|
function getName() public view override returns(string memory name) {
|
221
196
|
return _getComponentStorage()._name;
|
222
197
|
}
|
@@ -225,12 +200,22 @@ abstract contract Component is
|
|
225
200
|
return _getComponentStorage()._productNftId;
|
226
201
|
}
|
227
202
|
|
228
|
-
|
229
|
-
|
230
|
-
|
203
|
+
/// @dev internal function for nft transfers.
|
204
|
+
/// handling logic that deals with nft transfers need to overwrite this function
|
205
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId)
|
206
|
+
internal
|
207
|
+
virtual
|
208
|
+
{ }
|
231
209
|
|
232
|
-
|
233
|
-
|
210
|
+
/// @dev returns reader for linked instance
|
211
|
+
function _getInstanceReader() internal view returns (InstanceReader reader) {
|
212
|
+
return _getComponentStorage()._instanceReader;
|
234
213
|
}
|
235
214
|
|
215
|
+
/// @dev returns the service address for the specified domain
|
216
|
+
/// gets address via lookup from registry using the major version form the linked instance
|
217
|
+
function _getServiceAddress(ObjectType domain) internal view returns (address service) {
|
218
|
+
VersionPart majorVersion = _getComponentStorage()._instance.getMajorVersion();
|
219
|
+
return getRegistry().getServiceAddress(domain, majorVersion);
|
220
|
+
}
|
236
221
|
}
|
@@ -4,10 +4,11 @@ pragma solidity ^0.8.19;
|
|
4
4
|
import {DISTRIBUTION} from "../types/ObjectType.sol";
|
5
5
|
import {IDistributionService} from "../instance/service/IDistributionService.sol";
|
6
6
|
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
-
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
7
|
+
import {NftId, zeroNftId, NftIdLib, toNftId} from "../types/NftId.sol";
|
8
8
|
import {ReferralId, ReferralStatus, ReferralLib} from "../types/Referral.sol";
|
9
9
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
10
|
import {Component} from "./Component.sol";
|
11
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
11
12
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
12
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
14
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
@@ -17,7 +18,8 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
17
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
19
|
import {UFixed} from "../types/UFixed.sol";
|
19
20
|
import {DistributorType} from "../types/DistributorType.sol";
|
20
|
-
import {Timestamp} from "../types/Timestamp.sol";
|
21
|
+
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
22
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
21
23
|
|
22
24
|
|
23
25
|
abstract contract Distribution is
|
@@ -28,6 +30,7 @@ abstract contract Distribution is
|
|
28
30
|
bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
|
29
31
|
|
30
32
|
struct DistributionStorage {
|
33
|
+
Fee _minDistributionOwnerFee;
|
31
34
|
Fee _distributionFee;
|
32
35
|
TokenHandler _tokenHandler;
|
33
36
|
IDistributionService _distributionService;
|
@@ -39,18 +42,20 @@ abstract contract Distribution is
|
|
39
42
|
NftId instanceNftId,
|
40
43
|
string memory name,
|
41
44
|
address token,
|
45
|
+
Fee memory minDistributionOwnerFee,
|
42
46
|
Fee memory distributionFee,
|
43
47
|
address initialOwner,
|
44
|
-
bytes memory data
|
48
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
45
49
|
)
|
46
50
|
public
|
47
51
|
virtual
|
48
52
|
onlyInitializing()
|
49
53
|
{
|
50
|
-
initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner,
|
54
|
+
initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
|
51
55
|
|
52
56
|
DistributionStorage storage $ = _getDistributionStorage();
|
53
57
|
// TODO add validation
|
58
|
+
$._minDistributionOwnerFee = minDistributionOwnerFee;
|
54
59
|
$._distributionFee = distributionFee;
|
55
60
|
$._tokenHandler = new TokenHandler(token);
|
56
61
|
$._distributionService = getInstance().getDistributionService();
|
@@ -59,6 +64,7 @@ abstract contract Distribution is
|
|
59
64
|
}
|
60
65
|
|
61
66
|
function setFees(
|
67
|
+
Fee memory minDistributionOwnerFee,
|
62
68
|
Fee memory distributionFee
|
63
69
|
)
|
64
70
|
external
|
@@ -66,7 +72,7 @@ abstract contract Distribution is
|
|
66
72
|
onlyOwner
|
67
73
|
restricted()
|
68
74
|
{
|
69
|
-
_getDistributionStorage()._distributionService.setFees(distributionFee);
|
75
|
+
_getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
|
70
76
|
}
|
71
77
|
|
72
78
|
function getDistributionFee() external view returns (Fee memory distributionFee) {
|
@@ -140,7 +146,7 @@ abstract contract Distribution is
|
|
140
146
|
* @dev lets distributors create referral codes.
|
141
147
|
* referral codes need to be unique
|
142
148
|
*/
|
143
|
-
function
|
149
|
+
function _createReferral(
|
144
150
|
NftId distributorNftId,
|
145
151
|
string memory code,
|
146
152
|
UFixed discountPercentage,
|
@@ -148,8 +154,7 @@ abstract contract Distribution is
|
|
148
154
|
Timestamp expiryAt,
|
149
155
|
bytes memory data
|
150
156
|
)
|
151
|
-
|
152
|
-
// TODO add authz (only active distributor)
|
157
|
+
internal
|
153
158
|
returns (ReferralId referralId)
|
154
159
|
{
|
155
160
|
DistributionStorage storage $ = _getDistributionStorage();
|
@@ -162,22 +167,6 @@ abstract contract Distribution is
|
|
162
167
|
data);
|
163
168
|
}
|
164
169
|
|
165
|
-
function calculateFeeAmount(
|
166
|
-
ReferralId referralId,
|
167
|
-
uint256 netPremiumAmount
|
168
|
-
)
|
169
|
-
external
|
170
|
-
view
|
171
|
-
virtual override
|
172
|
-
returns (uint256 feeAmount)
|
173
|
-
{
|
174
|
-
ISetup.DistributionSetupInfo memory setupInfo = getSetupInfo();
|
175
|
-
Fee memory fee = setupInfo.distributionFee;
|
176
|
-
(feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
|
177
|
-
// TODO: use this?
|
178
|
-
// return _distributionService.calculateFeeAmount(referralId, premiumAmount);
|
179
|
-
}
|
180
|
-
|
181
170
|
function isDistributor(address candidate)
|
182
171
|
public
|
183
172
|
view
|
@@ -205,7 +194,7 @@ abstract contract Distribution is
|
|
205
194
|
)
|
206
195
|
{
|
207
196
|
ReferralId referralId = getReferralId(referralCode);
|
208
|
-
return
|
197
|
+
return _getInstanceReader().getDiscountPercentage(referralId);
|
209
198
|
}
|
210
199
|
|
211
200
|
|
@@ -259,11 +248,6 @@ abstract contract Distribution is
|
|
259
248
|
// default is no action
|
260
249
|
}
|
261
250
|
|
262
|
-
function referralIsValid(ReferralId referralId) external view returns (bool isValid) {
|
263
|
-
// default is invalid
|
264
|
-
return false;
|
265
|
-
}
|
266
|
-
|
267
251
|
function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
268
252
|
InstanceReader reader = getInstance().getInstanceReader();
|
269
253
|
setupInfo = reader.getDistributionSetupInfo(getNftId());
|
@@ -279,10 +263,21 @@ abstract contract Distribution is
|
|
279
263
|
return ISetup.DistributionSetupInfo(
|
280
264
|
zeroNftId(),
|
281
265
|
$._tokenHandler,
|
266
|
+
$._minDistributionOwnerFee,
|
282
267
|
$._distributionFee,
|
283
|
-
address(this)
|
268
|
+
address(this),
|
269
|
+
0
|
284
270
|
);
|
285
271
|
}
|
272
|
+
|
273
|
+
|
274
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
275
|
+
// keep track of distributor nft owner
|
276
|
+
emit LogDistributorUpdated(to, msg.sender);
|
277
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
278
|
+
$._distributorNftId[from] = zeroNftId();
|
279
|
+
$._distributorNftId[to] = toNftId(tokenId);
|
280
|
+
}
|
286
281
|
|
287
282
|
|
288
283
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
@@ -3,48 +3,66 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
7
6
|
import {IInstance} from "../instance/IInstance.sol";
|
8
7
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
9
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
10
|
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
11
11
|
import {NftId} from "../types/NftId.sol";
|
12
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
12
13
|
|
14
|
+
/// @dev component base class
|
15
|
+
/// component examples are product, distribution, pool and oracle
|
13
16
|
interface IComponent is
|
14
17
|
IRegisterable,
|
15
18
|
ITransferInterceptor
|
16
19
|
{
|
17
|
-
|
18
20
|
error ErrorComponentNotChainNft(address caller);
|
19
21
|
error ErrorComponentNotProductService(address caller);
|
20
|
-
error ErrorComponentNotInstance(NftId instanceNftId
|
22
|
+
error ErrorComponentNotInstance(NftId instanceNftId);
|
21
23
|
error ErrorComponentProductNftAlreadySet();
|
24
|
+
|
22
25
|
error ErrorComponentWalletAddressZero();
|
23
|
-
error ErrorComponentWalletAddressIsSameAsCurrent(
|
26
|
+
error ErrorComponentWalletAddressIsSameAsCurrent();
|
24
27
|
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
25
|
-
error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
|
26
28
|
|
27
|
-
event LogComponentWalletAddressChanged(address newWallet);
|
29
|
+
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
28
30
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
// TODO remove and replace with accessmanaged target locking mechanism
|
32
|
+
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
33
|
+
/// only component owner (nft holder) is authorizes to call this function
|
33
34
|
function lock() external;
|
34
|
-
function unlock() external;
|
35
35
|
|
36
|
-
|
36
|
+
/// @dev unlocks component to (re-)enable functions that may change state related to this component
|
37
|
+
/// only component owner (nft holder) is authorizes to call this function
|
38
|
+
function unlock() external;
|
37
39
|
|
40
|
+
/// @dev sets the wallet address for the component
|
41
|
+
/// if the current wallet has tokens, these will be transferred
|
42
|
+
/// if the new wallet address is externally owned, an approval from the
|
43
|
+
/// owner of the external wallet for the component to move all tokens must exist
|
38
44
|
function setWallet(address walletAddress) external;
|
39
|
-
function getWallet() external view returns (address walletAddress);
|
40
45
|
|
41
|
-
|
46
|
+
/// @dev only product service may set product nft id during registration of product setup
|
47
|
+
function setProductNftId(NftId productNftId) external;
|
48
|
+
|
49
|
+
/// @dev returns the name of this component
|
50
|
+
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
51
|
+
function getName() external view returns (string memory name);
|
52
|
+
|
53
|
+
/// @dev defines which ERC20 token is used by this component
|
54
|
+
function getToken() external view returns (IERC20Metadata token);
|
42
55
|
|
56
|
+
/// @dev defines the instance to which this component is linked to
|
43
57
|
function getInstance() external view returns (IInstance instance);
|
44
58
|
|
45
|
-
|
59
|
+
/// @dev defines the wallet address used to hold the ERC20 tokens related to this component
|
60
|
+
/// the default address is the component token address
|
61
|
+
function getWallet() external view returns (address walletAddress);
|
62
|
+
|
63
|
+
/// @dev defines the product to which this component is linked to
|
64
|
+
/// this is only relevant for pool and distribution components
|
46
65
|
function getProductNftId() external view returns (NftId productNftId);
|
47
66
|
|
48
|
-
function
|
49
|
-
function getProductService() external view returns (IProductService);
|
67
|
+
function isNftInterceptor() external view returns(bool isInterceptor);
|
50
68
|
}
|
@@ -17,6 +17,7 @@ interface IDistributionComponent is IComponent {
|
|
17
17
|
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
18
18
|
|
19
19
|
function setFees(
|
20
|
+
Fee memory minDistributionOwnerFee,
|
20
21
|
Fee memory distributionFee
|
21
22
|
) external;
|
22
23
|
|
@@ -44,25 +45,6 @@ interface IDistributionComponent is IComponent {
|
|
44
45
|
bytes memory data
|
45
46
|
) external;
|
46
47
|
|
47
|
-
/**
|
48
|
-
* @dev lets distributors create referral codes.
|
49
|
-
* referral codes need to be unique
|
50
|
-
* distributor is identified via msg.sender.
|
51
|
-
*/
|
52
|
-
function createReferral(
|
53
|
-
NftId distributorNftId,
|
54
|
-
string memory code,
|
55
|
-
UFixed discountPercentage,
|
56
|
-
uint32 maxReferrals,
|
57
|
-
Timestamp expiryAt,
|
58
|
-
bytes memory data
|
59
|
-
) external returns (ReferralId referralId);
|
60
|
-
|
61
|
-
function calculateFeeAmount(
|
62
|
-
ReferralId referralId,
|
63
|
-
uint256 netPremiumAmount
|
64
|
-
) external view returns (uint256 feeAmount);
|
65
|
-
|
66
48
|
function calculateRenewalFeeAmount(
|
67
49
|
ReferralId referralId,
|
68
50
|
uint256 netPremiumAmount
|
@@ -92,9 +74,6 @@ interface IDistributionComponent is IComponent {
|
|
92
74
|
string memory referralCode
|
93
75
|
) external returns (ReferralId referralId);
|
94
76
|
|
95
|
-
/// @dev returns true iff the referral id is valid
|
96
|
-
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
97
|
-
|
98
77
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
99
78
|
function isVerifying() external view returns (bool verifying);
|
100
79
|
}
|