@etherisc/gif-next 0.0.2-b312c9a-831 → 0.0.2-b37fa8b-169
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +134 -59
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +94 -50
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +85 -9
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
- 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 +525 -213
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +105 -153
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +58 -95
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +533 -218
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +45 -82
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +379 -79
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +157 -114
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +298 -236
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +178 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +380 -45
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -68
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +183 -141
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +574 -282
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +380 -45
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +494 -49
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +542 -109
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +965 -365
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +327 -64
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +907 -571
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -79
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -57
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +802 -1748
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2835 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +141 -85
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +77 -49
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
- 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 +49 -21
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -33
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +120 -68
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -55
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -82
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +304 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -76
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -89
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -44
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +572 -358
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +146 -74
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +293 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -46
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +193 -150
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +292 -195
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +127 -99
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +235 -4
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -68
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +176 -133
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +278 -187
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +129 -85
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +103 -75
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +187 -144
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +326 -91
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +103 -47
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +54 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/{authorization/AccessAdmin.sol/IAccessManagedChecker.json → registry/IRelease.sol/IRelease.json} +6 -6
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +92 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -466
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +71 -35
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +79 -43
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +60 -32
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +227 -250
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +113 -69
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +178 -34
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +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 +49 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +131 -153
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +49 -21
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +43 -6
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -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 +56 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +60 -32
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +43 -6
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1468 -128
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1623 -254
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +132 -65
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -174
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -55
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
- 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 +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +30 -6
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/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/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +18 -8
- package/contracts/accounting/AccountingServiceManager.sol +1 -1
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +422 -258
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +142 -262
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +87 -80
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +20 -60
- package/contracts/distribution/DistributionService.sol +172 -81
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
- package/contracts/examples/fire/FireProduct.sol +10 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleProduct.sol +112 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +4 -4
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +103 -18
- package/contracts/instance/IInstanceService.sol +55 -6
- package/contracts/instance/Instance.sol +176 -64
- package/contracts/instance/InstanceAdmin.sol +263 -169
- package/contracts/instance/InstanceAuthorizationV3.sol +119 -64
- package/contracts/instance/InstanceReader.sol +420 -369
- package/contracts/instance/InstanceService.sol +306 -183
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +10 -72
- package/contracts/instance/ProductStore.sol +235 -0
- package/contracts/instance/RiskSet.sol +21 -14
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +7 -8
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +19 -7
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +2 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +3 -5
- package/contracts/oracle/OracleService.sol +24 -23
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +3 -16
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +60 -99
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +27 -32
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +13 -25
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +192 -193
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +88 -20
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +3 -3
- package/contracts/product/BasicProductAuthorization.sol +31 -9
- package/contracts/product/ClaimService.sol +221 -209
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +113 -204
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +93 -27
- package/contracts/product/RiskService.sol +121 -38
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +23 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +22 -11
- package/contracts/registry/RegistryAdmin.sol +107 -373
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +157 -117
- package/contracts/registry/ServiceAuthorizationV3.sol +163 -28
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +23 -28
- package/contracts/shared/ComponentService.sol +317 -317
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +164 -76
- package/contracts/shared/IComponent.sol +1 -5
- package/contracts/shared/IComponentService.sol +21 -26
- package/contracts/shared/IKeyValueStore.sol +9 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -9
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +42 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +45 -92
- package/contracts/staking/IStaking.sol +266 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +494 -211
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -181
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +62 -41
- package/contracts/type/RiskId.sol +9 -3
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -7
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,106 +1,320 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
-
|
6
4
|
import {IAccess} from "../authorization/IAccess.sol";
|
7
|
-
import {ObjectType} from "../type/ObjectType.sol";
|
8
5
|
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
6
|
+
|
7
|
+
import {ADMIN_ROLE_NAME, PUBLIC_ROLE_NAME} from "./AccessAdmin.sol";
|
8
|
+
import {InitializableERC165} from "../shared/InitializableERC165.sol";
|
9
|
+
import {ObjectType, ObjectTypeLib, ALL} from "../type/ObjectType.sol";
|
10
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
9
11
|
import {SelectorLib} from "../type/Selector.sol";
|
10
|
-
import {StrLib} from "../type/String.sol";
|
12
|
+
import {Str, StrLib} from "../type/String.sol";
|
11
13
|
import {TimestampLib} from "../type/Timestamp.sol";
|
12
14
|
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
13
15
|
|
14
|
-
|
16
|
+
|
17
|
+
/// @dev Base contract for release specific service authorization contracts and for Authorization contracts.
|
15
18
|
contract ServiceAuthorization is
|
19
|
+
InitializableERC165,
|
16
20
|
IServiceAuthorization
|
17
21
|
{
|
22
|
+
|
23
|
+
string public constant COMMIT_HASH = "1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a";
|
24
|
+
|
18
25
|
uint256 public constant COMMIT_HASH_LENGTH = 40;
|
19
26
|
uint256 public constant GIF_INITIAL_VERSION = 3;
|
20
27
|
|
21
|
-
|
22
|
-
string public
|
28
|
+
string public constant SERVICE_NAME_SUFFIX = "Service";
|
29
|
+
string public constant ROLE_NAME_SUFFIX = "_Role";
|
23
30
|
|
31
|
+
ObjectType public immutable DOMAIN;
|
32
|
+
uint256 internal immutable _release;
|
33
|
+
string internal _commitHash;
|
34
|
+
|
35
|
+
string internal _mainTargetName;
|
36
|
+
Str internal _mainTarget;
|
37
|
+
|
38
|
+
// services
|
24
39
|
ObjectType[] internal _serviceDomains;
|
25
40
|
mapping(ObjectType domain => address service) internal _serviceAddress;
|
26
|
-
mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
|
27
|
-
mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
|
28
41
|
|
29
|
-
|
30
|
-
|
31
|
-
|
42
|
+
// roles
|
43
|
+
RoleId[] internal _roles;
|
44
|
+
mapping(RoleId role => RoleInfo info) internal _roleInfo;
|
45
|
+
|
46
|
+
// targets
|
47
|
+
Str[] internal _targets;
|
48
|
+
mapping(Str target => bool exists) internal _targetExists;
|
49
|
+
mapping(Str target => RoleId roleId) internal _targetRole;
|
50
|
+
mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
|
51
|
+
mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
|
52
|
+
|
53
|
+
|
54
|
+
constructor(
|
55
|
+
string memory mainTargetName,
|
56
|
+
ObjectType domain,
|
57
|
+
uint8 release,
|
58
|
+
string memory commitHash
|
59
|
+
)
|
60
|
+
{
|
61
|
+
// checks
|
62
|
+
if (bytes(mainTargetName).length == 0) {
|
63
|
+
revert ErrorAuthorizationMainTargetNameEmpty();
|
64
|
+
}
|
65
|
+
|
66
|
+
if (domain == ObjectTypeLib.zero()) {
|
67
|
+
revert ErrorAuthorizationTargetDomainZero();
|
68
|
+
}
|
69
|
+
|
70
|
+
if (release < VersionPartLib.releaseMin().toInt() || release >= VersionPartLib.releaseMax().toInt()) {
|
71
|
+
revert ErrorAuthorizationReleaseInvalid(release);
|
72
|
+
}
|
73
|
+
|
74
|
+
if (bytes(commitHash).length != COMMIT_HASH_LENGTH) {
|
75
|
+
revert ErrorAuthorizationCommitHashInvalid(commitHash);
|
76
|
+
}
|
77
|
+
|
78
|
+
// effects
|
79
|
+
_initializeERC165();
|
80
|
+
_registerInterfaceNotInitializing(type(IServiceAuthorization).interfaceId);
|
81
|
+
|
82
|
+
_mainTargetName = mainTargetName;
|
83
|
+
_mainTarget = StrLib.toStr(mainTargetName);
|
84
|
+
|
85
|
+
DOMAIN = domain;
|
86
|
+
_release = release;
|
87
|
+
_commitHash = commitHash;
|
32
88
|
|
33
|
-
|
34
|
-
|
89
|
+
// setup of roles defined in OpenZeppelin AccessManager
|
90
|
+
_addRole(ADMIN_ROLE(), _toRoleInfo(ADMIN_ROLE(), RoleType.Core, 1, ADMIN_ROLE_NAME()));
|
91
|
+
_addRole(PUBLIC_ROLE(), _toRoleInfo(ADMIN_ROLE(), RoleType.Core, 1, PUBLIC_ROLE_NAME()));
|
92
|
+
|
93
|
+
// defines service domains relevant for the authorization
|
35
94
|
_setupDomains();
|
36
95
|
_setupDomainAuthorizations();
|
37
96
|
}
|
38
97
|
|
98
|
+
/// @inheritdoc IServiceAuthorization
|
99
|
+
function getDomain() public view returns(ObjectType targetDomain) {
|
100
|
+
return DOMAIN;
|
101
|
+
}
|
102
|
+
|
103
|
+
/// @inheritdoc IServiceAuthorization
|
104
|
+
function getRelease() public view returns(VersionPart release) {
|
105
|
+
return VersionPartLib.toVersionPart(_release);
|
106
|
+
}
|
107
|
+
|
108
|
+
/// @inheritdoc IServiceAuthorization
|
39
109
|
function getCommitHash() external view returns(string memory commitHash) {
|
40
|
-
return
|
110
|
+
return _commitHash;
|
41
111
|
}
|
42
112
|
|
43
|
-
|
44
|
-
|
113
|
+
/// @inheritdoc IServiceAuthorization
|
114
|
+
function getMainTargetName() public view returns (string memory name) {
|
115
|
+
return _mainTargetName;
|
45
116
|
}
|
46
117
|
|
118
|
+
/// @inheritdoc IServiceAuthorization
|
119
|
+
function getMainTarget() external view returns(Str target) {
|
120
|
+
return _mainTarget;
|
121
|
+
}
|
122
|
+
|
123
|
+
/// @inheritdoc IServiceAuthorization
|
47
124
|
function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
|
48
125
|
return _serviceDomains;
|
49
126
|
}
|
50
127
|
|
51
|
-
|
128
|
+
/// @inheritdoc IServiceAuthorization
|
129
|
+
function getServiceDomain(uint256 idx) external view returns(ObjectType serviceDomain) {
|
52
130
|
return _serviceDomains[idx];
|
53
131
|
}
|
54
132
|
|
133
|
+
/// @inheritdoc IServiceAuthorization
|
134
|
+
function getServiceTarget(ObjectType serviceDomain) public view returns(Str target) {
|
135
|
+
string memory serviceTargetName = ObjectTypeLib.toVersionedName(
|
136
|
+
ObjectTypeLib.toName(serviceDomain),
|
137
|
+
"Service",
|
138
|
+
getRelease());
|
139
|
+
|
140
|
+
return StrLib.toStr(serviceTargetName);
|
141
|
+
}
|
142
|
+
|
143
|
+
/// @inheritdoc IServiceAuthorization
|
144
|
+
function getServiceRole(ObjectType serviceDomain) public view returns(RoleId serviceRoleId) {
|
145
|
+
// special case domain ALL
|
146
|
+
if (serviceDomain == ALL()) {
|
147
|
+
return PUBLIC_ROLE();
|
148
|
+
}
|
149
|
+
|
150
|
+
Str target = getServiceTarget(serviceDomain);
|
151
|
+
return getTargetRole(target);
|
152
|
+
}
|
153
|
+
|
154
|
+
/// @inheritdoc IServiceAuthorization
|
55
155
|
function getServiceAddress(ObjectType serviceDomain) external view returns(address service) {
|
56
156
|
return _serviceAddress[serviceDomain];
|
57
157
|
}
|
58
158
|
|
59
|
-
|
60
|
-
|
159
|
+
/// @inheritdoc IServiceAuthorization
|
160
|
+
function getTargetRole(Str target) public view returns(RoleId roleId) {
|
161
|
+
return _targetRole[target];
|
61
162
|
}
|
62
163
|
|
63
|
-
|
64
|
-
|
164
|
+
/// @inheritdoc IServiceAuthorization
|
165
|
+
function roleExists(RoleId roleId) public view returns(bool exists) {
|
166
|
+
return _roleInfo[roleId].roleType != RoleType.Undefined;
|
65
167
|
}
|
66
168
|
|
67
|
-
|
68
|
-
function
|
69
|
-
return
|
70
|
-
interfaceId == type(IServiceAuthorization).interfaceId ||
|
71
|
-
interfaceId == type(IERC165).interfaceId
|
72
|
-
);
|
169
|
+
/// @inheritdoc IServiceAuthorization
|
170
|
+
function getRoles() external view returns(RoleId[] memory roles) {
|
171
|
+
return _roles;
|
73
172
|
}
|
74
173
|
|
174
|
+
/// @inheritdoc IServiceAuthorization
|
175
|
+
function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory info) {
|
176
|
+
return _roleInfo[roleId];
|
177
|
+
}
|
75
178
|
|
76
|
-
/// @
|
179
|
+
/// @inheritdoc IServiceAuthorization
|
180
|
+
function getRoleName(RoleId roleId) external view returns (string memory roleName) {
|
181
|
+
return _roleInfo[roleId].name.toString();
|
182
|
+
}
|
183
|
+
|
184
|
+
/// @inheritdoc IServiceAuthorization
|
185
|
+
function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds) {
|
186
|
+
return _authorizedRoles[target];
|
187
|
+
}
|
188
|
+
|
189
|
+
/// @inheritdoc IServiceAuthorization
|
190
|
+
function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(FunctionInfo[] memory authorizatedFunctions) {
|
191
|
+
return _authorizedFunctions[target][roleId];
|
192
|
+
}
|
193
|
+
|
194
|
+
/// @dev Defines service domains relevant for the authorization.
|
195
|
+
/// When used for ReleaseAdmin the list defines the services to be registered for the release.
|
196
|
+
/// IMPORTANT: Both the list of the service domains as well as the ordering of the domains is important.
|
197
|
+
/// Trying to register services not in this list or register services in a different order will result in an error.
|
198
|
+
// solhint-disable-next-line no-empty-blocks
|
77
199
|
function _setupDomains() internal virtual {}
|
78
200
|
|
79
201
|
/// @dev Overwrite this function for a specific realease.
|
202
|
+
// solhint-disable-next-line no-empty-blocks
|
80
203
|
function _setupDomainAuthorizations() internal virtual {}
|
81
204
|
|
82
205
|
/// @dev Use this method to to add an authorized domain.
|
83
206
|
/// The services will need to be registered in the order they are added using this function.
|
84
|
-
function
|
207
|
+
function _authorizeServiceDomain(ObjectType serviceDomain, address serviceAddress) internal {
|
85
208
|
_serviceDomains.push(serviceDomain);
|
86
209
|
_serviceAddress[serviceDomain] = serviceAddress;
|
210
|
+
|
211
|
+
string memory serviceName = ObjectTypeLib.toVersionedName(
|
212
|
+
ObjectTypeLib.toName(serviceDomain),
|
213
|
+
SERVICE_NAME_SUFFIX,
|
214
|
+
getRelease());
|
215
|
+
|
216
|
+
_addTargetWithRole(
|
217
|
+
serviceName,
|
218
|
+
RoleIdLib.toServiceRoleId(serviceDomain, getRelease()),
|
219
|
+
string(abi.encodePacked(serviceName, ROLE_NAME_SUFFIX)));
|
220
|
+
}
|
221
|
+
|
222
|
+
|
223
|
+
/// @dev Use this method to to add an authorized target together with its target role.
|
224
|
+
function _addTargetWithRole(
|
225
|
+
string memory targetName,
|
226
|
+
RoleId roleId,
|
227
|
+
string memory roleName
|
228
|
+
)
|
229
|
+
internal
|
230
|
+
{
|
231
|
+
// add target
|
232
|
+
Str target = StrLib.toStr(targetName);
|
233
|
+
_targets.push(target);
|
234
|
+
|
235
|
+
_targetExists[target] = true;
|
236
|
+
|
237
|
+
// link role to target if defined
|
238
|
+
if (roleId != RoleIdLib.zero()) {
|
239
|
+
// add role if new
|
240
|
+
if (!roleExists(roleId)) {
|
241
|
+
_addContractRole(roleId, roleName);
|
242
|
+
}
|
243
|
+
|
244
|
+
// link target to role
|
245
|
+
_targetRole[target] = roleId;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
|
249
|
+
|
250
|
+
/// @dev Add a contract role for the provided role id and name.
|
251
|
+
function _addContractRole(RoleId roleId, string memory name) internal {
|
252
|
+
_addRole(
|
253
|
+
roleId,
|
254
|
+
_toRoleInfo(
|
255
|
+
ADMIN_ROLE(),
|
256
|
+
RoleType.Contract,
|
257
|
+
1,
|
258
|
+
name));
|
87
259
|
}
|
88
260
|
|
261
|
+
|
262
|
+
/// @dev Use this method to to add an authorized role.
|
263
|
+
function _addRole(RoleId roleId, RoleInfo memory info) internal {
|
264
|
+
_roles.push(roleId);
|
265
|
+
_roleInfo[roleId] = info;
|
266
|
+
}
|
267
|
+
|
268
|
+
|
269
|
+
/// @dev creates a role info object from the provided parameters
|
270
|
+
function _toRoleInfo(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) internal view returns (RoleInfo memory info) {
|
271
|
+
return RoleInfo({
|
272
|
+
name: StrLib.toStr(name),
|
273
|
+
adminRoleId: adminRoleId,
|
274
|
+
roleType: roleType,
|
275
|
+
maxMemberCount: maxMemberCount,
|
276
|
+
createdAt: TimestampLib.current(),
|
277
|
+
pausedAt: TimestampLib.max()});
|
278
|
+
}
|
279
|
+
|
280
|
+
|
89
281
|
/// @dev Use this method to authorize the specified domain to access the service domain.
|
90
|
-
function _authorizeForService(
|
282
|
+
function _authorizeForService(
|
283
|
+
ObjectType serviceDomain,
|
284
|
+
ObjectType authorizedDomain
|
285
|
+
)
|
91
286
|
internal
|
92
287
|
returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
|
93
288
|
{
|
94
|
-
|
95
|
-
|
289
|
+
Str serviceTarget = getServiceTarget(serviceDomain);
|
290
|
+
RoleId authorizedRoleId = getServiceRole(authorizedDomain);
|
291
|
+
|
292
|
+
return _authorizeForTarget(serviceTarget.toString(), authorizedRoleId);
|
96
293
|
}
|
97
294
|
|
295
|
+
|
296
|
+
/// @dev Use this method to authorize the specified role to access the target.
|
297
|
+
function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
|
298
|
+
internal
|
299
|
+
returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
|
300
|
+
{
|
301
|
+
Str targetStr = StrLib.toStr(target);
|
302
|
+
|
303
|
+
// add authorized role if not already added
|
304
|
+
if (_authorizedFunctions[targetStr][authorizedRoleId].length == 0) {
|
305
|
+
_authorizedRoles[targetStr].push(authorizedRoleId);
|
306
|
+
}
|
307
|
+
|
308
|
+
return _authorizedFunctions[targetStr][authorizedRoleId];
|
309
|
+
}
|
310
|
+
|
311
|
+
|
98
312
|
/// @dev Use this method to authorize a specific function authorization
|
99
313
|
function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
|
100
314
|
functions.push(
|
101
315
|
IAccess.FunctionInfo({
|
102
316
|
selector: SelectorLib.toSelector(selector),
|
103
317
|
name: StrLib.toStr(name),
|
104
|
-
createdAt: TimestampLib.
|
318
|
+
createdAt: TimestampLib.current()}));
|
105
319
|
}
|
106
320
|
}
|
@@ -1,15 +1,17 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
5
|
+
|
4
6
|
import {Distribution} from "./Distribution.sol";
|
7
|
+
import {DistributorType} from "../type/DistributorType.sol";
|
5
8
|
import {DISTRIBUTOR} from "../type/ObjectType.sol";
|
6
|
-
import {
|
9
|
+
import {Fee} from "../type/Fee.sol";
|
7
10
|
import {NftId} from "../type/NftId.sol";
|
8
11
|
import {ReferralId} from "../type/Referral.sol";
|
9
|
-
import {
|
10
|
-
import {UFixed} from "../type/UFixed.sol";
|
11
|
-
import {DistributorType} from "../type/DistributorType.sol";
|
12
|
+
import {Seconds} from "../type/Seconds.sol";
|
12
13
|
import {Timestamp} from "../type/Timestamp.sol";
|
14
|
+
import {UFixed} from "../type/UFixed.sol";
|
13
15
|
|
14
16
|
|
15
17
|
contract BasicDistribution is
|
@@ -37,7 +39,7 @@ contract BasicDistribution is
|
|
37
39
|
UFixed maxDiscountPercentage,
|
38
40
|
UFixed commissionPercentage,
|
39
41
|
uint32 maxReferralCount,
|
40
|
-
|
42
|
+
Seconds maxReferralLifetime,
|
41
43
|
bool allowSelfReferrals,
|
42
44
|
bool allowRenewals,
|
43
45
|
bytes memory data
|
@@ -93,6 +95,7 @@ contract BasicDistribution is
|
|
93
95
|
* referral codes need to be unique
|
94
96
|
*/
|
95
97
|
function createReferral(
|
98
|
+
NftId distributorNftId,
|
96
99
|
string memory code,
|
97
100
|
UFixed discountPercentage,
|
98
101
|
uint32 maxReferrals,
|
@@ -102,10 +105,10 @@ contract BasicDistribution is
|
|
102
105
|
external
|
103
106
|
virtual
|
104
107
|
restricted()
|
105
|
-
|
108
|
+
onlyNftOwner(distributorNftId)
|
106
109
|
returns (ReferralId referralId)
|
107
110
|
{
|
108
|
-
|
111
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
109
112
|
return _createReferral(
|
110
113
|
distributorNftId,
|
111
114
|
code,
|
@@ -120,20 +123,19 @@ contract BasicDistribution is
|
|
120
123
|
NftId instanceNftId,
|
121
124
|
IAuthorization authorization,
|
122
125
|
address initialOwner,
|
123
|
-
string memory name
|
124
|
-
address token
|
126
|
+
string memory name
|
125
127
|
)
|
126
128
|
internal
|
127
129
|
virtual
|
128
130
|
onlyInitializing()
|
129
131
|
{
|
130
|
-
|
132
|
+
__Distribution_init(
|
131
133
|
registry,
|
132
134
|
instanceNftId,
|
133
135
|
authorization,
|
136
|
+
false,
|
134
137
|
initialOwner,
|
135
138
|
name,
|
136
|
-
token,
|
137
139
|
""); // component specifc data
|
138
140
|
}
|
139
141
|
}
|
@@ -1,30 +1,50 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccess} from "../authorization/IAccess.sol";
|
5
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
|
+
|
4
7
|
import {Authorization} from "../authorization/Authorization.sol";
|
5
8
|
import {BasicDistribution} from "./BasicDistribution.sol";
|
6
9
|
import {Distribution} from "./Distribution.sol";
|
7
|
-
import {DISTRIBUTION} from "../type/ObjectType.sol";
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
|
10
|
+
import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
|
11
|
+
import {PUBLIC_ROLE} from "../type/RoleId.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
11
13
|
|
12
14
|
|
13
15
|
contract BasicDistributionAuthorization
|
14
16
|
is Authorization
|
15
17
|
{
|
16
18
|
|
17
|
-
constructor(string memory
|
18
|
-
Authorization(
|
19
|
+
constructor(string memory distributionName)
|
20
|
+
Authorization(
|
21
|
+
distributionName,
|
22
|
+
DISTRIBUTION(),
|
23
|
+
3,
|
24
|
+
COMMIT_HASH,
|
25
|
+
true,
|
26
|
+
true)
|
19
27
|
{}
|
20
28
|
|
21
|
-
function
|
29
|
+
function _setupServiceTargets()
|
22
30
|
internal
|
23
31
|
virtual override
|
24
32
|
{
|
25
|
-
|
33
|
+
_authorizeServiceDomain(COMPONENT(), address(11));
|
34
|
+
_authorizeServiceDomain(DISTRIBUTION(), address(11));
|
26
35
|
}
|
27
36
|
|
37
|
+
function _setupTokenHandlerAuthorizations() internal virtual override {
|
38
|
+
IAccess.FunctionInfo[] storage functions;
|
39
|
+
functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
|
40
|
+
_authorize(functions, TokenHandler.approve.selector, "approve");
|
41
|
+
_authorize(functions, TokenHandler.setWallet.selector, "setWallet");
|
42
|
+
_authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
|
43
|
+
|
44
|
+
// authorize token handler functions for pool service role
|
45
|
+
functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(DISTRIBUTION()));
|
46
|
+
_authorize(functions, TokenHandler.pushToken.selector, "pushToken");
|
47
|
+
}
|
28
48
|
|
29
49
|
function _setupTargetAuthorizations()
|
30
50
|
internal
|
@@ -33,7 +53,7 @@ contract BasicDistributionAuthorization
|
|
33
53
|
IAccess.FunctionInfo[] storage functions;
|
34
54
|
|
35
55
|
// authorize public role (open access to any account, only allows to lock target)
|
36
|
-
functions = _authorizeForTarget(
|
56
|
+
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
37
57
|
_authorize(functions, BasicDistribution.setFees.selector, "setFees");
|
38
58
|
_authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
|
39
59
|
_authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
|
@@ -1,19 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount} from "../type/Amount.sol";
|
5
|
-
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
|
6
4
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
7
|
-
import {IDistributionService} from "./IDistributionService.sol";
|
8
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
9
|
-
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
10
|
-
import {Fee} from "../type/Fee.sol";
|
11
|
-
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
12
5
|
import {IComponentService} from "../shared/IComponentService.sol";
|
13
6
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
14
|
-
import {
|
7
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
8
|
+
|
9
|
+
import {Amount} from "../type/Amount.sol";
|
10
|
+
import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
|
15
11
|
import {DistributorType} from "../type/DistributorType.sol";
|
12
|
+
import {Fee} from "../type/Fee.sol";
|
13
|
+
import {NftId} from "../type/NftId.sol";
|
14
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
15
|
+
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
16
|
+
import {Seconds} from "../type/Seconds.sol";
|
16
17
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
+
import {UFixed} from "../type/UFixed.sol";
|
17
19
|
|
18
20
|
|
19
21
|
abstract contract Distribution is
|
@@ -26,17 +28,8 @@ abstract contract Distribution is
|
|
26
28
|
struct DistributionStorage {
|
27
29
|
IComponentService _componentService;
|
28
30
|
IDistributionService _distributionService;
|
29
|
-
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
30
|
-
}
|
31
|
-
|
32
|
-
modifier onlyDistributor() {
|
33
|
-
if (!isDistributor(msg.sender)) {
|
34
|
-
revert ErrorDistributionNotDistributor(msg.sender);
|
35
|
-
}
|
36
|
-
_;
|
37
31
|
}
|
38
32
|
|
39
|
-
|
40
33
|
function processRenewal(
|
41
34
|
ReferralId referralId,
|
42
35
|
uint256 feeAmount
|
@@ -44,6 +37,7 @@ abstract contract Distribution is
|
|
44
37
|
external
|
45
38
|
virtual
|
46
39
|
restricted()
|
40
|
+
// solhint-disable-next-line no-empty-blocks
|
47
41
|
{
|
48
42
|
// default is no action
|
49
43
|
}
|
@@ -54,7 +48,6 @@ abstract contract Distribution is
|
|
54
48
|
external
|
55
49
|
virtual
|
56
50
|
restricted()
|
57
|
-
onlyDistributor()
|
58
51
|
onlyNftOfType(distributorNftId, DISTRIBUTOR())
|
59
52
|
onlyNftOwner(distributorNftId)
|
60
53
|
returns (Amount withdrawnAmount)
|
@@ -62,29 +55,9 @@ abstract contract Distribution is
|
|
62
55
|
return _withdrawCommission(distributorNftId, amount);
|
63
56
|
}
|
64
57
|
|
65
|
-
|
66
|
-
function isDistributor(address candidate)
|
67
|
-
public
|
68
|
-
view
|
69
|
-
returns (bool)
|
70
|
-
{
|
71
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
72
|
-
return $._distributorNftId[candidate].gtz();
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
function getDistributorNftId(address distributor)
|
77
|
-
public
|
78
|
-
view
|
79
|
-
returns (NftId distributorNftId)
|
80
|
-
{
|
81
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
82
|
-
return $._distributorNftId[distributor];
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
58
|
function getDiscountPercentage(string memory referralCode)
|
87
59
|
external
|
60
|
+
virtual
|
88
61
|
view
|
89
62
|
returns (
|
90
63
|
UFixed discountPercentage,
|
@@ -100,6 +73,7 @@ abstract contract Distribution is
|
|
100
73
|
string memory referralCode
|
101
74
|
)
|
102
75
|
public
|
76
|
+
virtual
|
103
77
|
view
|
104
78
|
returns (ReferralId referralId)
|
105
79
|
{
|
@@ -110,7 +84,7 @@ abstract contract Distribution is
|
|
110
84
|
|
111
85
|
|
112
86
|
function calculateRenewalFeeAmount(
|
113
|
-
ReferralId referralId
|
87
|
+
ReferralId, // referralId
|
114
88
|
uint256 netPremiumAmount
|
115
89
|
)
|
116
90
|
external
|
@@ -124,32 +98,31 @@ abstract contract Distribution is
|
|
124
98
|
|
125
99
|
|
126
100
|
/// @dev Returns true iff the component needs to be called when selling/renewing policis
|
127
|
-
function isVerifying() external pure returns (bool verifying) {
|
101
|
+
function isVerifying() external virtual pure returns (bool verifying) {
|
128
102
|
return true;
|
129
103
|
}
|
130
104
|
|
131
105
|
|
132
|
-
function
|
106
|
+
function __Distribution_init(
|
133
107
|
address registry,
|
134
108
|
NftId productNftId,
|
135
109
|
IAuthorization authorization,
|
110
|
+
bool isInterceptor,
|
136
111
|
address initialOwner,
|
137
112
|
string memory name,
|
138
|
-
address token,
|
139
113
|
bytes memory componentData // component specifidc data
|
140
114
|
)
|
141
115
|
internal
|
142
116
|
virtual
|
143
117
|
onlyInitializing()
|
144
118
|
{
|
145
|
-
|
119
|
+
__InstanceLinkedComponent_init(
|
146
120
|
registry,
|
147
121
|
productNftId,
|
148
122
|
name,
|
149
|
-
token,
|
150
123
|
DISTRIBUTION(),
|
151
124
|
authorization,
|
152
|
-
|
125
|
+
isInterceptor,
|
153
126
|
initialOwner,
|
154
127
|
componentData);
|
155
128
|
|
@@ -180,7 +153,7 @@ abstract contract Distribution is
|
|
180
153
|
UFixed maxDiscountPercentage,
|
181
154
|
UFixed commissionPercentage,
|
182
155
|
uint32 maxReferralCount,
|
183
|
-
|
156
|
+
Seconds maxReferralLifetime,
|
184
157
|
bool allowSelfReferrals,
|
185
158
|
bool allowRenewals,
|
186
159
|
bytes memory data
|
@@ -213,16 +186,11 @@ abstract contract Distribution is
|
|
213
186
|
returns(NftId distributorNftId)
|
214
187
|
{
|
215
188
|
DistributionStorage storage $ = _getDistributionStorage();
|
216
|
-
if($._distributorNftId[distributor].gtz()) {
|
217
|
-
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
218
|
-
}
|
219
189
|
|
220
190
|
distributorNftId = $._distributionService.createDistributor(
|
221
191
|
distributor,
|
222
192
|
distributorType,
|
223
193
|
data);
|
224
|
-
|
225
|
-
$._distributorNftId[distributor] = distributorNftId;
|
226
194
|
}
|
227
195
|
|
228
196
|
/// @dev Uptates the distributor type for the specified distributor.
|
@@ -271,14 +239,6 @@ abstract contract Distribution is
|
|
271
239
|
return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
|
272
240
|
}
|
273
241
|
|
274
|
-
function _nftTransferFrom(address from, address to, uint256 tokenId, address operator) internal virtual override {
|
275
|
-
// keep track of distributor nft owner
|
276
|
-
emit LogDistributorUpdated(to, operator);
|
277
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
278
|
-
$._distributorNftId[from] = NftIdLib.zero();
|
279
|
-
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
280
|
-
}
|
281
|
-
|
282
242
|
function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
|
283
243
|
assembly {
|
284
244
|
$.slot := DISTRIBUTION_STORAGE_LOCATION_V1
|