@etherisc/gif-next 0.0.2-c5049d4-401 → 0.0.2-c52b5b7-438
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +505 -245
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +273 -16
- 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 +396 -185
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +139 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +172 -305
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +261 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -185
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +338 -163
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +115 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +90 -167
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +209 -70
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +204 -222
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +261 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +455 -389
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +258 -28
- 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 +247 -270
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -175
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +318 -223
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +751 -340
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +236 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +144 -93
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +284 -62
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +734 -321
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +205 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +869 -261
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +170 -169
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +556 -415
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- 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 +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +142 -183
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +243 -29
- 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 +104 -116
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +118 -135
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +151 -168
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +261 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +162 -268
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -81
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +126 -149
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +279 -247
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +139 -167
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +490 -390
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +133 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +190 -48
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +278 -234
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +261 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +308 -158
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +106 -72
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +199 -21
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +168 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +258 -209
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +264 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +179 -133
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +75 -57
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +268 -224
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +167 -67
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +92 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +117 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +161 -53
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +600 -440
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -185
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -34
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +417 -249
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +94 -93
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +507 -524
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -74
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +463 -300
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +104 -116
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -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 +55 -2
- 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 +117 -134
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
- 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 +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +170 -117
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +258 -198
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +92 -50
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +35 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -59
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +191 -136
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +48 -38
- 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 +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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 +94 -38
- 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 +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- 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 +19 -19
- 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 +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +342 -230
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +350 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +69 -34
- package/contracts/authorization/IAuthorization.sol +33 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +36 -87
- package/contracts/distribution/DistributionService.sol +129 -80
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -10
- package/contracts/distribution/IDistributionService.sol +22 -20
- package/contracts/examples/fire/DamageLevel.sol +5 -2
- package/contracts/examples/fire/FirePool.sol +24 -13
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +106 -63
- package/contracts/examples/fire/FireProductAuthorization.sol +14 -8
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +43 -12
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +8 -12
- package/contracts/examples/unpermissioned/SimplePool.sol +36 -10
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -29
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +60 -17
- package/contracts/instance/IInstanceService.sol +27 -31
- package/contracts/instance/Instance.sol +115 -40
- package/contracts/instance/InstanceAdmin.sol +287 -122
- package/contracts/instance/InstanceAuthorizationV3.sol +90 -59
- package/contracts/instance/InstanceReader.sol +259 -39
- package/contracts/instance/InstanceService.sol +185 -192
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +3 -3
- package/contracts/instance/module/IComponents.sol +13 -9
- package/contracts/instance/module/IDistribution.sol +5 -2
- package/contracts/instance/module/IPolicy.sol +5 -4
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -18
- package/contracts/oracle/OracleService.sol +108 -79
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +32 -25
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -131
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -34
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +70 -65
- package/contracts/pool/Pool.sol +136 -119
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +481 -234
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +46 -19
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -13
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +246 -160
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +17 -4
- package/contracts/product/IPolicyService.sol +27 -9
- package/contracts/product/IPricingService.sol +10 -9
- package/contracts/product/IProductComponent.sol +27 -4
- package/contracts/product/IRiskService.sol +7 -7
- package/contracts/product/PolicyService.sol +262 -249
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +37 -28
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +118 -76
- package/contracts/product/RiskService.sol +89 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +16 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +36 -8
- package/contracts/registry/RegistryAdmin.sol +145 -351
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +36 -47
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +271 -245
- package/contracts/registry/ServiceAuthorizationV3.sol +182 -50
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -119
- package/contracts/shared/ComponentService.sol +434 -367
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +246 -3
- package/contracts/shared/IComponent.sol +5 -17
- package/contracts/shared/IComponentService.sol +44 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +69 -46
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +5 -1
- package/contracts/shared/Registerable.sol +50 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +17 -10
- package/contracts/staking/IStakingService.sol +16 -4
- package/contracts/staking/Staking.sol +96 -48
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +18 -21
- package/contracts/staking/StakingService.sol +81 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +7 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +54 -35
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +37 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -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} 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,46 +28,32 @@ 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
|
}
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
_;
|
37
|
-
}
|
38
|
-
|
39
|
-
function register()
|
33
|
+
function processRenewal(
|
34
|
+
ReferralId referralId,
|
35
|
+
uint256 feeAmount
|
36
|
+
)
|
40
37
|
external
|
41
38
|
virtual
|
42
|
-
|
43
|
-
{
|
44
|
-
_getDistributionStorage()._componentService.registerDistribution();
|
45
|
-
_approveTokenHandler(type(uint256).max);
|
46
|
-
}
|
47
|
-
|
48
|
-
|
49
|
-
function isDistributor(address candidate)
|
50
|
-
public
|
51
|
-
view
|
52
|
-
returns (bool)
|
39
|
+
restricted()
|
53
40
|
{
|
54
|
-
|
55
|
-
return $._distributorNftId[candidate].gtz();
|
41
|
+
// default is no action
|
56
42
|
}
|
57
43
|
|
58
44
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
45
|
+
/// @inheritdoc IDistributionComponent
|
46
|
+
function withdrawCommission(NftId distributorNftId, Amount amount)
|
47
|
+
external
|
48
|
+
virtual
|
49
|
+
restricted()
|
50
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
51
|
+
onlyNftOwner(distributorNftId)
|
52
|
+
returns (Amount withdrawnAmount)
|
63
53
|
{
|
64
|
-
|
65
|
-
return $._distributorNftId[distributor];
|
54
|
+
return _withdrawCommission(distributorNftId, amount);
|
66
55
|
}
|
67
56
|
|
68
|
-
|
69
57
|
function getDiscountPercentage(string memory referralCode)
|
70
58
|
external
|
71
59
|
view
|
@@ -106,42 +94,19 @@ abstract contract Distribution is
|
|
106
94
|
}
|
107
95
|
|
108
96
|
|
109
|
-
function processRenewal(
|
110
|
-
ReferralId referralId,
|
111
|
-
uint256 feeAmount
|
112
|
-
)
|
113
|
-
external
|
114
|
-
virtual
|
115
|
-
restricted()
|
116
|
-
{
|
117
|
-
// default is no action
|
118
|
-
}
|
119
|
-
|
120
97
|
/// @dev Returns true iff the component needs to be called when selling/renewing policis
|
121
98
|
function isVerifying() external pure returns (bool verifying) {
|
122
99
|
return true;
|
123
100
|
}
|
124
101
|
|
125
|
-
|
126
|
-
function withdrawCommission(NftId distributorNftId, Amount amount)
|
127
|
-
external
|
128
|
-
virtual
|
129
|
-
restricted()
|
130
|
-
onlyDistributor()
|
131
|
-
onlyNftOwner(distributorNftId)
|
132
|
-
returns (Amount withdrawnAmount)
|
133
|
-
{
|
134
|
-
return _withdrawCommission(distributorNftId, amount);
|
135
|
-
}
|
136
|
-
|
102
|
+
|
137
103
|
function _initializeDistribution(
|
138
104
|
address registry,
|
139
|
-
NftId
|
105
|
+
NftId productNftId,
|
140
106
|
IAuthorization authorization,
|
107
|
+
bool isInterceptor,
|
141
108
|
address initialOwner,
|
142
109
|
string memory name,
|
143
|
-
address token,
|
144
|
-
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
145
110
|
bytes memory componentData // component specifidc data
|
146
111
|
)
|
147
112
|
internal
|
@@ -150,14 +115,12 @@ abstract contract Distribution is
|
|
150
115
|
{
|
151
116
|
_initializeInstanceLinkedComponent(
|
152
117
|
registry,
|
153
|
-
|
118
|
+
productNftId,
|
154
119
|
name,
|
155
|
-
token,
|
156
120
|
DISTRIBUTION(),
|
157
121
|
authorization,
|
158
|
-
|
122
|
+
isInterceptor,
|
159
123
|
initialOwner,
|
160
|
-
registryData,
|
161
124
|
componentData);
|
162
125
|
|
163
126
|
DistributionStorage storage $ = _getDistributionStorage();
|
@@ -187,7 +150,7 @@ abstract contract Distribution is
|
|
187
150
|
UFixed maxDiscountPercentage,
|
188
151
|
UFixed commissionPercentage,
|
189
152
|
uint32 maxReferralCount,
|
190
|
-
|
153
|
+
Seconds maxReferralLifetime,
|
191
154
|
bool allowSelfReferrals,
|
192
155
|
bool allowRenewals,
|
193
156
|
bytes memory data
|
@@ -220,20 +183,15 @@ abstract contract Distribution is
|
|
220
183
|
returns(NftId distributorNftId)
|
221
184
|
{
|
222
185
|
DistributionStorage storage $ = _getDistributionStorage();
|
223
|
-
if($._distributorNftId[distributor].gtz()) {
|
224
|
-
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
225
|
-
}
|
226
186
|
|
227
187
|
distributorNftId = $._distributionService.createDistributor(
|
228
188
|
distributor,
|
229
189
|
distributorType,
|
230
190
|
data);
|
231
|
-
|
232
|
-
$._distributorNftId[distributor] = distributorNftId;
|
233
191
|
}
|
234
192
|
|
235
193
|
/// @dev Uptates the distributor type for the specified distributor.
|
236
|
-
function
|
194
|
+
function _changeDistributorType(
|
237
195
|
NftId distributorNftId,
|
238
196
|
DistributorType distributorType,
|
239
197
|
bytes memory data
|
@@ -242,11 +200,10 @@ abstract contract Distribution is
|
|
242
200
|
virtual
|
243
201
|
{
|
244
202
|
DistributionStorage storage $ = _getDistributionStorage();
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
// data);
|
203
|
+
$._distributionService.changeDistributorType(
|
204
|
+
distributorNftId,
|
205
|
+
distributorType,
|
206
|
+
data);
|
250
207
|
}
|
251
208
|
|
252
209
|
/// @dev Create a new referral code for the provided distributor.
|
@@ -279,14 +236,6 @@ abstract contract Distribution is
|
|
279
236
|
return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
|
280
237
|
}
|
281
238
|
|
282
|
-
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
283
|
-
// keep track of distributor nft owner
|
284
|
-
emit LogDistributorUpdated(to, msg.sender);
|
285
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
286
|
-
$._distributorNftId[from] = NftIdLib.zero();
|
287
|
-
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
288
|
-
}
|
289
|
-
|
290
239
|
function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
|
291
240
|
assembly {
|
292
241
|
$.slot := DISTRIBUTION_STORAGE_LOCATION_V1
|
@@ -1,33 +1,36 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IInstance} from "../instance/IInstance.sol";
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
6
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";
|
7
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
11
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
10
12
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
12
14
|
|
13
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
14
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
16
|
-
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
17
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
18
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
19
|
-
import {UFixed} from "../type/UFixed.sol";
|
20
17
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
18
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
19
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
20
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
21
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
22
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
21
23
|
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
24
|
+
import {Seconds} from "../type/Seconds.sol";
|
22
25
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
23
|
-
import {
|
24
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
26
|
+
import {UFixed} from "../type/UFixed.sol";
|
25
27
|
|
26
28
|
|
27
29
|
contract DistributionService is
|
28
30
|
ComponentVerifyingService,
|
29
31
|
IDistributionService
|
30
32
|
{
|
33
|
+
IAccountingService private _accountingService;
|
31
34
|
IComponentService private _componentService;
|
32
35
|
IInstanceService private _instanceService;
|
33
36
|
IRegistryService private _registryService;
|
@@ -41,12 +44,13 @@ contract DistributionService is
|
|
41
44
|
initializer()
|
42
45
|
{
|
43
46
|
(
|
44
|
-
address
|
45
|
-
address
|
47
|
+
address authority,
|
48
|
+
address registry
|
46
49
|
) = abi.decode(data, (address, address));
|
47
50
|
|
48
|
-
|
51
|
+
__Service_init(authority, registry, owner);
|
49
52
|
|
53
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
50
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
51
55
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
52
56
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
@@ -61,7 +65,7 @@ contract DistributionService is
|
|
61
65
|
UFixed maxDiscountPercentage,
|
62
66
|
UFixed commissionPercentage,
|
63
67
|
uint32 maxReferralCount,
|
64
|
-
|
68
|
+
Seconds maxReferralLifetime,
|
65
69
|
bool allowSelfReferrals,
|
66
70
|
bool allowRenewals,
|
67
71
|
bytes memory data
|
@@ -70,14 +74,13 @@ contract DistributionService is
|
|
70
74
|
returns (DistributorType distributorType)
|
71
75
|
{
|
72
76
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
73
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
74
77
|
|
75
78
|
{
|
76
|
-
NftId productNftId = _getProductNftId(
|
77
|
-
IComponents.
|
79
|
+
NftId productNftId = _getProductNftId(distributionNftId);
|
80
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
78
81
|
|
79
|
-
UFixed variableDistributionFees =
|
80
|
-
UFixed variableFeesPartsTotal =
|
82
|
+
UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
|
83
|
+
UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
|
81
84
|
|
82
85
|
if (variableFeesPartsTotal > variableDistributionFees) {
|
83
86
|
revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
|
@@ -92,6 +95,7 @@ contract DistributionService is
|
|
92
95
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
93
96
|
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
94
97
|
name,
|
98
|
+
distributionNftId,
|
95
99
|
minDiscountPercentage,
|
96
100
|
maxDiscountPercentage,
|
97
101
|
commissionPercentage,
|
@@ -115,6 +119,7 @@ contract DistributionService is
|
|
115
119
|
returns (NftId distributorNftId)
|
116
120
|
{
|
117
121
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
122
|
+
_checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
|
118
123
|
|
119
124
|
distributorNftId = _registryService.registerDistributor(
|
120
125
|
IRegistry.ObjectInfo(
|
@@ -136,21 +141,23 @@ contract DistributionService is
|
|
136
141
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
137
142
|
}
|
138
143
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
144
|
+
function changeDistributorType(
|
145
|
+
NftId distributorNftId,
|
146
|
+
DistributorType newDistributorType,
|
147
|
+
bytes memory data
|
148
|
+
)
|
149
|
+
external
|
150
|
+
virtual
|
151
|
+
{
|
152
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
153
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
154
|
+
_checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
|
155
|
+
|
156
|
+
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
157
|
+
distributorInfo.distributorType = newDistributorType;
|
158
|
+
distributorInfo.data = data;
|
159
|
+
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
160
|
+
}
|
154
161
|
|
155
162
|
|
156
163
|
function createReferral(
|
@@ -163,47 +170,57 @@ contract DistributionService is
|
|
163
170
|
)
|
164
171
|
external
|
165
172
|
virtual
|
173
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
166
174
|
returns (ReferralId referralId)
|
167
175
|
{
|
168
176
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
169
177
|
|
170
178
|
if (bytes(code).length == 0) {
|
171
|
-
revert
|
179
|
+
revert ErrorDistributionServiceInvalidReferral(code);
|
172
180
|
}
|
173
|
-
if (expiryAt.eqz()) {
|
174
|
-
revert
|
181
|
+
if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
|
182
|
+
revert ErrorDistributionServiceExpirationInvalid(expiryAt);
|
175
183
|
}
|
176
184
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
182
|
-
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
183
|
-
}
|
184
|
-
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
185
|
-
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
186
|
-
}
|
187
|
-
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
188
|
-
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
185
|
+
NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
|
186
|
+
if (distributorDistributionNftId != distributionNftId) {
|
187
|
+
revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
|
189
188
|
}
|
190
|
-
|
191
|
-
|
189
|
+
|
190
|
+
{
|
191
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
192
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
193
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
194
|
+
|
195
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
196
|
+
revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
197
|
+
}
|
198
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
199
|
+
revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
200
|
+
}
|
201
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
202
|
+
revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
203
|
+
}
|
204
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
|
205
|
+
revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
|
206
|
+
}
|
192
207
|
}
|
193
208
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
209
|
+
{
|
210
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
211
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
212
|
+
distributionNftId,
|
213
|
+
distributorNftId,
|
214
|
+
code,
|
215
|
+
discountPercentage,
|
216
|
+
maxReferrals,
|
217
|
+
0, // used referrals
|
218
|
+
expiryAt,
|
219
|
+
data
|
220
|
+
);
|
221
|
+
|
222
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
223
|
+
}
|
207
224
|
}
|
208
225
|
|
209
226
|
/// @inheritdoc IDistributionService
|
@@ -213,10 +230,14 @@ contract DistributionService is
|
|
213
230
|
)
|
214
231
|
external
|
215
232
|
virtual
|
216
|
-
restricted
|
233
|
+
restricted()
|
234
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
217
235
|
{
|
218
236
|
if (referralIsValid(distributionNftId, referralId)) {
|
219
|
-
|
237
|
+
IRegistry registry = getRegistry();
|
238
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
239
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
240
|
+
|
220
241
|
// update book keeping for referral info
|
221
242
|
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
222
243
|
referralInfo.usedReferrals += 1;
|
@@ -231,9 +252,12 @@ contract DistributionService is
|
|
231
252
|
)
|
232
253
|
external
|
233
254
|
virtual
|
234
|
-
restricted
|
255
|
+
restricted()
|
256
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
235
257
|
{
|
236
|
-
|
258
|
+
IRegistry registry = getRegistry();
|
259
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
260
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
237
261
|
InstanceReader reader = instance.getInstanceReader();
|
238
262
|
InstanceStore store = instance.getInstanceStore();
|
239
263
|
|
@@ -245,12 +269,12 @@ contract DistributionService is
|
|
245
269
|
|
246
270
|
// increase distribution balance by commission amount and distribution owner fee
|
247
271
|
Amount commissionAmount = premium.commissionAmount;
|
248
|
-
|
272
|
+
_accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
249
273
|
|
250
274
|
// update book keeping for referral info
|
251
275
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
252
276
|
|
253
|
-
|
277
|
+
_accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
254
278
|
|
255
279
|
// update book keeping for distributor info
|
256
280
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
@@ -258,7 +282,7 @@ contract DistributionService is
|
|
258
282
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
259
283
|
} else {
|
260
284
|
// increase distribution balance by distribution owner fee
|
261
|
-
|
285
|
+
_accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
262
286
|
}
|
263
287
|
}
|
264
288
|
|
@@ -267,13 +291,14 @@ contract DistributionService is
|
|
267
291
|
public
|
268
292
|
virtual
|
269
293
|
// TODO: restricted() (once #462 is done)
|
294
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
270
295
|
returns (Amount withdrawnAmount)
|
271
296
|
{
|
272
297
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
273
298
|
InstanceReader reader = instance.getInstanceReader();
|
274
299
|
|
275
300
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
276
|
-
address distributionWallet = distributionInfo.
|
301
|
+
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
277
302
|
|
278
303
|
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
279
304
|
|
@@ -291,42 +316,66 @@ contract DistributionService is
|
|
291
316
|
{
|
292
317
|
InstanceStore store = instance.getInstanceStore();
|
293
318
|
// decrease fee counter for distribution balance
|
294
|
-
|
319
|
+
_accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
295
320
|
// decrease fee counter for distributor fee
|
296
|
-
|
321
|
+
_accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
297
322
|
}
|
298
323
|
|
299
324
|
// transfer amount to distributor
|
300
325
|
{
|
301
326
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
302
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.
|
303
|
-
distributionInfo.tokenHandler.
|
327
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
|
328
|
+
distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
|
304
329
|
}
|
305
330
|
}
|
306
331
|
|
307
|
-
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
332
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
333
|
+
public
|
334
|
+
view
|
335
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
336
|
+
returns (bool isValid)
|
337
|
+
{
|
308
338
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
309
339
|
return false;
|
310
340
|
}
|
311
341
|
|
312
|
-
|
342
|
+
IRegistry registry = getRegistry();
|
343
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
344
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
313
345
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
314
346
|
|
315
347
|
if (info.distributorNftId.eqz()) {
|
316
348
|
return false;
|
317
349
|
}
|
318
350
|
|
351
|
+
// ensure the referral was created on the same distribution
|
352
|
+
if(info.distributionNftId != distributionNftId) {
|
353
|
+
revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
|
354
|
+
}
|
355
|
+
|
319
356
|
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
|
320
357
|
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
321
358
|
}
|
322
359
|
|
360
|
+
function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId)
|
361
|
+
internal
|
362
|
+
view
|
363
|
+
{
|
364
|
+
// enfore distributor type belongs to the calling distribution
|
365
|
+
NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
|
366
|
+
|
367
|
+
if (distributorTypeDistributionNftId != expectedDistributionNftId) {
|
368
|
+
revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
|
369
|
+
}
|
370
|
+
}
|
371
|
+
|
323
372
|
function _getInstanceForDistribution(NftId distributionNftId)
|
324
373
|
internal
|
325
374
|
view
|
326
375
|
returns(IInstance instance)
|
327
376
|
{
|
328
|
-
NftId instanceNftId = getRegistry().
|
329
|
-
address instanceAddress = getRegistry().
|
377
|
+
NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
|
378
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
330
379
|
return IInstance(instanceAddress);
|
331
380
|
}
|
332
381
|
|
@@ -17,7 +17,7 @@ contract DistributionServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
{
|
19
19
|
DistributionService svc = new DistributionService{salt: salt}();
|
20
|
-
bytes memory data = abi.encode(
|
20
|
+
bytes memory data = abi.encode(authority, registry);
|
21
21
|
IVersionable versionable = initialize(
|
22
22
|
registry,
|
23
23
|
address(svc),
|
@@ -9,16 +9,7 @@ import {UFixed} from "../type/UFixed.sol";
|
|
9
9
|
|
10
10
|
interface IDistributionComponent is IInstanceLinkedComponent {
|
11
11
|
|
12
|
-
|
13
|
-
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
14
|
-
|
15
|
-
event LogDistributorUpdated(address to, address caller);
|
16
|
-
|
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);
|
12
|
+
event LogDistributorUpdated(address to, address operator);
|
22
13
|
|
23
14
|
function getDiscountPercentage(
|
24
15
|
string memory referralCode
|