@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e79d227-681
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 +77 -10
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- 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 +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -546
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +380 -229
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +198 -96
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +186 -238
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +223 -47
- 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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +153 -86
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +181 -119
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +174 -215
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1666 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +876 -160
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +260 -268
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +506 -338
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +456 -187
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +218 -80
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +264 -26
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +115 -354
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -223
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -682
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +590 -382
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +190 -76
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +147 -161
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +147 -77
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +343 -168
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +200 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +88 -8
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +364 -121
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +134 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +176 -160
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +51 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +475 -294
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +199 -81
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +229 -275
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +172 -102
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +201 -486
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +412 -35
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -196
- 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 +761 -87
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +278 -306
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +154 -78
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +79 -274
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +626 -252
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +209 -99
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -101
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +74 -79
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +561 -13
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +120 -108
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -13
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
- 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 +49 -1
- 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 +129 -360
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -98
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +62 -87
- 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 +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +462 -634
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +546 -48
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +613 -871
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +185 -81
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +633 -173
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +166 -68
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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 +47 -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 +149 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- 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 +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +616 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +145 -124
- package/contracts/distribution/DistributionService.sol +156 -99
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +27 -41
- package/contracts/distribution/IDistributionService.sol +29 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +39 -44
- package/contracts/instance/IInstanceService.sol +33 -42
- package/contracts/instance/Instance.sol +137 -124
- package/contracts/instance/InstanceAdmin.sol +278 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +217 -0
- package/contracts/instance/InstanceReader.sol +249 -36
- package/contracts/instance/InstanceService.sol +227 -151
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +85 -57
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/BalanceStore.sol +12 -7
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/ObjectSet.sol +78 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +11 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +309 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +232 -122
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +34 -18
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +57 -51
- package/contracts/pool/Pool.sol +208 -162
- package/contracts/pool/PoolService.sol +372 -181
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +90 -84
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +331 -153
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +7 -3
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +47 -35
- package/contracts/product/IPricingService.sol +11 -11
- package/contracts/product/IProductComponent.sol +26 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -2
- package/contracts/product/PolicyService.sol +524 -262
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +64 -64
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +189 -139
- package/contracts/product/{ProductService.sol → RiskService.sol} +35 -50
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -37
- package/contracts/registry/IRegistry.sol +90 -28
- package/contracts/registry/IRegistryService.sol +26 -43
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +424 -228
- package/contracts/registry/RegistryAdmin.sol +451 -0
- package/contracts/registry/RegistryService.sol +63 -149
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +175 -0
- package/contracts/registry/TokenRegistry.sol +187 -59
- package/contracts/shared/Component.sol +56 -125
- package/contracts/shared/ComponentService.sol +411 -201
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +40 -23
- package/contracts/shared/ContractLib.sol +224 -0
- package/contracts/shared/IComponent.sol +11 -18
- package/contracts/shared/IComponentService.sol +52 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
- package/contracts/shared/IKeyValueStore.sol +2 -1
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +103 -43
- package/contracts/shared/KeyValueStore.sol +30 -68
- package/contracts/shared/Lifecycle.sol +30 -63
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +31 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +44 -37
- package/contracts/shared/TokenHandler.sol +358 -27
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +133 -37
- package/contracts/staking/IStakingService.sol +93 -41
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +394 -101
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +24 -18
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +282 -42
- package/contracts/staking/StakingServiceManager.sol +10 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +39 -3
- package/contracts/type/Blocknumber.sol +20 -2
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +16 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +178 -65
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +31 -5
- package/contracts/type/RoleId.sol +98 -74
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- 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 -673
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- 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/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/instance/base/ObjectManager.sol +0 -82
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -213
- package/contracts/registry/ReleaseManager.sol +0 -375
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,9 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
5
|
import {IInstance} from "../instance/IInstance.sol";
|
6
|
-
import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
|
7
6
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
7
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
8
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
@@ -13,30 +12,14 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
13
12
|
|
14
13
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
16
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
-
import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
|
18
15
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
16
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
21
|
-
import {RoleId} from "../type/RoleId.sol";
|
22
|
-
|
23
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
24
|
-
import {Versionable} from "../shared/Versionable.sol";
|
25
|
-
|
26
|
-
import {IService} from "../shared/IService.sol";
|
27
|
-
import {Service} from "../shared/Service.sol";
|
28
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
30
|
-
import {IComponent} from "../shared/IComponent.sol";
|
31
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
32
18
|
import {IDistributionService} from "./IDistributionService.sol";
|
33
|
-
import {
|
34
|
-
|
35
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
36
20
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
37
|
-
import {ReferralId,
|
38
|
-
import {Timestamp, TimestampLib
|
39
|
-
import {Key32} from "../type/Key32.sol";
|
21
|
+
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
40
23
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
41
24
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
42
25
|
|
@@ -45,12 +28,6 @@ contract DistributionService is
|
|
45
28
|
ComponentVerifyingService,
|
46
29
|
IDistributionService
|
47
30
|
{
|
48
|
-
using NftIdLib for NftId;
|
49
|
-
using TimestampLib for Timestamp;
|
50
|
-
using UFixedLib for UFixed;
|
51
|
-
using FeeLib for Fee;
|
52
|
-
using ReferralLib for ReferralId;
|
53
|
-
|
54
31
|
IComponentService private _componentService;
|
55
32
|
IInstanceService private _instanceService;
|
56
33
|
IRegistryService private _registryService;
|
@@ -60,25 +37,21 @@ contract DistributionService is
|
|
60
37
|
bytes memory data
|
61
38
|
)
|
62
39
|
internal
|
63
|
-
initializer
|
64
40
|
virtual override
|
41
|
+
initializer()
|
65
42
|
{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
43
|
+
(
|
44
|
+
address registryAddress,
|
45
|
+
address authority
|
46
|
+
) = abi.decode(data, (address, address));
|
47
|
+
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
72
49
|
|
73
50
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
74
51
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
75
52
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
76
53
|
|
77
|
-
|
78
|
-
}
|
79
|
-
|
80
|
-
function getDomain() public pure override returns(ObjectType) {
|
81
|
-
return DISTRIBUTION();
|
54
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
82
55
|
}
|
83
56
|
|
84
57
|
|
@@ -100,12 +73,19 @@ contract DistributionService is
|
|
100
73
|
InstanceReader instanceReader = instance.getInstanceReader();
|
101
74
|
|
102
75
|
{
|
103
|
-
NftId productNftId = _getProductNftId(
|
76
|
+
NftId productNftId = _getProductNftId(distributionNftId);
|
104
77
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
105
|
-
|
106
|
-
UFixed
|
78
|
+
|
79
|
+
UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
|
80
|
+
UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
|
81
|
+
|
82
|
+
if (variableFeesPartsTotal > variableDistributionFees) {
|
83
|
+
revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
|
84
|
+
}
|
85
|
+
UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
|
86
|
+
|
107
87
|
if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
|
108
|
-
revert
|
88
|
+
revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
|
109
89
|
}
|
110
90
|
}
|
111
91
|
|
@@ -151,27 +131,25 @@ contract DistributionService is
|
|
151
131
|
distributorType,
|
152
132
|
true, // active
|
153
133
|
data,
|
154
|
-
AmountLib.zero(),
|
155
134
|
0);
|
156
135
|
|
157
136
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
158
137
|
}
|
159
138
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
// }
|
139
|
+
function changeDistributorType(
|
140
|
+
NftId distributorNftId,
|
141
|
+
DistributorType distributorType,
|
142
|
+
bytes memory data
|
143
|
+
)
|
144
|
+
external
|
145
|
+
virtual
|
146
|
+
{
|
147
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
148
|
+
IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
|
149
|
+
distributorInfo.distributorType = distributorType;
|
150
|
+
distributorInfo.data = data;
|
151
|
+
instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
152
|
+
}
|
175
153
|
|
176
154
|
|
177
155
|
function createReferral(
|
@@ -184,6 +162,7 @@ contract DistributionService is
|
|
184
162
|
)
|
185
163
|
external
|
186
164
|
virtual
|
165
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
187
166
|
returns (ReferralId referralId)
|
188
167
|
{
|
189
168
|
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
@@ -191,89 +170,164 @@ contract DistributionService is
|
|
191
170
|
if (bytes(code).length == 0) {
|
192
171
|
revert ErrorIDistributionServiceInvalidReferral(code);
|
193
172
|
}
|
194
|
-
if (expiryAt.eqz()) {
|
173
|
+
if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
|
195
174
|
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
196
175
|
}
|
197
176
|
|
198
|
-
|
199
|
-
|
200
|
-
|
177
|
+
{
|
178
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
179
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
180
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
201
181
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
182
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
183
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
184
|
+
}
|
185
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
186
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
187
|
+
}
|
188
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
189
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
190
|
+
}
|
191
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
192
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
193
|
+
}
|
213
194
|
}
|
214
195
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
196
|
+
{
|
197
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
198
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
199
|
+
distributorNftId,
|
200
|
+
code,
|
201
|
+
discountPercentage,
|
202
|
+
maxReferrals,
|
203
|
+
0, // used referrals
|
204
|
+
expiryAt,
|
205
|
+
data
|
206
|
+
);
|
207
|
+
|
208
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
209
|
+
}
|
228
210
|
}
|
229
211
|
|
212
|
+
/// @inheritdoc IDistributionService
|
213
|
+
function processReferral(
|
214
|
+
NftId distributionNftId,
|
215
|
+
ReferralId referralId
|
216
|
+
)
|
217
|
+
external
|
218
|
+
virtual
|
219
|
+
restricted()
|
220
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
221
|
+
{
|
222
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
223
|
+
IRegistry registry = getRegistry();
|
224
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
225
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
226
|
+
|
227
|
+
// update book keeping for referral info
|
228
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
229
|
+
referralInfo.usedReferrals += 1;
|
230
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
231
|
+
}
|
232
|
+
}
|
230
233
|
|
231
234
|
function processSale(
|
232
235
|
NftId distributionNftId, // assume always of distribution type
|
233
236
|
ReferralId referralId,
|
234
|
-
IPolicy.
|
237
|
+
IPolicy.PremiumInfo memory premium
|
235
238
|
)
|
236
239
|
external
|
237
240
|
virtual
|
241
|
+
restricted()
|
242
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
238
243
|
{
|
239
|
-
|
244
|
+
IRegistry registry = getRegistry();
|
245
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
246
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
240
247
|
InstanceReader reader = instance.getInstanceReader();
|
241
248
|
InstanceStore store = instance.getInstanceStore();
|
242
249
|
|
243
250
|
// get distribution owner fee amount
|
244
|
-
Amount distributionOwnerFee =
|
251
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
245
252
|
|
246
253
|
// update referral/distributor info if applicable
|
247
254
|
if (referralIsValid(distributionNftId, referralId)) {
|
248
255
|
|
249
256
|
// increase distribution balance by commission amount and distribution owner fee
|
250
|
-
Amount commissionAmount =
|
257
|
+
Amount commissionAmount = premium.commissionAmount;
|
251
258
|
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
252
259
|
|
253
260
|
// update book keeping for referral info
|
254
261
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
255
|
-
|
256
|
-
|
262
|
+
|
263
|
+
_componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
257
264
|
|
258
265
|
// update book keeping for distributor info
|
259
266
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
260
|
-
// TODO refactor sum of commission amount into a fee balance for distributors
|
261
|
-
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
262
267
|
distributorInfo.numPoliciesSold += 1;
|
263
268
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
264
269
|
} else {
|
265
|
-
|
266
270
|
// increase distribution balance by distribution owner fee
|
267
271
|
_componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
268
272
|
}
|
269
273
|
}
|
270
274
|
|
271
|
-
|
275
|
+
/// @inheritdoc IDistributionService
|
276
|
+
function withdrawCommission(NftId distributorNftId, Amount amount)
|
277
|
+
public
|
278
|
+
virtual
|
279
|
+
// TODO: restricted() (once #462 is done)
|
280
|
+
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
281
|
+
returns (Amount withdrawnAmount)
|
282
|
+
{
|
283
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
284
|
+
InstanceReader reader = instance.getInstanceReader();
|
285
|
+
|
286
|
+
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
287
|
+
address distributionWallet = distributionInfo.tokenHandler.getWallet();
|
288
|
+
|
289
|
+
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
290
|
+
|
291
|
+
// determine withdrawn amount
|
292
|
+
withdrawnAmount = amount;
|
293
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
294
|
+
withdrawnAmount = commissionAmount;
|
295
|
+
} else {
|
296
|
+
if (withdrawnAmount.gt(commissionAmount)) {
|
297
|
+
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
298
|
+
}
|
299
|
+
}
|
300
|
+
|
301
|
+
// decrease fee counters by withdrawnAmount and update distributor info
|
302
|
+
{
|
303
|
+
InstanceStore store = instance.getInstanceStore();
|
304
|
+
// decrease fee counter for distribution balance
|
305
|
+
_componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
306
|
+
// decrease fee counter for distributor fee
|
307
|
+
_componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
308
|
+
}
|
309
|
+
|
310
|
+
// transfer amount to distributor
|
311
|
+
{
|
312
|
+
address distributor = getRegistry().ownerOf(distributorNftId);
|
313
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
314
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
315
|
+
}
|
316
|
+
}
|
317
|
+
|
318
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId)
|
319
|
+
public
|
320
|
+
view
|
321
|
+
onlyNftOfType(distributionNftId, DISTRIBUTION())
|
322
|
+
returns (bool isValid)
|
323
|
+
{
|
272
324
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
273
325
|
return false;
|
274
326
|
}
|
275
327
|
|
276
|
-
|
328
|
+
IRegistry registry = getRegistry();
|
329
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
|
330
|
+
IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
|
277
331
|
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
278
332
|
|
279
333
|
if (info.distributorNftId.eqz()) {
|
@@ -290,8 +344,11 @@ contract DistributionService is
|
|
290
344
|
returns(IInstance instance)
|
291
345
|
{
|
292
346
|
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
293
|
-
address instanceAddress = getRegistry().
|
347
|
+
address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
|
294
348
|
return IInstance(instanceAddress);
|
295
349
|
}
|
296
350
|
|
351
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
352
|
+
return DISTRIBUTION();
|
353
|
+
}
|
297
354
|
}
|
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {DistributionService} from "./DistributionService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract DistributionServiceManager is ProxyManager {
|
12
9
|
|
@@ -14,29 +11,20 @@ contract DistributionServiceManager is ProxyManager {
|
|
14
11
|
|
15
12
|
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
13
|
constructor(
|
17
|
-
address
|
18
|
-
|
19
|
-
|
14
|
+
address authority,
|
15
|
+
address registry,
|
16
|
+
bytes32 salt
|
17
|
+
)
|
20
18
|
{
|
21
|
-
DistributionService
|
22
|
-
bytes memory data = abi.encode(
|
23
|
-
IVersionable versionable =
|
24
|
-
|
25
|
-
|
19
|
+
DistributionService svc = new DistributionService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
24
|
+
data,
|
25
|
+
salt);
|
26
26
|
|
27
27
|
_distributionService = DistributionService(address(versionable));
|
28
|
-
|
29
|
-
// TODO `thi` must have a role or own nft to register service
|
30
|
-
//Registry registry = Registry(registryAddress);
|
31
|
-
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
|
32
|
-
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
|
-
//registryService.registerService(_distributionService);
|
34
|
-
|
35
|
-
// TODO no nft to link yet
|
36
|
-
// link ownership of instance service manager ot nft owner of instance service
|
37
|
-
//_linkToNftOwnable(
|
38
|
-
// address(registryAddress),
|
39
|
-
// address(_distributionService));
|
40
28
|
}
|
41
29
|
|
42
30
|
//--- view functions ----------------------------------------------------//
|
@@ -1,66 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
5
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
|
-
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
7
6
|
import {NftId} from "../type/NftId.sol";
|
8
|
-
import {
|
7
|
+
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
9
8
|
import {UFixed} from "../type/UFixed.sol";
|
10
|
-
import {Timestamp} from "../type/Timestamp.sol";
|
11
9
|
|
12
10
|
interface IDistributionComponent is IInstanceLinkedComponent {
|
13
11
|
|
14
|
-
|
12
|
+
error ErrorDistributionNotDistributor(address distributor);
|
13
|
+
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
15
14
|
|
16
|
-
|
17
|
-
Fee memory distributionFee,
|
18
|
-
Fee memory minDistributionOwnerFee
|
19
|
-
) external;
|
15
|
+
event LogDistributorUpdated(address to, address operator);
|
20
16
|
|
21
|
-
|
22
|
-
|
23
|
-
UFixed minDiscountPercentage,
|
24
|
-
UFixed maxDiscountPercentage,
|
25
|
-
UFixed commissionPercentage,
|
26
|
-
uint32 maxReferralCount,
|
27
|
-
uint32 maxReferralLifetime,
|
28
|
-
bool allowSelfReferrals,
|
29
|
-
bool allowRenewals,
|
30
|
-
bytes memory data
|
31
|
-
) external returns (DistributorType distributorType);
|
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);
|
32
19
|
|
33
|
-
|
34
|
-
|
35
|
-
DistributorType distributorType,
|
36
|
-
bytes memory data
|
37
|
-
) external returns(NftId distributorNftId);
|
20
|
+
/// @dev Returns the distributor Nft Id for the provided address
|
21
|
+
function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
|
38
22
|
|
39
|
-
function
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
23
|
+
function getDiscountPercentage(
|
24
|
+
string memory referralCode
|
25
|
+
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
26
|
+
|
27
|
+
function getReferralId(
|
28
|
+
string memory referralCode
|
29
|
+
) external returns (ReferralId referralId);
|
44
30
|
|
45
31
|
function calculateRenewalFeeAmount(
|
46
32
|
ReferralId referralId,
|
47
33
|
uint256 netPremiumAmount
|
48
34
|
) external view returns (uint256 feeAmount);
|
49
35
|
|
50
|
-
/// @dev
|
36
|
+
/// @dev Callback function to process a renewal of a policy.
|
37
|
+
/// The default implementation is empty.
|
38
|
+
/// Overwrite this function to implement a use case specific behaviour.
|
51
39
|
function processRenewal(
|
52
40
|
ReferralId referralId,
|
53
41
|
uint256 feeAmount
|
54
42
|
) external;
|
55
43
|
|
56
|
-
|
57
|
-
string memory referralCode
|
58
|
-
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
59
|
-
|
60
|
-
function getReferralId(
|
61
|
-
string memory referralCode
|
62
|
-
) external returns (ReferralId referralId);
|
63
|
-
|
64
|
-
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
44
|
+
/// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
|
65
45
|
function isVerifying() external view returns (bool verifying);
|
46
|
+
|
47
|
+
/// @dev Withdraw commission for the distributor
|
48
|
+
/// @param distributorNftId the distributor Nft Id
|
49
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
50
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
51
|
+
function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
|
66
52
|
}
|
@@ -1,9 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
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";
|
@@ -13,6 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
13
12
|
|
14
13
|
|
15
14
|
interface IDistributionService is IService {
|
15
|
+
|
16
16
|
error ErrorDistributionServiceCallerNotRegistered(address caller);
|
17
17
|
error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
|
18
18
|
error ErrorIDistributionServiceCallerNotDistributor(address caller);
|
@@ -25,10 +25,17 @@ interface IDistributionService is IService {
|
|
25
25
|
error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
|
26
26
|
error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
|
27
27
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
28
|
-
|
28
|
+
|
29
|
+
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
+
|
31
|
+
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
32
|
+
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
33
|
+
|
29
34
|
error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
|
30
35
|
error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
|
31
36
|
|
37
|
+
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
38
|
+
|
32
39
|
function createDistributorType(
|
33
40
|
string memory name,
|
34
41
|
UFixed minDiscountPercentage,
|
@@ -49,12 +56,11 @@ interface IDistributionService is IService {
|
|
49
56
|
bytes memory data
|
50
57
|
) external returns (NftId distributorNftId);
|
51
58
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
// ) external;
|
59
|
+
function changeDistributorType(
|
60
|
+
NftId distributorNftId,
|
61
|
+
DistributorType distributorType,
|
62
|
+
bytes memory data
|
63
|
+
) external;
|
58
64
|
|
59
65
|
function createReferral(
|
60
66
|
NftId distributorNftId,
|
@@ -67,15 +73,28 @@ interface IDistributionService is IService {
|
|
67
73
|
external
|
68
74
|
returns (ReferralId referralId);
|
69
75
|
|
76
|
+
/// @dev callback from product service when a referral is used.
|
77
|
+
/// Calling this will increment the referral usage counter.
|
78
|
+
function processReferral(
|
79
|
+
NftId distributionNftId,
|
80
|
+
ReferralId referralId
|
81
|
+
) external;
|
82
|
+
|
70
83
|
/// @dev callback from product service when selling a policy for a specific referralId
|
71
84
|
function processSale(
|
72
85
|
NftId distributionNftId,
|
73
86
|
ReferralId referralId,
|
74
|
-
IPolicy.
|
87
|
+
IPolicy.PremiumInfo memory premium
|
75
88
|
) external;
|
76
89
|
|
77
90
|
function referralIsValid(
|
78
91
|
NftId distributorNftId,
|
79
92
|
ReferralId referralId
|
80
93
|
) external view returns (bool isValid);
|
94
|
+
|
95
|
+
/// @dev Withdraw commission for the distributor
|
96
|
+
/// @param distributorNftId the distributor Nft Id
|
97
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
98
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
99
|
+
function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
|
81
100
|
}
|