@etherisc/gif-next 0.0.2-b2e620f-736 → 0.0.2-b37fa8b-169
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 +63 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +91 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +573 -288
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +295 -47
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +452 -210
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +119 -14
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -144
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +275 -59
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -88
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -77
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -87
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -100
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +274 -58
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -132
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +274 -58
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +274 -58
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -63
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -138
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +274 -58
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +342 -183
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +429 -35
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +345 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +473 -98
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +805 -448
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +246 -70
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +656 -418
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -55
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +524 -1520
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2835 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -35
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +294 -53
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -21
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -21
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +96 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -69
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +274 -58
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +124 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -31
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +121 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -48
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +274 -58
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +113 -75
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -42
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +118 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +100 -70
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -42
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +91 -41
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +704 -472
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +76 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +710 -407
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +184 -128
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -21
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +224 -210
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +113 -63
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +131 -141
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -21
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +43 -6
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- 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 +19 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -21
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +43 -6
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1450 -140
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -229
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +129 -70
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +86 -52
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +389 -298
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +40 -31
- package/contracts/authorization/Authorization.sol +60 -228
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +81 -80
- package/contracts/authorization/IAuthorization.sol +3 -51
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +20 -60
- package/contracts/distribution/DistributionService.sol +165 -74
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +7 -12
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +87 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +99 -14
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +166 -70
- package/contracts/instance/InstanceAdmin.sol +227 -296
- package/contracts/instance/InstanceAuthorizationV3.sol +121 -60
- package/contracts/instance/InstanceReader.sol +378 -373
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +9 -82
- package/contracts/instance/ProductStore.sol +235 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +16 -5
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +2 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +2 -4
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +3 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +4 -16
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +41 -184
- package/contracts/product/ApplicationService.sol +85 -17
- package/contracts/product/BasicProduct.sol +1 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +41 -103
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +44 -29
- package/contracts/product/RiskService.sol +63 -18
- package/contracts/registry/IRegistry.sol +15 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +100 -263
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +62 -112
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +48 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +17 -29
- package/contracts/shared/ComponentService.sol +249 -238
- package/contracts/shared/ContractLib.sol +134 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -19
- package/contracts/shared/IKeyValueStore.sol +9 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -7
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +4 -2
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/Service.sol +6 -4
- package/contracts/shared/TokenHandler.sol +5 -4
- package/contracts/staking/IStaking.sol +266 -64
- package/contracts/staking/IStakingService.sol +44 -82
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +474 -202
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +49 -158
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +21 -17
- package/contracts/type/RiskId.sol +4 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +28 -10
- package/contracts/type/Version.sol +39 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +25 -11
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,19 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
|
6
4
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
7
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
8
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
9
|
-
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
10
|
-
import {Fee} from "../type/Fee.sol";
|
11
|
-
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
12
5
|
import {IComponentService} from "../shared/IComponentService.sol";
|
13
6
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
14
|
-
import {
|
7
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
8
|
+
|
9
|
+
import {Amount} from "../type/Amount.sol";
|
10
|
+
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
|
15
11
|
import {DistributorType} from "../type/DistributorType.sol";
|
12
|
+
import {Fee} from "../type/Fee.sol";
|
13
|
+
import {NftId} from "../type/NftId.sol";
|
14
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
15
|
+
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
16
|
+
import {Seconds} from "../type/Seconds.sol";
|
16
17
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
+
import {UFixed} from "../type/UFixed.sol";
|
17
19
|
|
18
20
|
|
19
21
|
abstract contract Distribution is
|
@@ -26,17 +28,8 @@ abstract contract Distribution is
|
|
26
28
|
struct DistributionStorage {
|
27
29
|
IComponentService _componentService;
|
28
30
|
IDistributionService _distributionService;
|
29
|
-
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
30
|
-
}
|
31
|
-
|
32
|
-
modifier onlyDistributor() {
|
33
|
-
if (!isDistributor(msg.sender)) {
|
34
|
-
revert ErrorDistributionNotDistributor(msg.sender);
|
35
|
-
}
|
36
|
-
_;
|
37
31
|
}
|
38
32
|
|
39
|
-
|
40
33
|
function processRenewal(
|
41
34
|
ReferralId referralId,
|
42
35
|
uint256 feeAmount
|
@@ -44,6 +37,7 @@ abstract contract Distribution is
|
|
44
37
|
external
|
45
38
|
virtual
|
46
39
|
restricted()
|
40
|
+
// solhint-disable-next-line no-empty-blocks
|
47
41
|
{
|
48
42
|
// default is no action
|
49
43
|
}
|
@@ -54,7 +48,6 @@ abstract contract Distribution is
|
|
54
48
|
external
|
55
49
|
virtual
|
56
50
|
restricted()
|
57
|
-
onlyDistributor()
|
58
51
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
59
52
|
onlyNftOwner(distributorNftId)
|
60
53
|
returns (Amount withdrawnAmount)
|
@@ -62,29 +55,9 @@ abstract contract Distribution is
|
|
62
55
|
return _withdrawCommission(distributorNftId, amount);
|
63
56
|
}
|
64
57
|
|
65
|
-
|
66
|
-
function isDistributor(address candidate)
|
67
|
-
public
|
68
|
-
view
|
69
|
-
returns (bool)
|
70
|
-
{
|
71
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
72
|
-
return $._distributorNftId[candidate].gtz();
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
function getDistributorNftId(address distributor)
|
77
|
-
public
|
78
|
-
view
|
79
|
-
returns (NftId distributorNftId)
|
80
|
-
{
|
81
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
82
|
-
return $._distributorNftId[distributor];
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
58
|
function getDiscountPercentage(string memory referralCode)
|
87
59
|
external
|
60
|
+
virtual
|
88
61
|
view
|
89
62
|
returns (
|
90
63
|
UFixed discountPercentage,
|
@@ -100,6 +73,7 @@ abstract contract Distribution is
|
|
100
73
|
string memory referralCode
|
101
74
|
)
|
102
75
|
public
|
76
|
+
virtual
|
103
77
|
view
|
104
78
|
returns (ReferralId referralId)
|
105
79
|
{
|
@@ -110,7 +84,7 @@ abstract contract Distribution is
|
|
110
84
|
|
111
85
|
|
112
86
|
function calculateRenewalFeeAmount(
|
113
|
-
ReferralId referralId
|
87
|
+
ReferralId, // referralId
|
114
88
|
uint256 netPremiumAmount
|
115
89
|
)
|
116
90
|
external
|
@@ -124,32 +98,31 @@ abstract contract Distribution is
|
|
124
98
|
|
125
99
|
|
126
100
|
/// @dev Returns true iff the component needs to be called when selling/renewing policis
|
127
|
-
function isVerifying() external pure returns (bool verifying) {
|
101
|
+
function isVerifying() external virtual pure returns (bool verifying) {
|
128
102
|
return true;
|
129
103
|
}
|
130
104
|
|
131
105
|
|
132
|
-
function
|
106
|
+
function __Distribution_init(
|
133
107
|
address registry,
|
134
108
|
NftId productNftId,
|
135
109
|
IAuthorization authorization,
|
110
|
+
bool isInterceptor,
|
136
111
|
address initialOwner,
|
137
112
|
string memory name,
|
138
|
-
address token,
|
139
113
|
bytes memory componentData // component specifidc data
|
140
114
|
)
|
141
115
|
internal
|
142
116
|
virtual
|
143
117
|
onlyInitializing()
|
144
118
|
{
|
145
|
-
|
119
|
+
__InstanceLinkedComponent_init(
|
146
120
|
registry,
|
147
121
|
productNftId,
|
148
122
|
name,
|
149
|
-
token,
|
150
123
|
DISTRIBUTION(),
|
151
124
|
authorization,
|
152
|
-
|
125
|
+
isInterceptor,
|
153
126
|
initialOwner,
|
154
127
|
componentData);
|
155
128
|
|
@@ -180,7 +153,7 @@ abstract contract Distribution is
|
|
180
153
|
UFixed maxDiscountPercentage,
|
181
154
|
UFixed commissionPercentage,
|
182
155
|
uint32 maxReferralCount,
|
183
|
-
|
156
|
+
Seconds maxReferralLifetime,
|
184
157
|
bool allowSelfReferrals,
|
185
158
|
bool allowRenewals,
|
186
159
|
bytes memory data
|
@@ -213,16 +186,11 @@ abstract contract Distribution is
|
|
213
186
|
returns(NftId distributorNftId)
|
214
187
|
{
|
215
188
|
DistributionStorage storage $ = _getDistributionStorage();
|
216
|
-
if($._distributorNftId[distributor].gtz()) {
|
217
|
-
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
218
|
-
}
|
219
189
|
|
220
190
|
distributorNftId = $._distributionService.createDistributor(
|
221
191
|
distributor,
|
222
192
|
distributorType,
|
223
193
|
data);
|
224
|
-
|
225
|
-
$._distributorNftId[distributor] = distributorNftId;
|
226
194
|
}
|
227
195
|
|
228
196
|
/// @dev Uptates the distributor type for the specified distributor.
|
@@ -271,14 +239,6 @@ abstract contract Distribution is
|
|
271
239
|
return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
|
272
240
|
}
|
273
241
|
|
274
|
-
function _nftTransferFrom(address from, address to, uint256 tokenId, address operator) internal virtual override {
|
275
|
-
// keep track of distributor nft owner
|
276
|
-
emit LogDistributorUpdated(to, operator);
|
277
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
278
|
-
$._distributorNftId[from] = NftIdLib.zero();
|
279
|
-
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
280
|
-
}
|
281
|
-
|
282
242
|
function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
|
283
243
|
assembly {
|
284
244
|
$.slot := DISTRIBUTION_STORAGE_LOCATION_V1
|
@@ -2,31 +2,35 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
5
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
7
5
|
import {IComponentService} from "../shared/IComponentService.sol";
|
6
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
7
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
11
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
12
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
13
14
|
|
14
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
|
+
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
15
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
16
19
|
import {KEEP_STATE} from "../type/StateId.sol";
|
17
20
|
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
18
|
-
import {
|
19
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
20
|
-
import {UFixed} from "../type/UFixed.sol";
|
21
|
-
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
22
|
-
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
23
|
-
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
24
|
-
import {IDistribution} from "../instance/module/IDistribution.sol";
|
21
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
22
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
23
|
+
// TODO PoolLib feels wrong, should likely go in a component type independent lib
|
24
|
+
import {PoolLib} from "../pool/PoolLib.sol";
|
25
|
+
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
|
26
|
+
import {Seconds} from "../type/Seconds.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
29
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
26
30
|
|
27
31
|
|
28
32
|
contract DistributionService is
|
29
|
-
|
33
|
+
Service,
|
30
34
|
IDistributionService
|
31
35
|
{
|
32
36
|
IAccountingService private _accountingService;
|
@@ -64,19 +68,20 @@ contract DistributionService is
|
|
64
68
|
UFixed maxDiscountPercentage,
|
65
69
|
UFixed commissionPercentage,
|
66
70
|
uint32 maxReferralCount,
|
67
|
-
|
71
|
+
Seconds maxReferralLifetime,
|
68
72
|
bool allowSelfReferrals,
|
69
73
|
bool allowRenewals,
|
70
74
|
bytes memory data
|
71
75
|
)
|
72
76
|
external
|
77
|
+
virtual
|
78
|
+
restricted()
|
73
79
|
returns (DistributorType distributorType)
|
74
80
|
{
|
75
|
-
(NftId distributionNftId
|
76
|
-
// InstanceReader instanceReader = instance.getInstanceReader();
|
81
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
77
82
|
|
78
83
|
{
|
79
|
-
NftId productNftId =
|
84
|
+
NftId productNftId = getRegistry().getParentNftId(distributionNftId);
|
80
85
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
81
86
|
|
82
87
|
UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
|
@@ -87,24 +92,27 @@ contract DistributionService is
|
|
87
92
|
}
|
88
93
|
UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
|
89
94
|
|
90
|
-
if (maxDiscountPercentage
|
95
|
+
if (maxDiscountPercentage > maxDiscountPercentageLimit) {
|
91
96
|
revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
|
92
97
|
}
|
93
98
|
}
|
94
99
|
|
95
100
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
96
|
-
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
97
|
-
name,
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
|
102
|
+
name: name,
|
103
|
+
distributionNftId: distributionNftId,
|
104
|
+
minDiscountPercentage: minDiscountPercentage,
|
105
|
+
maxDiscountPercentage: maxDiscountPercentage,
|
106
|
+
commissionPercentage: commissionPercentage,
|
107
|
+
maxReferralCount: maxReferralCount,
|
108
|
+
maxReferralLifetime: maxReferralLifetime,
|
109
|
+
allowSelfReferrals: allowSelfReferrals,
|
110
|
+
allowRenewals: allowRenewals,
|
111
|
+
data: data});
|
106
112
|
|
107
113
|
instance.getInstanceStore().createDistributorType(distributorType, info);
|
114
|
+
|
115
|
+
emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
|
108
116
|
}
|
109
117
|
|
110
118
|
|
@@ -115,9 +123,11 @@ contract DistributionService is
|
|
115
123
|
)
|
116
124
|
external
|
117
125
|
virtual
|
126
|
+
restricted()
|
118
127
|
returns (NftId distributorNftId)
|
119
128
|
{
|
120
|
-
(NftId distributionNftId
|
129
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
130
|
+
_checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
|
121
131
|
|
122
132
|
distributorNftId = _registryService.registerDistributor(
|
123
133
|
IRegistry.ObjectInfo(
|
@@ -130,28 +140,37 @@ contract DistributionService is
|
|
130
140
|
""
|
131
141
|
));
|
132
142
|
|
133
|
-
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
|
134
|
-
distributorType,
|
135
|
-
true,
|
136
|
-
|
137
|
-
|
143
|
+
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
|
144
|
+
distributorType: distributorType,
|
145
|
+
active: true,
|
146
|
+
numPoliciesSold: 0,
|
147
|
+
data: data});
|
138
148
|
|
139
149
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
150
|
+
|
151
|
+
emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributorType, distributor);
|
140
152
|
}
|
141
153
|
|
142
154
|
function changeDistributorType(
|
143
155
|
NftId distributorNftId,
|
144
|
-
DistributorType
|
156
|
+
DistributorType newDistributorType,
|
145
157
|
bytes memory data
|
146
158
|
)
|
147
159
|
external
|
148
160
|
virtual
|
161
|
+
restricted()
|
149
162
|
{
|
150
|
-
(
|
163
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
164
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
165
|
+
_checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
|
166
|
+
|
151
167
|
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
152
|
-
|
168
|
+
DistributorType oldDistributorType = distributorInfo.distributorType;
|
169
|
+
distributorInfo.distributorType = newDistributorType;
|
153
170
|
distributorInfo.data = data;
|
154
171
|
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
172
|
+
|
173
|
+
emit LogDistributionServiceDistributorTypeChanged(distributorNftId, oldDistributorType, newDistributorType);
|
155
174
|
}
|
156
175
|
|
157
176
|
|
@@ -165,16 +184,22 @@ contract DistributionService is
|
|
165
184
|
)
|
166
185
|
external
|
167
186
|
virtual
|
187
|
+
restricted()
|
168
188
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
169
189
|
returns (ReferralId referralId)
|
170
190
|
{
|
171
|
-
(NftId distributionNftId
|
191
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
172
192
|
|
173
193
|
if (bytes(code).length == 0) {
|
174
|
-
revert
|
194
|
+
revert ErrorDistributionServiceInvalidReferral();
|
195
|
+
}
|
196
|
+
if (expiryAt.eqz() || expiryAt < TimestampLib.current()) {
|
197
|
+
revert ErrorDistributionServiceExpirationInvalid(expiryAt);
|
175
198
|
}
|
176
|
-
|
177
|
-
|
199
|
+
|
200
|
+
NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
|
201
|
+
if (distributorDistributionNftId != distributionNftId) {
|
202
|
+
revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
|
178
203
|
}
|
179
204
|
|
180
205
|
{
|
@@ -183,32 +208,35 @@ contract DistributionService is
|
|
183
208
|
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
184
209
|
|
185
210
|
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
186
|
-
revert
|
211
|
+
revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount, maxReferrals);
|
187
212
|
}
|
188
213
|
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
189
|
-
revert
|
214
|
+
revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage, discountPercentage);
|
190
215
|
}
|
191
216
|
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
192
|
-
revert
|
217
|
+
revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage, discountPercentage);
|
193
218
|
}
|
194
|
-
if (expiryAt.toInt() - TimestampLib.
|
195
|
-
revert
|
219
|
+
if (expiryAt.toInt() - TimestampLib.current().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
|
220
|
+
revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
|
196
221
|
}
|
197
222
|
}
|
198
223
|
|
199
224
|
{
|
200
225
|
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
201
|
-
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
226
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo({
|
227
|
+
distributionNftId: distributionNftId,
|
228
|
+
distributorNftId: distributorNftId,
|
229
|
+
referralCode: code,
|
230
|
+
discountPercentage: discountPercentage,
|
231
|
+
maxReferrals: maxReferrals,
|
232
|
+
usedReferrals: 0,
|
233
|
+
expiryAt: expiryAt,
|
234
|
+
data: data
|
235
|
+
});
|
210
236
|
|
211
237
|
instance.getInstanceStore().createReferral(referralId, info);
|
238
|
+
|
239
|
+
emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
|
212
240
|
}
|
213
241
|
}
|
214
242
|
|
@@ -223,14 +251,14 @@ contract DistributionService is
|
|
223
251
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
224
252
|
{
|
225
253
|
if (referralIsValid(distributionNftId, referralId)) {
|
226
|
-
|
227
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
228
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
254
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
229
255
|
|
230
256
|
// update book keeping for referral info
|
231
257
|
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
232
258
|
referralInfo.usedReferrals += 1;
|
233
259
|
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
260
|
+
|
261
|
+
emit LogDistributionServiceReferralProcessed(distributionNftId, referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
|
234
262
|
}
|
235
263
|
}
|
236
264
|
|
@@ -244,9 +272,7 @@ contract DistributionService is
|
|
244
272
|
restricted()
|
245
273
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
246
274
|
{
|
247
|
-
|
248
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
249
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
275
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
250
276
|
InstanceReader reader = instance.getInstanceReader();
|
251
277
|
InstanceStore store = instance.getInstanceStore();
|
252
278
|
|
@@ -273,30 +299,32 @@ contract DistributionService is
|
|
273
299
|
// increase distribution balance by distribution owner fee
|
274
300
|
_accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
275
301
|
}
|
302
|
+
|
303
|
+
emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
|
276
304
|
}
|
277
305
|
|
278
306
|
/// @inheritdoc IDistributionService
|
279
307
|
function withdrawCommission(NftId distributorNftId, Amount amount)
|
280
308
|
public
|
281
309
|
virtual
|
282
|
-
|
310
|
+
restricted()
|
283
311
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
284
312
|
returns (Amount withdrawnAmount)
|
285
313
|
{
|
286
|
-
(NftId distributionNftId
|
314
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
287
315
|
InstanceReader reader = instance.getInstanceReader();
|
288
316
|
|
289
317
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
290
|
-
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
318
|
+
// address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
291
319
|
|
292
320
|
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
293
321
|
|
294
322
|
// determine withdrawn amount
|
295
323
|
withdrawnAmount = amount;
|
296
|
-
if (withdrawnAmount
|
324
|
+
if (withdrawnAmount >= AmountLib.max()) {
|
297
325
|
withdrawnAmount = commissionAmount;
|
298
326
|
} else {
|
299
|
-
if (withdrawnAmount
|
327
|
+
if (withdrawnAmount > commissionAmount) {
|
300
328
|
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
301
329
|
}
|
302
330
|
}
|
@@ -313,13 +341,14 @@ contract DistributionService is
|
|
313
341
|
// transfer amount to distributor
|
314
342
|
{
|
315
343
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
316
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.
|
344
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
|
317
345
|
distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
|
318
346
|
}
|
319
347
|
}
|
320
348
|
|
321
349
|
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
322
350
|
public
|
351
|
+
virtual
|
323
352
|
view
|
324
353
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
325
354
|
returns (bool isValid)
|
@@ -328,29 +357,91 @@ contract DistributionService is
|
|
328
357
|
return false;
|
329
358
|
}
|
330
359
|
|
331
|
-
|
332
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
333
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
360
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
334
361
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
335
362
|
|
336
363
|
if (info.distributorNftId.eqz()) {
|
337
364
|
return false;
|
338
365
|
}
|
339
366
|
|
340
|
-
|
367
|
+
// ensure the referral was created on the same distribution
|
368
|
+
if(info.distributionNftId != distributionNftId) {
|
369
|
+
revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
|
370
|
+
}
|
371
|
+
|
372
|
+
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.current() <= info.expiryAt);
|
341
373
|
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
342
374
|
}
|
343
375
|
|
344
|
-
|
376
|
+
|
377
|
+
function getDiscountPercentage(
|
378
|
+
InstanceReader instanceReader,
|
379
|
+
ReferralId referralId
|
380
|
+
)
|
381
|
+
external
|
382
|
+
virtual
|
383
|
+
view
|
384
|
+
returns (
|
385
|
+
UFixed discountPercentage,
|
386
|
+
ReferralStatus status
|
387
|
+
)
|
388
|
+
{
|
389
|
+
IDistribution.ReferralInfo memory info = instanceReader.getReferralInfo(
|
390
|
+
referralId);
|
391
|
+
|
392
|
+
if (info.expiryAt.eqz()) {
|
393
|
+
return (
|
394
|
+
UFixedLib.zero(),
|
395
|
+
REFERRAL_ERROR_UNKNOWN());
|
396
|
+
}
|
397
|
+
|
398
|
+
if (info.expiryAt < TimestampLib.current()) {
|
399
|
+
return (
|
400
|
+
UFixedLib.zero(),
|
401
|
+
REFERRAL_ERROR_EXPIRED());
|
402
|
+
}
|
403
|
+
|
404
|
+
if (info.usedReferrals >= info.maxReferrals) {
|
405
|
+
return (
|
406
|
+
UFixedLib.zero(),
|
407
|
+
REFERRAL_ERROR_EXHAUSTED());
|
408
|
+
}
|
409
|
+
|
410
|
+
return (
|
411
|
+
info.discountPercentage,
|
412
|
+
REFERRAL_OK()
|
413
|
+
);
|
414
|
+
|
415
|
+
}
|
416
|
+
|
417
|
+
|
418
|
+
function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId)
|
345
419
|
internal
|
420
|
+
view
|
421
|
+
{
|
422
|
+
// enfore distributor type belongs to the calling distribution
|
423
|
+
NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
|
424
|
+
|
425
|
+
if (distributorTypeDistributionNftId != expectedDistributionNftId) {
|
426
|
+
revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
|
427
|
+
}
|
428
|
+
}
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
function _getAndVerifyActiveDistribution()
|
433
|
+
internal
|
434
|
+
virtual
|
346
435
|
view
|
347
|
-
returns(
|
436
|
+
returns (
|
437
|
+
NftId poolNftId,
|
438
|
+
IInstance instance
|
439
|
+
)
|
348
440
|
{
|
349
|
-
|
350
|
-
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
351
|
-
return IInstance(instanceAddress);
|
441
|
+
return PoolLib.getAndVerifyActiveComponent(getRegistry(), msg.sender, DISTRIBUTION());
|
352
442
|
}
|
353
443
|
|
444
|
+
|
354
445
|
function _getDomain() internal pure override returns(ObjectType) {
|
355
446
|
return DISTRIBUTION();
|
356
447
|
}
|
@@ -1,25 +1,18 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount} from "../type/Amount.sol";
|
5
4
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
5
|
+
|
6
|
+
import {Amount} from "../type/Amount.sol";
|
6
7
|
import {NftId} from "../type/NftId.sol";
|
7
8
|
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
8
9
|
import {UFixed} from "../type/UFixed.sol";
|
9
10
|
|
10
|
-
interface IDistributionComponent is IInstanceLinkedComponent {
|
11
11
|
|
12
|
-
|
13
|
-
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
12
|
+
interface IDistributionComponent is IInstanceLinkedComponent {
|
14
13
|
|
15
14
|
event LogDistributorUpdated(address to, address operator);
|
16
15
|
|
17
|
-
/// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
|
18
|
-
function isDistributor(address candidate) external view returns (bool);
|
19
|
-
|
20
|
-
/// @dev Returns the distributor Nft Id for the provided address
|
21
|
-
function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
|
22
|
-
|
23
16
|
function getDiscountPercentage(
|
24
17
|
string memory referralCode
|
25
18
|
) external view returns (UFixed discountPercentage, ReferralStatus status);
|