@etherisc/gif-next 0.0.2-fe88ad7-208 → 0.0.2-ff8087d-237
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 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +873 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +903 -202
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +237 -83
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +879 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +879 -59
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +720 -16
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +760 -195
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +564 -141
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1474 -483
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +248 -218
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1152 -794
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +462 -179
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +414 -267
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +482 -346
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -91
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +263 -164
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1124 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +641 -303
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +343 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1384 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +752 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1434 -280
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +469 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +342 -189
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +310 -249
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +757 -144
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +262 -275
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +703 -125
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -165
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +632 -344
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +367 -91
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1119 -224
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +361 -73
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +297 -210
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -78
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +117 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +99 -217
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +131 -27
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +18 -18
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +205 -250
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +81 -68
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +138 -50
- 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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +107 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -63
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +116 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +173 -153
- 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/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +116 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +191 -203
- 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/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +179 -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/Fee.sol/FeeLib.json +74 -19
- 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 +17 -4
- 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 +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +272 -0
- package/contracts/components/Distribution.sol +204 -82
- package/contracts/components/IComponent.sol +90 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +90 -42
- package/contracts/components/IProductComponent.sol +15 -9
- package/contracts/components/Pool.sol +217 -186
- package/contracts/components/Product.sol +246 -166
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +17 -20
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +67 -25
- package/contracts/instance/IInstanceService.sol +34 -11
- package/contracts/instance/Instance.sol +158 -116
- package/contracts/instance/InstanceAccessManager.sol +389 -165
- package/contracts/instance/InstanceReader.sol +87 -36
- package/contracts/instance/InstanceService.sol +295 -161
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +130 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +22 -16
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +3 -0
- package/contracts/instance/module/IPolicy.sol +43 -11
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +356 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +244 -119
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +443 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +360 -41
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +79 -0
- package/contracts/instance/service/IBundleService.sol +93 -20
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +89 -0
- package/contracts/instance/service/IPolicyService.sol +44 -51
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/PolicyService.sol +233 -364
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +319 -40
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +90 -50
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +18 -8
- package/contracts/registry/IRegistryService.sol +21 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +142 -71
- package/contracts/registry/RegistryAccessManager.sol +31 -25
- package/contracts/registry/RegistryService.sol +93 -134
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +103 -127
- package/contracts/registry/TokenRegistry.sol +19 -13
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +24 -39
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +36 -22
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +17 -8
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +11 -6
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +18 -11
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -397
- 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/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/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -159
- package/contracts/components/IBaseComponent.sol +0 -34
- 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
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -82
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -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";
|
8
|
-
import {ReferralId} from "../types/Referral.sol";
|
7
|
+
import {NftId, zeroNftId, NftIdLib, toNftId} from "../types/NftId.sol";
|
8
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../types/Referral.sol";
|
9
9
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
|
-
import {
|
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";
|
@@ -15,75 +16,205 @@ import {ISetup} from "../instance/module/ISetup.sol";
|
|
15
16
|
import {Registerable} from "../shared/Registerable.sol";
|
16
17
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
|
+
import {UFixed} from "../types/UFixed.sol";
|
20
|
+
import {DistributorType} from "../types/DistributorType.sol";
|
21
|
+
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
22
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
23
|
+
|
18
24
|
|
19
25
|
abstract contract Distribution is
|
20
|
-
|
26
|
+
Component,
|
21
27
|
IDistributionComponent
|
22
28
|
{
|
23
|
-
|
24
|
-
|
25
|
-
Fee internal _initialDistributionFee;
|
26
|
-
bool internal _isVerifying;
|
27
|
-
|
28
|
-
TokenHandler internal _tokenHandler;
|
29
|
-
|
30
|
-
IDistributionService private _distributionService;
|
31
|
-
IProductService private _productService;
|
29
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
|
30
|
+
bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
struct DistributionStorage {
|
33
|
+
Fee _minDistributionOwnerFee;
|
34
|
+
Fee _distributionFee;
|
35
|
+
TokenHandler _tokenHandler;
|
36
|
+
IDistributionService _distributionService;
|
37
|
+
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
38
38
|
}
|
39
39
|
|
40
|
-
|
40
|
+
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
41
|
+
|
42
|
+
function initializeDistribution(
|
41
43
|
address registry,
|
42
44
|
NftId instanceNftId,
|
43
|
-
|
45
|
+
string memory name,
|
44
46
|
address token,
|
45
|
-
|
47
|
+
Fee memory minDistributionOwnerFee,
|
46
48
|
Fee memory distributionFee,
|
47
|
-
address initialOwner
|
49
|
+
address initialOwner,
|
50
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
48
51
|
)
|
49
|
-
|
52
|
+
public
|
53
|
+
virtual
|
54
|
+
onlyInitializing()
|
50
55
|
{
|
51
|
-
|
52
|
-
_initialDistributionFee = distributionFee;
|
53
|
-
|
54
|
-
_tokenHandler = TokenHandler(token);
|
56
|
+
initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
|
55
57
|
|
56
|
-
|
57
|
-
|
58
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
59
|
+
// TODO add validation
|
60
|
+
$._minDistributionOwnerFee = minDistributionOwnerFee;
|
61
|
+
$._distributionFee = distributionFee;
|
62
|
+
$._tokenHandler = new TokenHandler(token);
|
63
|
+
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
58
64
|
|
59
|
-
|
65
|
+
registerInterface(type(IDistributionComponent).interfaceId);
|
60
66
|
}
|
61
67
|
|
62
|
-
|
63
68
|
function setFees(
|
69
|
+
Fee memory minDistributionOwnerFee,
|
64
70
|
Fee memory distributionFee
|
65
71
|
)
|
66
72
|
external
|
67
73
|
override
|
74
|
+
onlyOwner
|
75
|
+
restricted()
|
68
76
|
{
|
69
|
-
_distributionService.setFees(distributionFee);
|
77
|
+
_getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
|
70
78
|
}
|
71
79
|
|
72
|
-
function
|
73
|
-
|
74
|
-
|
80
|
+
function getDistributionFee() external view returns (Fee memory distributionFee) {
|
81
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
82
|
+
return $._distributionFee;
|
83
|
+
}
|
84
|
+
|
85
|
+
function createDistributorType(
|
86
|
+
string memory name,
|
87
|
+
UFixed minDiscountPercentage,
|
88
|
+
UFixed maxDiscountPercentage,
|
89
|
+
UFixed commissionPercentage,
|
90
|
+
uint32 maxReferralCount,
|
91
|
+
uint32 maxReferralLifetime,
|
92
|
+
bool allowSelfReferrals,
|
93
|
+
bool allowRenewals,
|
94
|
+
bytes memory data
|
95
|
+
)
|
96
|
+
public
|
97
|
+
returns (DistributorType distributorType)
|
98
|
+
{
|
99
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
100
|
+
distributorType = $._distributionService.createDistributorType(
|
101
|
+
name,
|
102
|
+
minDiscountPercentage,
|
103
|
+
maxDiscountPercentage,
|
104
|
+
commissionPercentage,
|
105
|
+
maxReferralCount,
|
106
|
+
maxReferralLifetime,
|
107
|
+
allowSelfReferrals,
|
108
|
+
allowRenewals,
|
109
|
+
data);
|
110
|
+
}
|
111
|
+
|
112
|
+
function createDistributor(
|
113
|
+
address distributor,
|
114
|
+
DistributorType distributorType,
|
115
|
+
bytes memory data
|
75
116
|
)
|
117
|
+
public
|
118
|
+
returns(NftId distributorNftId)
|
119
|
+
{
|
120
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
121
|
+
if($._distributorNftId[distributor].gtz()) {
|
122
|
+
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
123
|
+
}
|
124
|
+
|
125
|
+
distributorNftId = $._distributionService.createDistributor(
|
126
|
+
distributor,
|
127
|
+
distributorType,
|
128
|
+
data);
|
129
|
+
|
130
|
+
$._distributorNftId[distributor] = distributorNftId;
|
131
|
+
}
|
132
|
+
|
133
|
+
function updateDistributorType(
|
134
|
+
NftId distributorNftId,
|
135
|
+
DistributorType distributorType,
|
136
|
+
bytes memory data
|
137
|
+
)
|
138
|
+
public
|
139
|
+
// TODO figure out what we need for authz
|
140
|
+
// and add it
|
141
|
+
{
|
142
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
143
|
+
// TODO re-enable once implemented
|
144
|
+
// $._distributionService.updateDistributorType(
|
145
|
+
// distributorNftId,
|
146
|
+
// distributorType,
|
147
|
+
// data);
|
148
|
+
}
|
149
|
+
|
150
|
+
/**
|
151
|
+
* @dev lets distributors create referral codes.
|
152
|
+
* referral codes need to be unique
|
153
|
+
*/
|
154
|
+
function _createReferral(
|
155
|
+
NftId distributorNftId,
|
156
|
+
string memory code,
|
157
|
+
UFixed discountPercentage,
|
158
|
+
uint32 maxReferrals,
|
159
|
+
Timestamp expiryAt,
|
160
|
+
bytes memory data
|
161
|
+
)
|
162
|
+
internal
|
163
|
+
returns (ReferralId referralId)
|
164
|
+
{
|
165
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
166
|
+
referralId = $._distributionService.createReferral(
|
167
|
+
distributorNftId,
|
168
|
+
code,
|
169
|
+
discountPercentage,
|
170
|
+
maxReferrals,
|
171
|
+
expiryAt,
|
172
|
+
data);
|
173
|
+
}
|
174
|
+
|
175
|
+
function isDistributor(address candidate)
|
176
|
+
public
|
177
|
+
view
|
178
|
+
returns (bool)
|
179
|
+
{
|
180
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
181
|
+
return $._distributorNftId[candidate].gtz();
|
182
|
+
}
|
183
|
+
|
184
|
+
function getDistributorNftId(address distributor)
|
185
|
+
public
|
186
|
+
view
|
187
|
+
returns (NftId distributorNftId)
|
188
|
+
{
|
189
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
190
|
+
return $._distributorNftId[distributor];
|
191
|
+
}
|
192
|
+
|
193
|
+
function getDiscountPercentage(string memory referralCode)
|
76
194
|
external
|
77
195
|
view
|
78
|
-
|
79
|
-
|
196
|
+
returns (
|
197
|
+
UFixed discountPercentage,
|
198
|
+
ReferralStatus status
|
199
|
+
)
|
80
200
|
{
|
81
|
-
|
82
|
-
|
83
|
-
(feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
|
201
|
+
ReferralId referralId = getReferralId(referralCode);
|
202
|
+
return _getInstanceReader().getDiscountPercentage(referralId);
|
84
203
|
}
|
85
204
|
|
86
205
|
|
206
|
+
function getReferralId(
|
207
|
+
string memory referralCode
|
208
|
+
)
|
209
|
+
public
|
210
|
+
view
|
211
|
+
returns (ReferralId referralId)
|
212
|
+
{
|
213
|
+
return ReferralLib.toReferralId(
|
214
|
+
getNftId(),
|
215
|
+
referralCode);
|
216
|
+
}
|
217
|
+
|
87
218
|
function calculateRenewalFeeAmount(
|
88
219
|
ReferralId referralId,
|
89
220
|
uint256 netPremiumAmount
|
@@ -97,67 +228,58 @@ abstract contract Distribution is
|
|
97
228
|
return 0 * netPremiumAmount;
|
98
229
|
}
|
99
230
|
|
100
|
-
function
|
231
|
+
function processRenewal(
|
101
232
|
ReferralId referralId,
|
102
233
|
uint256 feeAmount
|
103
234
|
)
|
104
235
|
external
|
105
|
-
|
236
|
+
onlyOwner
|
237
|
+
restricted()
|
106
238
|
virtual override
|
107
239
|
{
|
108
240
|
// default is no action
|
109
241
|
}
|
110
242
|
|
111
|
-
function
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
// default is no action
|
243
|
+
function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
244
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
245
|
+
setupInfo = reader.getDistributionSetupInfo(getNftId());
|
246
|
+
|
247
|
+
// fallback to initial setup info (wallet is always != address(0))
|
248
|
+
if(setupInfo.wallet == address(0)) {
|
249
|
+
setupInfo = _getInitialSetupInfo();
|
250
|
+
}
|
120
251
|
}
|
121
252
|
|
122
|
-
function
|
123
|
-
|
124
|
-
return
|
253
|
+
function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
254
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
255
|
+
return ISetup.DistributionSetupInfo(
|
256
|
+
zeroNftId(),
|
257
|
+
$._tokenHandler,
|
258
|
+
$._minDistributionOwnerFee,
|
259
|
+
$._distributionFee,
|
260
|
+
address(this),
|
261
|
+
0
|
262
|
+
);
|
125
263
|
}
|
126
264
|
|
127
|
-
|
128
|
-
|
129
|
-
|
265
|
+
|
266
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
267
|
+
// keep track of distributor nft owner
|
268
|
+
emit LogDistributorUpdated(to, msg.sender);
|
269
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
270
|
+
$._distributorNftId[from] = zeroNftId();
|
271
|
+
$._distributorNftId[to] = toNftId(tokenId);
|
130
272
|
}
|
131
273
|
|
132
274
|
|
133
275
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
134
276
|
function isVerifying() external view returns (bool verifying) {
|
135
|
-
return
|
277
|
+
return true;
|
136
278
|
}
|
137
279
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
view
|
143
|
-
override (IRegisterable, Registerable)
|
144
|
-
returns(IRegistry.ObjectInfo memory, bytes memory)
|
145
|
-
{
|
146
|
-
(
|
147
|
-
IRegistry.ObjectInfo memory info,
|
148
|
-
) = super.getInitialInfo();
|
149
|
-
|
150
|
-
return (
|
151
|
-
info,
|
152
|
-
abi.encode(
|
153
|
-
ISetup.DistributionSetupInfo(
|
154
|
-
_productNftId,
|
155
|
-
_tokenHandler,
|
156
|
-
_initialDistributionFee,
|
157
|
-
_isVerifying,
|
158
|
-
address(this)
|
159
|
-
)
|
160
|
-
)
|
161
|
-
);
|
280
|
+
function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
|
281
|
+
assembly {
|
282
|
+
$.slot := DISTRIBUTION_STORAGE_LOCATION_V1
|
283
|
+
}
|
162
284
|
}
|
163
285
|
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
+
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
9
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
11
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
13
|
+
import {NftId} from "../types/NftId.sol";
|
14
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
15
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
|
+
|
17
|
+
/// @dev component base class
|
18
|
+
/// component examples are product, distribution, pool and oracle
|
19
|
+
interface IComponent is
|
20
|
+
IRegisterable,
|
21
|
+
ITransferInterceptor,
|
22
|
+
IAccessManaged
|
23
|
+
{
|
24
|
+
error ErrorComponentNotChainNft(address caller);
|
25
|
+
error ErrorComponentNotProductService(address caller);
|
26
|
+
error ErrorComponentNotInstance(NftId instanceNftId);
|
27
|
+
error ErrorComponentProductNftAlreadySet();
|
28
|
+
|
29
|
+
error ErrorComponentWalletAddressZero();
|
30
|
+
error ErrorComponentWalletAddressIsSameAsCurrent();
|
31
|
+
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
32
|
+
|
33
|
+
error ErrorComponentWalletNotComponent();
|
34
|
+
|
35
|
+
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
36
|
+
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
37
|
+
|
38
|
+
event LogComponentTokenHandlerApproved(uint256 limit);
|
39
|
+
|
40
|
+
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
41
|
+
/// only component owner (nft holder) is authorizes to call this function
|
42
|
+
function lock() external;
|
43
|
+
|
44
|
+
/// @dev unlocks component to (re-)enable functions that may change state related to this component
|
45
|
+
/// only component owner (nft holder) is authorizes to call this function
|
46
|
+
function unlock() external;
|
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
|
+
|
53
|
+
/// @dev sets the wallet address for the component
|
54
|
+
/// if the current wallet has tokens, these will be transferred
|
55
|
+
/// if the new wallet address is externally owned, an approval from the
|
56
|
+
/// owner of the external wallet for the component to move all tokens must exist
|
57
|
+
function setWallet(address walletAddress) external;
|
58
|
+
|
59
|
+
/// @dev only product service may set product nft id during registration of product setup
|
60
|
+
function setProductNftId(NftId productNftId) external;
|
61
|
+
|
62
|
+
/// @dev defines the instance to which this component is linked to
|
63
|
+
function getInstance() external view returns (IInstance instance);
|
64
|
+
|
65
|
+
/// @dev returns the name of this component
|
66
|
+
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
67
|
+
function getName() external view returns (string memory name);
|
68
|
+
|
69
|
+
/// @dev defines which ERC20 token is used by this component
|
70
|
+
function getToken() external view returns (IERC20Metadata token);
|
71
|
+
|
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);
|
75
|
+
|
76
|
+
/// @dev defines the wallet address used to hold the ERC20 tokens related to this component
|
77
|
+
/// the default address is the component token address
|
78
|
+
function getWallet() external view returns (address walletAddress);
|
79
|
+
|
80
|
+
/// @dev defines the product to which this component is linked to
|
81
|
+
/// this is only relevant for pool and distribution components
|
82
|
+
function getProductNftId() external view returns (NftId productNftId);
|
83
|
+
|
84
|
+
function isNftInterceptor() external view returns(bool isInterceptor);
|
85
|
+
|
86
|
+
/// @dev returns component infos for this pool
|
87
|
+
/// when registered with an instance the info is obtained from the data stored in the instance
|
88
|
+
/// when not registered the function returns the info from the component contract
|
89
|
+
function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
|
90
|
+
}
|
@@ -2,42 +2,69 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {Fee} from "../types/Fee.sol";
|
5
|
-
import {
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {IComponent} from "./IComponent.sol";
|
7
6
|
import {ISetup} from "../instance/module/ISetup.sol";
|
7
|
+
import {ReferralId, ReferralStatus} from "../types/Referral.sol";
|
8
|
+
import {NftId} from "../types/NftId.sol";
|
9
|
+
import {DistributorType} from "../types/DistributorType.sol";
|
10
|
+
import {UFixed} from "../types/UFixed.sol";
|
11
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
12
|
+
|
13
|
+
interface IDistributionComponent is IComponent {
|
14
|
+
|
15
|
+
event LogDistributorUpdated(address to, address caller);
|
8
16
|
|
9
|
-
|
17
|
+
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
10
18
|
|
11
19
|
function setFees(
|
20
|
+
Fee memory minDistributionOwnerFee,
|
12
21
|
Fee memory distributionFee
|
13
22
|
) external;
|
14
23
|
|
15
|
-
function
|
16
|
-
|
17
|
-
|
18
|
-
|
24
|
+
function createDistributorType(
|
25
|
+
string memory name,
|
26
|
+
UFixed minDiscountPercentage,
|
27
|
+
UFixed maxDiscountPercentage,
|
28
|
+
UFixed commissionPercentage,
|
29
|
+
uint32 maxReferralCount,
|
30
|
+
uint32 maxReferralLifetime,
|
31
|
+
bool allowSelfReferrals,
|
32
|
+
bool allowRenewals,
|
33
|
+
bytes memory data
|
34
|
+
) external returns (DistributorType distributorType);
|
35
|
+
|
36
|
+
function createDistributor(
|
37
|
+
address distributor,
|
38
|
+
DistributorType distributorType,
|
39
|
+
bytes memory data
|
40
|
+
) external returns(NftId distributorNftId);
|
41
|
+
|
42
|
+
function updateDistributorType(
|
43
|
+
NftId distributorNftId,
|
44
|
+
DistributorType distributorType,
|
45
|
+
bytes memory data
|
46
|
+
) external;
|
19
47
|
|
20
48
|
function calculateRenewalFeeAmount(
|
21
49
|
ReferralId referralId,
|
22
50
|
uint256 netPremiumAmount
|
23
51
|
) external view returns (uint256 feeAmount);
|
24
52
|
|
25
|
-
/// @dev callback from product service when selling a policy for a specific referralId
|
26
|
-
/// the used referral id and the collected fee are provided as parameters
|
27
|
-
/// the component implementation can then process this information accordingly
|
28
|
-
function processSale(
|
29
|
-
ReferralId referralId,
|
30
|
-
uint256 feeAmount
|
31
|
-
) external;
|
32
|
-
|
33
53
|
/// @dev callback from product service when a policy is renews for a specific referralId
|
34
54
|
function processRenewal(
|
35
55
|
ReferralId referralId,
|
36
56
|
uint256 feeAmount
|
37
57
|
) external;
|
38
58
|
|
39
|
-
|
40
|
-
|
59
|
+
function getDiscountPercentage(
|
60
|
+
string memory referralCode
|
61
|
+
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
62
|
+
|
63
|
+
function getDistributionFee() external view returns (Fee memory distibutionFee);
|
64
|
+
|
65
|
+
function getReferralId(
|
66
|
+
string memory referralCode
|
67
|
+
) external returns (ReferralId referralId);
|
41
68
|
|
42
69
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
43
70
|
function isVerifying() external view returns (bool verifying);
|