@etherisc/gif-next 0.0.2-9346c9b-763 → 0.0.2-9356555-232
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 +46 -8
- 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 +203 -77
- 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/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -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 +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -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 +165 -391
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -321
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +383 -363
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +133 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +248 -122
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1523 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -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 +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1026 -298
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +640 -493
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +114 -340
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -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 +102 -130
- 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 +90 -308
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +119 -387
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +275 -314
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +122 -108
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +172 -97
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -219
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -394
- 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 +653 -532
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +194 -178
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +100 -90
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- 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 +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +253 -306
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +123 -121
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +241 -398
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +334 -34
- 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 +540 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +349 -167
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -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 +420 -246
- 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 +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +499 -568
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -128
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- 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 +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +457 -231
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
- 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 +15 -47
- 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 +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
- 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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- 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 +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- 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 +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +7 -2
- 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 +2 -2
- 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 +125 -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/Seconds.sol/SecondsLib.json +50 -2
- 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 +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- 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 +47 -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 +71 -70
- 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 +232 -134
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +17 -25
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -54
- package/contracts/distribution/DistributionService.sol +159 -119
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +31 -25
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +85 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +21 -37
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +59 -66
- package/contracts/instance/InstanceAdmin.sol +256 -85
- package/contracts/instance/InstanceAuthorizationV3.sol +56 -47
- package/contracts/instance/InstanceReader.sol +288 -43
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -14
- package/contracts/instance/module/IDistribution.sol +5 -3
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +9 -23
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +32 -11
- package/contracts/pool/BundleService.sol +180 -127
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +29 -34
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +145 -128
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +540 -219
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +87 -43
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +367 -151
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +9 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
- package/contracts/product/PolicyService.sol +476 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +71 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +169 -92
- package/contracts/product/RiskService.sol +154 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +60 -28
- 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 +357 -203
- package/contracts/registry/RegistryAdmin.sol +171 -182
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +258 -234
- package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -127
- package/contracts/shared/ComponentService.sol +426 -356
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +39 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +73 -48
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +7 -9
- package/contracts/staking/IStakingService.sol +8 -3
- package/contracts/staking/StakeManagerLib.sol +19 -26
- package/contracts/staking/Staking.sol +71 -59
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -6
- package/contracts/staking/StakingService.sol +54 -35
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +20 -3
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +52 -20
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +35 -122
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,44 +1,36 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
-
import {IInstance} from "../instance/IInstance.sol";
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
8
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";
|
9
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
10
11
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
11
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
12
|
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 {NftId, NftIdLib} from "../type/NftId.sol";
|
17
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
19
|
-
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
21
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
22
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
23
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";
|
24
23
|
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
24
|
+
import {Seconds} from "../type/Seconds.sol";
|
25
25
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
26
|
-
import {
|
27
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
28
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
26
|
+
import {UFixed} from "../type/UFixed.sol";
|
29
27
|
|
30
28
|
|
31
29
|
contract DistributionService is
|
32
30
|
ComponentVerifyingService,
|
33
31
|
IDistributionService
|
34
32
|
{
|
35
|
-
|
36
|
-
using NftIdLib for NftId;
|
37
|
-
using TimestampLib for Timestamp;
|
38
|
-
using UFixedLib for UFixed;
|
39
|
-
using FeeLib for Fee;
|
40
|
-
using ReferralLib for ReferralId;
|
41
|
-
|
33
|
+
IAccountingService private _accountingService;
|
42
34
|
IComponentService private _componentService;
|
43
35
|
IInstanceService private _instanceService;
|
44
36
|
IRegistryService private _registryService;
|
@@ -48,21 +40,22 @@ contract DistributionService is
|
|
48
40
|
bytes memory data
|
49
41
|
)
|
50
42
|
internal
|
51
|
-
initializer
|
52
43
|
virtual override
|
44
|
+
initializer()
|
53
45
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
// owner is DistributionServiceManager deployer
|
59
|
-
initializeService(registryAddress, address(0), owner);
|
46
|
+
(
|
47
|
+
address authority,
|
48
|
+
address registry
|
49
|
+
) = abi.decode(data, (address, address));
|
60
50
|
|
51
|
+
__Service_init(authority, registry, owner);
|
52
|
+
|
53
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
61
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
62
55
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
56
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
64
57
|
|
65
|
-
|
58
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
66
59
|
}
|
67
60
|
|
68
61
|
|
@@ -72,7 +65,7 @@ contract DistributionService is
|
|
72
65
|
UFixed maxDiscountPercentage,
|
73
66
|
UFixed commissionPercentage,
|
74
67
|
uint32 maxReferralCount,
|
75
|
-
|
68
|
+
Seconds maxReferralLifetime,
|
76
69
|
bool allowSelfReferrals,
|
77
70
|
bool allowRenewals,
|
78
71
|
bytes memory data
|
@@ -81,14 +74,13 @@ contract DistributionService is
|
|
81
74
|
returns (DistributorType distributorType)
|
82
75
|
{
|
83
76
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
84
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
85
77
|
|
86
78
|
{
|
87
|
-
NftId productNftId = _getProductNftId(
|
88
|
-
IComponents.
|
79
|
+
NftId productNftId = _getProductNftId(distributionNftId);
|
80
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
89
81
|
|
90
|
-
UFixed variableDistributionFees =
|
91
|
-
UFixed variableFeesPartsTotal =
|
82
|
+
UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
|
83
|
+
UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
|
92
84
|
|
93
85
|
if (variableFeesPartsTotal > variableDistributionFees) {
|
94
86
|
revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
|
@@ -103,6 +95,7 @@ contract DistributionService is
|
|
103
95
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
104
96
|
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
105
97
|
name,
|
98
|
+
distributionNftId,
|
106
99
|
minDiscountPercentage,
|
107
100
|
maxDiscountPercentage,
|
108
101
|
commissionPercentage,
|
@@ -126,6 +119,7 @@ contract DistributionService is
|
|
126
119
|
returns (NftId distributorNftId)
|
127
120
|
{
|
128
121
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
122
|
+
_checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
|
129
123
|
|
130
124
|
distributorNftId = _registryService.registerDistributor(
|
131
125
|
IRegistry.ObjectInfo(
|
@@ -142,27 +136,28 @@ contract DistributionService is
|
|
142
136
|
distributorType,
|
143
137
|
true, // active
|
144
138
|
data,
|
145
|
-
AmountLib.zero(),
|
146
139
|
0);
|
147
140
|
|
148
141
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
149
142
|
}
|
150
143
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
144
|
+
function changeDistributorType(
|
145
|
+
NftId distributorNftId,
|
146
|
+
DistributorType distributorType,
|
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(), distributorType, distributionNftId);
|
155
|
+
|
156
|
+
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
157
|
+
distributorInfo.distributorType = distributorType;
|
158
|
+
distributorInfo.data = data;
|
159
|
+
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
160
|
+
}
|
166
161
|
|
167
162
|
|
168
163
|
function createReferral(
|
@@ -175,87 +170,119 @@ contract DistributionService is
|
|
175
170
|
)
|
176
171
|
external
|
177
172
|
virtual
|
173
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
178
174
|
returns (ReferralId referralId)
|
179
175
|
{
|
180
176
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
181
177
|
|
182
178
|
if (bytes(code).length == 0) {
|
183
|
-
revert
|
179
|
+
revert ErrorDistributionServiceInvalidReferral(code);
|
184
180
|
}
|
185
|
-
if (expiryAt.eqz()) {
|
186
|
-
revert
|
181
|
+
if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
|
182
|
+
revert ErrorDistributionServiceExpirationInvalid(expiryAt);
|
187
183
|
}
|
188
184
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
194
|
-
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
195
|
-
}
|
196
|
-
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
197
|
-
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
185
|
+
NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
|
186
|
+
if (distributorDistributionNftId != distributionNftId) {
|
187
|
+
revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
|
198
188
|
}
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
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
|
+
}
|
204
207
|
}
|
205
208
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
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
|
+
}
|
219
224
|
}
|
220
225
|
|
226
|
+
/// @inheritdoc IDistributionService
|
227
|
+
function processReferral(
|
228
|
+
NftId distributionNftId,
|
229
|
+
ReferralId referralId
|
230
|
+
)
|
231
|
+
external
|
232
|
+
virtual
|
233
|
+
restricted()
|
234
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
235
|
+
{
|
236
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
237
|
+
IRegistry registry = getRegistry();
|
238
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
239
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
240
|
+
|
241
|
+
// update book keeping for referral info
|
242
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
243
|
+
referralInfo.usedReferrals += 1;
|
244
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
245
|
+
}
|
246
|
+
}
|
221
247
|
|
222
248
|
function processSale(
|
223
249
|
NftId distributionNftId, // assume always of distribution type
|
224
250
|
ReferralId referralId,
|
225
|
-
IPolicy.
|
251
|
+
IPolicy.PremiumInfo memory premium
|
226
252
|
)
|
227
253
|
external
|
228
254
|
virtual
|
229
|
-
restricted
|
255
|
+
restricted()
|
256
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
230
257
|
{
|
231
|
-
|
258
|
+
IRegistry registry = getRegistry();
|
259
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
260
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
232
261
|
InstanceReader reader = instance.getInstanceReader();
|
233
262
|
InstanceStore store = instance.getInstanceStore();
|
234
263
|
|
235
264
|
// get distribution owner fee amount
|
236
|
-
Amount distributionOwnerFee =
|
265
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
237
266
|
|
238
267
|
// update referral/distributor info if applicable
|
239
268
|
if (referralIsValid(distributionNftId, referralId)) {
|
240
269
|
|
241
270
|
// increase distribution balance by commission amount and distribution owner fee
|
242
|
-
Amount commissionAmount =
|
243
|
-
|
271
|
+
Amount commissionAmount = premium.commissionAmount;
|
272
|
+
_accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
244
273
|
|
245
274
|
// update book keeping for referral info
|
246
275
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
247
|
-
|
248
|
-
|
276
|
+
|
277
|
+
_accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
249
278
|
|
250
279
|
// update book keeping for distributor info
|
251
280
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
252
|
-
// TODO refactor sum of commission amount into a fee balance for distributors
|
253
|
-
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
254
281
|
distributorInfo.numPoliciesSold += 1;
|
255
282
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
256
283
|
} else {
|
257
284
|
// increase distribution balance by distribution owner fee
|
258
|
-
|
285
|
+
_accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
259
286
|
}
|
260
287
|
}
|
261
288
|
|
@@ -264,78 +291,91 @@ contract DistributionService is
|
|
264
291
|
public
|
265
292
|
virtual
|
266
293
|
// TODO: restricted() (once #462 is done)
|
294
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
267
295
|
returns (Amount withdrawnAmount)
|
268
296
|
{
|
269
297
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
270
298
|
InstanceReader reader = instance.getInstanceReader();
|
271
299
|
|
272
300
|
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
273
|
-
address distributionWallet = distributionInfo.
|
301
|
+
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
274
302
|
|
275
|
-
|
303
|
+
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
276
304
|
|
277
305
|
// determine withdrawn amount
|
278
306
|
withdrawnAmount = amount;
|
279
307
|
if (withdrawnAmount.gte(AmountLib.max())) {
|
280
|
-
withdrawnAmount =
|
308
|
+
withdrawnAmount = commissionAmount;
|
281
309
|
} else {
|
282
|
-
if (withdrawnAmount.gt(
|
283
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount,
|
310
|
+
if (withdrawnAmount.gt(commissionAmount)) {
|
311
|
+
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
284
312
|
}
|
285
313
|
}
|
286
314
|
|
287
|
-
if (withdrawnAmount.eqz()) {
|
288
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
|
289
|
-
}
|
290
|
-
|
291
|
-
// check allowance
|
292
|
-
IERC20Metadata token = IERC20Metadata(distributionInfo.token);
|
293
|
-
uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
|
294
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
295
|
-
revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
296
|
-
}
|
297
|
-
|
298
315
|
// decrease fee counters by withdrawnAmount and update distributor info
|
299
316
|
{
|
300
317
|
InstanceStore store = instance.getInstanceStore();
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
318
|
+
// decrease fee counter for distribution balance
|
319
|
+
_accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
320
|
+
// decrease fee counter for distributor fee
|
321
|
+
_accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
305
322
|
}
|
306
323
|
|
307
324
|
// transfer amount to distributor
|
308
325
|
{
|
309
326
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
310
|
-
|
311
|
-
|
312
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
|
327
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
328
|
+
distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
|
313
329
|
}
|
314
330
|
}
|
315
331
|
|
316
|
-
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
|
+
{
|
317
338
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
318
339
|
return false;
|
319
340
|
}
|
320
341
|
|
321
|
-
|
342
|
+
IRegistry registry = getRegistry();
|
343
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
344
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
322
345
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
323
346
|
|
324
347
|
if (info.distributorNftId.eqz()) {
|
325
348
|
return false;
|
326
349
|
}
|
327
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
|
+
|
328
356
|
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
|
329
357
|
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
330
358
|
}
|
331
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
|
+
|
332
372
|
function _getInstanceForDistribution(NftId distributionNftId)
|
333
373
|
internal
|
334
374
|
view
|
335
375
|
returns(IInstance instance)
|
336
376
|
{
|
337
|
-
NftId instanceNftId = getRegistry().
|
338
|
-
address instanceAddress = getRegistry().
|
377
|
+
NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
|
378
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
339
379
|
return IInstance(instanceAddress);
|
340
380
|
}
|
341
381
|
|
@@ -12,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
|
-
DistributionService
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
23
|
-
|
19
|
+
DistributionService svc = new DistributionService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(authority, registry);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
@@ -12,7 +12,7 @@ interface IDistributionComponent is IInstanceLinkedComponent {
|
|
12
12
|
error ErrorDistributionNotDistributor(address distributor);
|
13
13
|
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
14
14
|
|
15
|
-
event LogDistributorUpdated(address to, address
|
15
|
+
event LogDistributorUpdated(address to, address operator);
|
16
16
|
|
17
17
|
/// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
|
18
18
|
function isDistributor(address candidate) external view returns (bool);
|
@@ -3,39 +3,39 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {NftId} from "../type/NftId.sol";
|
6
|
-
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
7
|
import {IService} from "../shared/IService.sol";
|
9
8
|
import {UFixed} from "../type/UFixed.sol";
|
10
9
|
import {DistributorType} from "../type/DistributorType.sol";
|
11
10
|
import {ReferralId} from "../type/Referral.sol";
|
11
|
+
import {Seconds} from "../type/Seconds.sol";
|
12
12
|
import {Timestamp} from "../type/Timestamp.sol";
|
13
13
|
|
14
14
|
|
15
15
|
interface IDistributionService is IService {
|
16
|
-
|
17
16
|
error ErrorDistributionServiceCallerNotRegistered(address caller);
|
18
|
-
error
|
19
|
-
error
|
20
|
-
error
|
21
|
-
error
|
22
|
-
error
|
23
|
-
error
|
24
|
-
error
|
25
|
-
error
|
26
|
-
error
|
27
|
-
error
|
28
|
-
error
|
17
|
+
error ErrorDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
|
18
|
+
error ErrorDistributionServiceCallerNotDistributor(address caller);
|
19
|
+
error ErrorDistributionServiceInvalidReferralId(ReferralId referralId);
|
20
|
+
error ErrorDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
|
21
|
+
error ErrorDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
|
22
|
+
error ErrorDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
|
23
|
+
error ErrorDistributionServiceExpiryTooLong(Seconds maxReferralLifetime, Timestamp expiryAt);
|
24
|
+
error ErrorDistributionServiceInvalidReferral(string code);
|
25
|
+
error ErrorDistributionServiceExpirationInvalid(Timestamp expiryAt);
|
26
|
+
error ErrorDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
|
27
|
+
error ErrorDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
28
|
+
error ErrorDistributionServiceDistributorTypeDistributionMismatch(DistributorType distributorType, NftId distributorTypeDistributionNftId, NftId distributionNftId);
|
29
|
+
error ErrorDistributionServiceDistributorDistributionMismatch(NftId distributorNftId, NftId distributorDistributionNftId, NftId distributionNftId);
|
29
30
|
|
30
31
|
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
-
|
32
|
-
error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
33
|
-
|
32
|
+
|
34
33
|
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
35
34
|
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
36
35
|
|
37
|
-
error
|
36
|
+
error ErrorDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
|
38
37
|
error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
|
38
|
+
error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
|
39
39
|
|
40
40
|
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
41
41
|
|
@@ -45,7 +45,7 @@ interface IDistributionService is IService {
|
|
45
45
|
UFixed maxDiscountPercentage,
|
46
46
|
UFixed commissionPercentage,
|
47
47
|
uint32 maxReferralCount,
|
48
|
-
|
48
|
+
Seconds maxReferralLifetime,
|
49
49
|
bool allowSelfReferrals,
|
50
50
|
bool allowRenewals,
|
51
51
|
bytes memory data
|
@@ -59,12 +59,11 @@ interface IDistributionService is IService {
|
|
59
59
|
bytes memory data
|
60
60
|
) external returns (NftId distributorNftId);
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
// ) external;
|
62
|
+
function changeDistributorType(
|
63
|
+
NftId distributorNftId,
|
64
|
+
DistributorType distributorType,
|
65
|
+
bytes memory data
|
66
|
+
) external;
|
68
67
|
|
69
68
|
function createReferral(
|
70
69
|
NftId distributorNftId,
|
@@ -77,11 +76,18 @@ interface IDistributionService is IService {
|
|
77
76
|
external
|
78
77
|
returns (ReferralId referralId);
|
79
78
|
|
79
|
+
/// @dev callback from product service when a referral is used.
|
80
|
+
/// Calling this will increment the referral usage counter.
|
81
|
+
function processReferral(
|
82
|
+
NftId distributionNftId,
|
83
|
+
ReferralId referralId
|
84
|
+
) external;
|
85
|
+
|
80
86
|
/// @dev callback from product service when selling a policy for a specific referralId
|
81
87
|
function processSale(
|
82
88
|
NftId distributionNftId,
|
83
89
|
ReferralId referralId,
|
84
|
-
IPolicy.
|
90
|
+
IPolicy.PremiumInfo memory premium
|
85
91
|
) external;
|
86
92
|
|
87
93
|
function referralIsValid(
|
@@ -0,0 +1,59 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
type DamageLevel is uint8;
|
5
|
+
|
6
|
+
// type bindings
|
7
|
+
using {
|
8
|
+
DamageLevelLib.eq,
|
9
|
+
DamageLevelLib.eqz,
|
10
|
+
DamageLevelLib.toInt
|
11
|
+
} for DamageLevel global;
|
12
|
+
|
13
|
+
// solhint-disable-next-line func-name-mixedcase
|
14
|
+
function DAMAGE_SMALL() pure returns (DamageLevel) {
|
15
|
+
return DamageLevel.wrap(1);
|
16
|
+
}
|
17
|
+
|
18
|
+
// solhint-disable-next-line func-name-mixedcase
|
19
|
+
function DAMAGE_MEDIUM() pure returns (DamageLevel) {
|
20
|
+
return DamageLevel.wrap(2);
|
21
|
+
}
|
22
|
+
|
23
|
+
// solhint-disable-next-line func-name-mixedcase
|
24
|
+
function DAMAGE_LARGE() pure returns (DamageLevel) {
|
25
|
+
return DamageLevel.wrap(3);
|
26
|
+
}
|
27
|
+
|
28
|
+
library DamageLevelLib {
|
29
|
+
|
30
|
+
error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
|
31
|
+
|
32
|
+
function zero() internal pure returns (DamageLevel) {
|
33
|
+
return DamageLevel.wrap(0);
|
34
|
+
}
|
35
|
+
|
36
|
+
function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
|
37
|
+
if (damage == 1) {
|
38
|
+
return DAMAGE_SMALL();
|
39
|
+
} else if (damage == 2) {
|
40
|
+
return DAMAGE_MEDIUM();
|
41
|
+
} else if (damage == 3) {
|
42
|
+
return DAMAGE_LARGE();
|
43
|
+
} else {
|
44
|
+
revert ErrorDamageLeveLibInvalidDamageLevel(damage);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
|
49
|
+
return uint8(DamageLevel.unwrap(damageLevel));
|
50
|
+
}
|
51
|
+
|
52
|
+
function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
|
53
|
+
return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
|
54
|
+
}
|
55
|
+
|
56
|
+
function eqz(DamageLevel a) internal pure returns (bool) {
|
57
|
+
return DamageLevel.unwrap(a) == 0;
|
58
|
+
}
|
59
|
+
}
|