@etherisc/gif-next 0.0.2-4c19d89-776 → 0.0.2-4c2fb12-528
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 +108 -332
- 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 +111 -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 +655 -299
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -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 +331 -56
- 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 +501 -231
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +131 -16
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +64 -152
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +322 -67
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +448 -148
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +163 -77
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +296 -20
- 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 -110
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +321 -66
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -134
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +321 -66
- 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 +126 -176
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +321 -66
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +321 -66
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -190
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +321 -66
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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 +450 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +488 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +942 -471
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -78
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +615 -518
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -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 -45
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +340 -60
- 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 -31
- 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 -31
- 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 +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +321 -66
- 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 +144 -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 -41
- 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 -41
- 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 +141 -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 +123 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +321 -66
- 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 +128 -70
- 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 -52
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +224 -18
- 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 +138 -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 +115 -65
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -52
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +258 -44
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +104 -42
- 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 +799 -472
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -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 +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +841 -419
- 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 +197 -129
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -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 -31
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +212 -232
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -71
- 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 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +119 -147
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
- 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 -31
- 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 +1453 -153
- 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 -239
- 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 +146 -67
- 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 +98 -44
- 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 +64 -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 +2 -2
- 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 +81 -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 +361 -371
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +23 -32
- package/contracts/authorization/Authorization.sol +82 -229
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +83 -84
- package/contracts/authorization/IAuthorization.sol +3 -51
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +7 -8
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +12 -56
- package/contracts/distribution/DistributionService.sol +154 -64
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +6 -10
- 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 +83 -23
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +98 -12
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +165 -61
- package/contracts/instance/InstanceAdmin.sol +183 -313
- package/contracts/instance/InstanceAuthorizationV3.sol +123 -61
- package/contracts/instance/InstanceReader.sol +354 -385
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -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 +15 -6
- package/contracts/instance/module/IDistribution.sol +19 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +4 -8
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -18
- 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 +6 -20
- 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 +2 -5
- 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 +21 -3
- package/contracts/product/PolicyService.sol +40 -77
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +40 -18
- package/contracts/product/RiskService.sol +57 -12
- 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 +85 -266
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +70 -116
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +128 -33
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +20 -37
- package/contracts/shared/ComponentService.sol +249 -250
- package/contracts/shared/ContractLib.sol +134 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -22
- 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 +6 -11
- 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 +265 -64
- package/contracts/staking/IStakingService.sol +44 -82
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +475 -204
- 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 +17 -22
- 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/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 +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- 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/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- 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/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
|
@@ -13,21 +13,24 @@ import {IComponents} from "../instance/module/IComponents.sol";
|
|
|
13
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
14
14
|
|
|
15
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
|
16
|
-
import {
|
|
16
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
|
17
17
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
|
18
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
|
19
19
|
import {KEEP_STATE} from "../type/StateId.sol";
|
|
20
20
|
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
|
21
21
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
22
22
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
23
|
-
|
|
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";
|
|
24
26
|
import {Seconds} from "../type/Seconds.sol";
|
|
27
|
+
import {Service} from "../shared/Service.sol";
|
|
25
28
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
|
26
|
-
import {UFixed} from "../type/UFixed.sol";
|
|
29
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
|
27
30
|
|
|
28
31
|
|
|
29
32
|
contract DistributionService is
|
|
30
|
-
|
|
33
|
+
Service,
|
|
31
34
|
IDistributionService
|
|
32
35
|
{
|
|
33
36
|
IAccountingService private _accountingService;
|
|
@@ -71,13 +74,14 @@ contract DistributionService is
|
|
|
71
74
|
bytes memory data
|
|
72
75
|
)
|
|
73
76
|
external
|
|
77
|
+
virtual
|
|
78
|
+
restricted()
|
|
74
79
|
returns (DistributorType distributorType)
|
|
75
80
|
{
|
|
76
|
-
(NftId distributionNftId
|
|
77
|
-
// InstanceReader instanceReader = instance.getInstanceReader();
|
|
81
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
|
78
82
|
|
|
79
83
|
{
|
|
80
|
-
NftId productNftId =
|
|
84
|
+
NftId productNftId = getRegistry().getParentNftId(distributionNftId);
|
|
81
85
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
|
82
86
|
|
|
83
87
|
UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
|
|
@@ -88,24 +92,27 @@ contract DistributionService is
|
|
|
88
92
|
}
|
|
89
93
|
UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
|
|
90
94
|
|
|
91
|
-
if (maxDiscountPercentage
|
|
95
|
+
if (maxDiscountPercentage > maxDiscountPercentageLimit) {
|
|
92
96
|
revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
|
97
|
-
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
|
98
|
-
name,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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});
|
|
107
112
|
|
|
108
113
|
instance.getInstanceStore().createDistributorType(distributorType, info);
|
|
114
|
+
|
|
115
|
+
emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
|
|
@@ -116,9 +123,11 @@ contract DistributionService is
|
|
|
116
123
|
)
|
|
117
124
|
external
|
|
118
125
|
virtual
|
|
126
|
+
restricted()
|
|
119
127
|
returns (NftId distributorNftId)
|
|
120
128
|
{
|
|
121
|
-
(NftId distributionNftId
|
|
129
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
|
130
|
+
_checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
|
|
122
131
|
|
|
123
132
|
distributorNftId = _registryService.registerDistributor(
|
|
124
133
|
IRegistry.ObjectInfo(
|
|
@@ -131,28 +140,37 @@ contract DistributionService is
|
|
|
131
140
|
""
|
|
132
141
|
));
|
|
133
142
|
|
|
134
|
-
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
|
|
135
|
-
distributorType,
|
|
136
|
-
true,
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
|
|
144
|
+
distributorType: distributorType,
|
|
145
|
+
active: true,
|
|
146
|
+
numPoliciesSold: 0,
|
|
147
|
+
data: data});
|
|
139
148
|
|
|
140
149
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
|
150
|
+
|
|
151
|
+
emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributorType, distributor);
|
|
141
152
|
}
|
|
142
153
|
|
|
143
154
|
function changeDistributorType(
|
|
144
155
|
NftId distributorNftId,
|
|
145
|
-
DistributorType
|
|
156
|
+
DistributorType newDistributorType,
|
|
146
157
|
bytes memory data
|
|
147
158
|
)
|
|
148
159
|
external
|
|
149
160
|
virtual
|
|
161
|
+
restricted()
|
|
150
162
|
{
|
|
151
|
-
(
|
|
163
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
|
164
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
|
165
|
+
_checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
|
|
166
|
+
|
|
152
167
|
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
|
153
|
-
|
|
168
|
+
DistributorType oldDistributorType = distributorInfo.distributorType;
|
|
169
|
+
distributorInfo.distributorType = newDistributorType;
|
|
154
170
|
distributorInfo.data = data;
|
|
155
171
|
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
|
172
|
+
|
|
173
|
+
emit LogDistributionServiceDistributorTypeChanged(distributorNftId, oldDistributorType, newDistributorType);
|
|
156
174
|
}
|
|
157
175
|
|
|
158
176
|
|
|
@@ -166,50 +184,59 @@ contract DistributionService is
|
|
|
166
184
|
)
|
|
167
185
|
external
|
|
168
186
|
virtual
|
|
187
|
+
restricted()
|
|
169
188
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
|
170
189
|
returns (ReferralId referralId)
|
|
171
190
|
{
|
|
172
|
-
(NftId distributionNftId
|
|
191
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
|
173
192
|
|
|
174
193
|
if (bytes(code).length == 0) {
|
|
175
|
-
revert ErrorDistributionServiceInvalidReferral(
|
|
194
|
+
revert ErrorDistributionServiceInvalidReferral();
|
|
176
195
|
}
|
|
177
|
-
if (expiryAt.eqz() || expiryAt
|
|
196
|
+
if (expiryAt.eqz() || expiryAt < TimestampLib.current()) {
|
|
178
197
|
revert ErrorDistributionServiceExpirationInvalid(expiryAt);
|
|
179
198
|
}
|
|
180
199
|
|
|
200
|
+
NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
|
|
201
|
+
if (distributorDistributionNftId != distributionNftId) {
|
|
202
|
+
revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
|
|
203
|
+
}
|
|
204
|
+
|
|
181
205
|
{
|
|
182
206
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
183
207
|
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
|
184
208
|
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
|
185
209
|
|
|
186
210
|
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
|
187
|
-
revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
|
211
|
+
revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount, maxReferrals);
|
|
188
212
|
}
|
|
189
213
|
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
|
190
|
-
revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage
|
|
214
|
+
revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage, discountPercentage);
|
|
191
215
|
}
|
|
192
216
|
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
|
193
|
-
revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage
|
|
217
|
+
revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage, discountPercentage);
|
|
194
218
|
}
|
|
195
|
-
if (expiryAt.toInt() - TimestampLib.
|
|
219
|
+
if (expiryAt.toInt() - TimestampLib.current().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
|
|
196
220
|
revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
|
|
197
221
|
}
|
|
198
222
|
}
|
|
199
223
|
|
|
200
224
|
{
|
|
201
225
|
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
|
202
|
-
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
+
});
|
|
211
236
|
|
|
212
237
|
instance.getInstanceStore().createReferral(referralId, info);
|
|
238
|
+
|
|
239
|
+
emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
|
|
213
240
|
}
|
|
214
241
|
}
|
|
215
242
|
|
|
@@ -224,14 +251,14 @@ contract DistributionService is
|
|
|
224
251
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
|
225
252
|
{
|
|
226
253
|
if (referralIsValid(distributionNftId, referralId)) {
|
|
227
|
-
|
|
228
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
|
229
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
|
254
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
|
230
255
|
|
|
231
256
|
// update book keeping for referral info
|
|
232
257
|
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
|
233
258
|
referralInfo.usedReferrals += 1;
|
|
234
259
|
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
|
260
|
+
|
|
261
|
+
emit LogDistributionServiceReferralProcessed(distributionNftId, referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
|
|
235
262
|
}
|
|
236
263
|
}
|
|
237
264
|
|
|
@@ -245,9 +272,7 @@ contract DistributionService is
|
|
|
245
272
|
restricted()
|
|
246
273
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
|
247
274
|
{
|
|
248
|
-
|
|
249
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
|
250
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
|
275
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
|
251
276
|
InstanceReader reader = instance.getInstanceReader();
|
|
252
277
|
InstanceStore store = instance.getInstanceStore();
|
|
253
278
|
|
|
@@ -274,30 +299,32 @@ contract DistributionService is
|
|
|
274
299
|
// increase distribution balance by distribution owner fee
|
|
275
300
|
_accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
|
276
301
|
}
|
|
302
|
+
|
|
303
|
+
emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
|
|
277
304
|
}
|
|
278
305
|
|
|
279
306
|
/// @inheritdoc IDistributionService
|
|
280
307
|
function withdrawCommission(NftId distributorNftId, Amount amount)
|
|
281
308
|
public
|
|
282
309
|
virtual
|
|
283
|
-
|
|
310
|
+
restricted()
|
|
284
311
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
|
285
312
|
returns (Amount withdrawnAmount)
|
|
286
313
|
{
|
|
287
|
-
(NftId distributionNftId
|
|
314
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
|
|
288
315
|
InstanceReader reader = instance.getInstanceReader();
|
|
289
316
|
|
|
290
317
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
|
291
|
-
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
|
318
|
+
// address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
|
292
319
|
|
|
293
320
|
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
|
294
321
|
|
|
295
322
|
// determine withdrawn amount
|
|
296
323
|
withdrawnAmount = amount;
|
|
297
|
-
if (withdrawnAmount
|
|
324
|
+
if (withdrawnAmount >= AmountLib.max()) {
|
|
298
325
|
withdrawnAmount = commissionAmount;
|
|
299
326
|
} else {
|
|
300
|
-
if (withdrawnAmount
|
|
327
|
+
if (withdrawnAmount > commissionAmount) {
|
|
301
328
|
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
|
302
329
|
}
|
|
303
330
|
}
|
|
@@ -314,13 +341,14 @@ contract DistributionService is
|
|
|
314
341
|
// transfer amount to distributor
|
|
315
342
|
{
|
|
316
343
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
|
317
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.
|
|
344
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
|
|
318
345
|
distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
|
|
319
346
|
}
|
|
320
347
|
}
|
|
321
348
|
|
|
322
349
|
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
|
323
350
|
public
|
|
351
|
+
virtual
|
|
324
352
|
view
|
|
325
353
|
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
|
326
354
|
returns (bool isValid)
|
|
@@ -329,29 +357,91 @@ contract DistributionService is
|
|
|
329
357
|
return false;
|
|
330
358
|
}
|
|
331
359
|
|
|
332
|
-
|
|
333
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
|
334
|
-
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
|
360
|
+
IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
|
|
335
361
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
|
336
362
|
|
|
337
363
|
if (info.distributorNftId.eqz()) {
|
|
338
364
|
return false;
|
|
339
365
|
}
|
|
340
366
|
|
|
341
|
-
|
|
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);
|
|
342
373
|
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
|
343
374
|
}
|
|
344
375
|
|
|
345
|
-
|
|
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)
|
|
346
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
|
|
347
435
|
view
|
|
348
|
-
returns(
|
|
436
|
+
returns (
|
|
437
|
+
NftId poolNftId,
|
|
438
|
+
IInstance instance
|
|
439
|
+
)
|
|
349
440
|
{
|
|
350
|
-
|
|
351
|
-
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
|
352
|
-
return IInstance(instanceAddress);
|
|
441
|
+
return PoolLib.getAndVerifyActiveComponent(getRegistry(), msg.sender, DISTRIBUTION());
|
|
353
442
|
}
|
|
354
443
|
|
|
444
|
+
|
|
355
445
|
function _getDomain() internal pure override returns(ObjectType) {
|
|
356
446
|
return DISTRIBUTION();
|
|
357
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);
|
|
@@ -1,31 +1,34 @@
|
|
|
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 {NftId} from "../type/NftId.sol";
|
|
6
4
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
7
5
|
import {IService} from "../shared/IService.sol";
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
import {Amount} from "../type/Amount.sol";
|
|
9
8
|
import {DistributorType} from "../type/DistributorType.sol";
|
|
10
|
-
import {
|
|
9
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
10
|
+
import {NftId} from "../type/NftId.sol";
|
|
11
|
+
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
|
11
12
|
import {Seconds} from "../type/Seconds.sol";
|
|
12
13
|
import {Timestamp} from "../type/Timestamp.sol";
|
|
14
|
+
import {UFixed} from "../type/UFixed.sol";
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
interface IDistributionService is IService {
|
|
16
|
-
|
|
17
18
|
error ErrorDistributionServiceCallerNotRegistered(address caller);
|
|
18
19
|
error ErrorDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
|
|
19
20
|
error ErrorDistributionServiceCallerNotDistributor(address caller);
|
|
20
21
|
error ErrorDistributionServiceInvalidReferralId(ReferralId referralId);
|
|
21
|
-
error ErrorDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
|
|
22
|
-
error ErrorDistributionServiceDiscountTooLow(
|
|
23
|
-
error ErrorDistributionServiceDiscountTooHigh(
|
|
22
|
+
error ErrorDistributionServiceMaxReferralsExceeded(uint256 limit, uint256 maxReferrals);
|
|
23
|
+
error ErrorDistributionServiceDiscountTooLow(UFixed minDiscountPercentage, UFixed discountPercentage);
|
|
24
|
+
error ErrorDistributionServiceDiscountTooHigh(UFixed maxDiscountPercentage, UFixed discountPercentage);
|
|
24
25
|
error ErrorDistributionServiceExpiryTooLong(Seconds maxReferralLifetime, Timestamp expiryAt);
|
|
25
|
-
error ErrorDistributionServiceInvalidReferral(
|
|
26
|
+
error ErrorDistributionServiceInvalidReferral();
|
|
26
27
|
error ErrorDistributionServiceExpirationInvalid(Timestamp expiryAt);
|
|
27
28
|
error ErrorDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
|
|
28
29
|
error ErrorDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
|
30
|
+
error ErrorDistributionServiceDistributorTypeDistributionMismatch(DistributorType distributorType, NftId distributorTypeDistributionNftId, NftId distributionNftId);
|
|
31
|
+
error ErrorDistributionServiceDistributorDistributionMismatch(NftId distributorNftId, NftId distributorDistributionNftId, NftId distributionNftId);
|
|
29
32
|
|
|
30
33
|
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
|
31
34
|
|
|
@@ -34,8 +37,15 @@ interface IDistributionService is IService {
|
|
|
34
37
|
|
|
35
38
|
error ErrorDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
|
|
36
39
|
error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
|
|
40
|
+
error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
|
|
37
41
|
|
|
38
42
|
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
|
43
|
+
event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
|
|
44
|
+
event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
|
|
45
|
+
event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
|
|
46
|
+
event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
|
|
47
|
+
event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
|
|
48
|
+
event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
|
|
39
49
|
|
|
40
50
|
function createDistributorType(
|
|
41
51
|
string memory name,
|
|
@@ -59,7 +69,7 @@ interface IDistributionService is IService {
|
|
|
59
69
|
|
|
60
70
|
function changeDistributorType(
|
|
61
71
|
NftId distributorNftId,
|
|
62
|
-
DistributorType
|
|
72
|
+
DistributorType newDistributorType,
|
|
63
73
|
bytes memory data
|
|
64
74
|
) external;
|
|
65
75
|
|
|
@@ -98,4 +108,8 @@ interface IDistributionService is IService {
|
|
|
98
108
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
|
99
109
|
/// @return withdrawnAmount the effective withdrawn amount
|
|
100
110
|
function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
|
|
111
|
+
|
|
112
|
+
/// @dev Returns the discount percentage for the provided referral code.
|
|
113
|
+
/// The function retuns both the percentage and the status of the referral code.
|
|
114
|
+
function getDiscountPercentage(InstanceReader instanceReader, ReferralId referralId) external view returns (UFixed discountPercentage, ReferralStatus status);
|
|
101
115
|
}
|
|
@@ -19,7 +19,6 @@ contract FirePool is
|
|
|
19
19
|
address registry,
|
|
20
20
|
NftId fireProductNftId,
|
|
21
21
|
string memory componentName,
|
|
22
|
-
address token,
|
|
23
22
|
IAuthorization authorization
|
|
24
23
|
)
|
|
25
24
|
{
|
|
@@ -28,7 +27,6 @@ contract FirePool is
|
|
|
28
27
|
registry,
|
|
29
28
|
fireProductNftId,
|
|
30
29
|
componentName,
|
|
31
|
-
token,
|
|
32
30
|
IComponents.PoolInfo({
|
|
33
31
|
maxBalanceAmount: AmountLib.max(),
|
|
34
32
|
isInterceptingBundleTransfers: false,
|
|
@@ -46,7 +44,6 @@ contract FirePool is
|
|
|
46
44
|
address registry,
|
|
47
45
|
NftId fireProductNftId,
|
|
48
46
|
string memory componentName,
|
|
49
|
-
address token,
|
|
50
47
|
IComponents.PoolInfo memory poolInfo,
|
|
51
48
|
IAuthorization authorization,
|
|
52
49
|
address initialOwner
|
|
@@ -58,7 +55,6 @@ contract FirePool is
|
|
|
58
55
|
registry,
|
|
59
56
|
fireProductNftId,
|
|
60
57
|
componentName,
|
|
61
|
-
token,
|
|
62
58
|
poolInfo,
|
|
63
59
|
authorization,
|
|
64
60
|
initialOwner);
|
|
@@ -68,7 +68,6 @@ contract FireProduct is
|
|
|
68
68
|
address registry,
|
|
69
69
|
NftId instanceNftid,
|
|
70
70
|
string memory componentName,
|
|
71
|
-
address token,
|
|
72
71
|
IAuthorization authorization
|
|
73
72
|
)
|
|
74
73
|
{
|
|
@@ -78,7 +77,6 @@ contract FireProduct is
|
|
|
78
77
|
registry,
|
|
79
78
|
instanceNftid,
|
|
80
79
|
componentName,
|
|
81
|
-
token,
|
|
82
80
|
authorization,
|
|
83
81
|
initialOwner);
|
|
84
82
|
}
|
|
@@ -87,7 +85,6 @@ contract FireProduct is
|
|
|
87
85
|
address registry,
|
|
88
86
|
NftId instanceNftId,
|
|
89
87
|
string memory componentName,
|
|
90
|
-
address token,
|
|
91
88
|
IAuthorization authorization,
|
|
92
89
|
address initialOwner
|
|
93
90
|
)
|
|
@@ -98,7 +95,6 @@ contract FireProduct is
|
|
|
98
95
|
registry,
|
|
99
96
|
instanceNftId,
|
|
100
97
|
componentName,
|
|
101
|
-
token,
|
|
102
98
|
IComponents.ProductInfo({
|
|
103
99
|
isProcessingFundedClaims: false,
|
|
104
100
|
isInterceptingPolicyTransfers: false,
|
|
@@ -144,9 +140,9 @@ contract FireProduct is
|
|
|
144
140
|
revert ErrorFireProductCityUnknown(cityName);
|
|
145
141
|
}
|
|
146
142
|
|
|
147
|
-
|
|
143
|
+
_setRiskLocked(
|
|
148
144
|
_riskMapping[cityName],
|
|
149
|
-
|
|
145
|
+
true
|
|
150
146
|
);
|
|
151
147
|
}
|
|
152
148
|
|
|
@@ -160,9 +156,9 @@ contract FireProduct is
|
|
|
160
156
|
revert ErrorFireProductCityUnknown(cityName);
|
|
161
157
|
}
|
|
162
158
|
|
|
163
|
-
|
|
159
|
+
_setRiskLocked(
|
|
164
160
|
_riskMapping[cityName],
|
|
165
|
-
|
|
161
|
+
false
|
|
166
162
|
);
|
|
167
163
|
}
|
|
168
164
|
|
|
@@ -267,7 +263,7 @@ contract FireProduct is
|
|
|
267
263
|
onlyOwner()
|
|
268
264
|
onlyNftOfType(policyNftId, POLICY())
|
|
269
265
|
{
|
|
270
|
-
_createPolicy(policyNftId, activateAt);
|
|
266
|
+
_createPolicy(policyNftId, activateAt, AmountLib.max());
|
|
271
267
|
_collectPremium(policyNftId, activateAt);
|
|
272
268
|
}
|
|
273
269
|
|
|
@@ -320,7 +316,7 @@ contract FireProduct is
|
|
|
320
316
|
revert ErrorFireProductCityUnknown(cityName);
|
|
321
317
|
}
|
|
322
318
|
|
|
323
|
-
if (reportedAt > TimestampLib.
|
|
319
|
+
if (reportedAt > TimestampLib.current()) {
|
|
324
320
|
revert ErrorFireProductTimestampInFuture();
|
|
325
321
|
}
|
|
326
322
|
|