@etherisc/gif-next 0.0.2-e8ea17d-715 → 0.0.2-e8ea5fe-337
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -101
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +223 -105
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +50 -38
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -88
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +30 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -72
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -137
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +391 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +94 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -133
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -136
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +23 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +19 -38
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +8 -20
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -78
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +194 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +41 -37
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -209
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +38 -38
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -147
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +22 -78
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +15 -15
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +28 -28
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -32
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- 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 +2 -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 +2 -2
- 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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +77 -107
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +26 -22
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +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 +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/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 +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- 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/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- 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/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +22 -10
- package/contracts/distribution/DistributionService.sol +67 -33
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
- package/contracts/instance/InstanceReader.sol +32 -7
- package/contracts/instance/InstanceService.sol +57 -33
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -7
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +22 -22
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +16 -6
- package/contracts/oracle/OracleService.sol +1 -0
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +182 -40
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/IPoolService.sol +36 -26
- package/contracts/pool/Pool.sol +39 -24
- package/contracts/pool/PoolService.sol +161 -103
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +51 -57
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +118 -73
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +28 -5
- package/contracts/product/IPolicyService.sol +27 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +1 -1
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +278 -180
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingService.sol +42 -41
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +67 -34
- package/contracts/product/{ProductService.sol → RiskService.sol} +10 -37
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +1 -1
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +1 -3
- package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
- package/contracts/shared/Component.sol +25 -38
- package/contracts/shared/ComponentService.sol +82 -22
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +22 -1
- package/contracts/shared/NftOwnable.sol +3 -3
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -2
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +23 -36
- package/contracts/staking/StakingManager.sol +2 -5
- package/contracts/staking/StakingReader.sol +6 -9
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ObjectType.sol +15 -11
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +1 -0
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +1 -1
- 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/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -12,29 +12,14 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
12
12
|
|
13
13
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
14
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
16
15
|
import {KEEP_STATE} from "../type/StateId.sol";
|
17
16
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
18
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
19
|
-
import {RoleId} from "../type/RoleId.sol";
|
20
|
-
|
21
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
22
|
-
import {Versionable} from "../shared/Versionable.sol";
|
23
|
-
|
24
|
-
import {IService} from "../shared/IService.sol";
|
25
|
-
import {Service} from "../shared/Service.sol";
|
26
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
27
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
28
|
-
import {IComponent} from "../shared/IComponent.sol";
|
29
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
30
18
|
import {IDistributionService} from "./IDistributionService.sol";
|
31
|
-
import {
|
32
|
-
|
33
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
|
+
import {UFixed} from "../type/UFixed.sol";
|
34
20
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
35
|
-
import {ReferralId,
|
36
|
-
import {Timestamp, TimestampLib
|
37
|
-
import {Key32} from "../type/Key32.sol";
|
21
|
+
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
38
23
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
39
24
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
40
25
|
|
@@ -43,12 +28,6 @@ contract DistributionService is
|
|
43
28
|
ComponentVerifyingService,
|
44
29
|
IDistributionService
|
45
30
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using TimestampLib for Timestamp;
|
48
|
-
using UFixedLib for UFixed;
|
49
|
-
using FeeLib for Fee;
|
50
|
-
using ReferralLib for ReferralId;
|
51
|
-
|
52
31
|
IComponentService private _componentService;
|
53
32
|
IInstanceService private _instanceService;
|
54
33
|
IRegistryService private _registryService;
|
@@ -152,7 +131,6 @@ contract DistributionService is
|
|
152
131
|
distributorType,
|
153
132
|
true, // active
|
154
133
|
data,
|
155
|
-
AmountLib.zero(),
|
156
134
|
0);
|
157
135
|
|
158
136
|
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
@@ -228,11 +206,28 @@ contract DistributionService is
|
|
228
206
|
return referralId;
|
229
207
|
}
|
230
208
|
|
209
|
+
/// @inheritdoc IDistributionService
|
210
|
+
function processReferral(
|
211
|
+
NftId distributionNftId,
|
212
|
+
ReferralId referralId
|
213
|
+
)
|
214
|
+
external
|
215
|
+
virtual
|
216
|
+
restricted
|
217
|
+
{
|
218
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
219
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
220
|
+
// update book keeping for referral info
|
221
|
+
IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
|
222
|
+
referralInfo.usedReferrals += 1;
|
223
|
+
instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
|
224
|
+
}
|
225
|
+
}
|
231
226
|
|
232
227
|
function processSale(
|
233
228
|
NftId distributionNftId, // assume always of distribution type
|
234
229
|
ReferralId referralId,
|
235
|
-
IPolicy.
|
230
|
+
IPolicy.PremiumInfo memory premium
|
236
231
|
)
|
237
232
|
external
|
238
233
|
virtual
|
@@ -243,33 +238,72 @@ contract DistributionService is
|
|
243
238
|
InstanceStore store = instance.getInstanceStore();
|
244
239
|
|
245
240
|
// get distribution owner fee amount
|
246
|
-
Amount distributionOwnerFee =
|
241
|
+
Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
|
247
242
|
|
248
243
|
// update referral/distributor info if applicable
|
249
244
|
if (referralIsValid(distributionNftId, referralId)) {
|
250
245
|
|
251
246
|
// increase distribution balance by commission amount and distribution owner fee
|
252
|
-
Amount commissionAmount =
|
247
|
+
Amount commissionAmount = premium.commissionAmount;
|
253
248
|
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
254
249
|
|
255
250
|
// update book keeping for referral info
|
256
251
|
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
257
|
-
|
258
|
-
|
252
|
+
|
253
|
+
_componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
|
259
254
|
|
260
255
|
// update book keeping for distributor info
|
261
256
|
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
262
|
-
// TODO refactor sum of commission amount into a fee balance for distributors
|
263
|
-
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
264
257
|
distributorInfo.numPoliciesSold += 1;
|
265
258
|
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
266
259
|
} else {
|
267
|
-
|
268
260
|
// increase distribution balance by distribution owner fee
|
269
261
|
_componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
270
262
|
}
|
271
263
|
}
|
272
264
|
|
265
|
+
/// @inheritdoc IDistributionService
|
266
|
+
function withdrawCommission(NftId distributorNftId, Amount amount)
|
267
|
+
public
|
268
|
+
virtual
|
269
|
+
// TODO: restricted() (once #462 is done)
|
270
|
+
returns (Amount withdrawnAmount)
|
271
|
+
{
|
272
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
273
|
+
InstanceReader reader = instance.getInstanceReader();
|
274
|
+
|
275
|
+
IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
|
276
|
+
address distributionWallet = distributionInfo.wallet;
|
277
|
+
|
278
|
+
Amount commissionAmount = reader.getFeeAmount(distributorNftId);
|
279
|
+
|
280
|
+
// determine withdrawn amount
|
281
|
+
withdrawnAmount = amount;
|
282
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
283
|
+
withdrawnAmount = commissionAmount;
|
284
|
+
} else {
|
285
|
+
if (withdrawnAmount.gt(commissionAmount)) {
|
286
|
+
revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
|
290
|
+
// decrease fee counters by withdrawnAmount and update distributor info
|
291
|
+
{
|
292
|
+
InstanceStore store = instance.getInstanceStore();
|
293
|
+
// decrease fee counter for distribution balance
|
294
|
+
_componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
|
295
|
+
// decrease fee counter for distributor fee
|
296
|
+
_componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
|
297
|
+
}
|
298
|
+
|
299
|
+
// transfer amount to distributor
|
300
|
+
{
|
301
|
+
address distributor = getRegistry().ownerOf(distributorNftId);
|
302
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
303
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
304
|
+
}
|
305
|
+
}
|
306
|
+
|
273
307
|
function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
|
274
308
|
if (distributionNftId.eqz() || referralId.eqz()) {
|
275
309
|
return false;
|
@@ -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
|
|
@@ -1,13 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
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
|
|
@@ -45,4 +43,10 @@ interface IDistributionComponent is IInstanceLinkedComponent {
|
|
45
43
|
|
46
44
|
/// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
|
47
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);
|
48
52
|
}
|
@@ -3,7 +3,6 @@ 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";
|
@@ -27,12 +26,16 @@ interface IDistributionService is IService {
|
|
27
26
|
error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
|
28
27
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
29
28
|
|
29
|
+
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
+
|
30
31
|
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
31
32
|
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
32
33
|
|
33
34
|
error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
|
34
35
|
error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
|
35
36
|
|
37
|
+
event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
|
38
|
+
|
36
39
|
function createDistributorType(
|
37
40
|
string memory name,
|
38
41
|
UFixed minDiscountPercentage,
|
@@ -71,15 +74,28 @@ interface IDistributionService is IService {
|
|
71
74
|
external
|
72
75
|
returns (ReferralId referralId);
|
73
76
|
|
77
|
+
/// @dev callback from product service when a referral is used.
|
78
|
+
/// Calling this will increment the referral usage counter.
|
79
|
+
function processReferral(
|
80
|
+
NftId distributionNftId,
|
81
|
+
ReferralId referralId
|
82
|
+
) external;
|
83
|
+
|
74
84
|
/// @dev callback from product service when selling a policy for a specific referralId
|
75
85
|
function processSale(
|
76
86
|
NftId distributionNftId,
|
77
87
|
ReferralId referralId,
|
78
|
-
IPolicy.
|
88
|
+
IPolicy.PremiumInfo memory premium
|
79
89
|
) external;
|
80
90
|
|
81
91
|
function referralIsValid(
|
82
92
|
NftId distributorNftId,
|
83
93
|
ReferralId referralId
|
84
94
|
) external view returns (bool isValid);
|
95
|
+
|
96
|
+
/// @dev Withdraw commission for the distributor
|
97
|
+
/// @param distributorNftId the distributor Nft Id
|
98
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
99
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
100
|
+
function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
|
85
101
|
}
|
@@ -4,39 +4,16 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {ClaimId} from "../type/ClaimId.sol";
|
8
|
-
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
10
|
-
import {NftId} from "../type/NftId.sol";
|
11
|
-
import {StateId} from "../type/StateId.sol";
|
12
|
-
import {ReferralId} from "../type/Referral.sol";
|
13
|
-
import {RiskId} from "../type/RiskId.sol";
|
14
|
-
import {VersionPart} from "../type/Version.sol";
|
15
|
-
import {Key32} from "../type/Key32.sol";
|
16
|
-
import {RoleId} from "../type/RoleId.sol";
|
17
|
-
import {Seconds} from "../type/Seconds.sol";
|
18
|
-
import {UFixed} from "../type/UFixed.sol";
|
19
|
-
|
20
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
|
-
|
22
|
-
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
23
|
-
|
24
|
-
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
25
7
|
import {BundleSet} from "./BundleSet.sol";
|
8
|
+
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
26
9
|
import {InstanceReader} from "./InstanceReader.sol";
|
27
10
|
import {InstanceStore} from "./InstanceStore.sol";
|
28
|
-
|
29
|
-
import {
|
30
|
-
|
31
|
-
import {
|
32
|
-
|
33
|
-
import {
|
34
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
35
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
36
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
37
|
-
import {IProductService} from "../product/IProductService.sol";
|
38
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
39
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
11
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
13
|
+
import {RoleId} from "../type/RoleId.sol";
|
14
|
+
import {Seconds} from "../type/Seconds.sol";
|
15
|
+
import {UFixed} from "../type/UFixed.sol";
|
16
|
+
import {VersionPart} from "../type/Version.sol";
|
40
17
|
|
41
18
|
|
42
19
|
interface IInstance is
|
@@ -4,44 +4,19 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {
|
8
|
-
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {RiskId} from "../type/RiskId.sol";
|
10
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
|
11
|
-
import {RoleId} from "../type/RoleId.sol";
|
12
|
-
import {ClaimId} from "../type/ClaimId.sol";
|
13
|
-
import {ReferralId} from "../type/Referral.sol";
|
14
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
15
|
-
import {DistributorType} from "../type/DistributorType.sol";
|
16
|
-
import {Seconds} from "../type/Seconds.sol";
|
17
|
-
import {UFixed} from "../type/UFixed.sol";
|
18
|
-
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
|
-
|
20
|
-
import {Registerable} from "../shared/Registerable.sol";
|
21
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
|
-
|
23
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
24
|
-
|
7
|
+
import {BundleSet} from "./BundleSet.sol";
|
25
8
|
import {IInstance} from "./IInstance.sol";
|
26
9
|
import {IInstanceService} from "./IInstanceService.sol";
|
27
10
|
import {InstanceReader} from "./InstanceReader.sol";
|
28
11
|
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
29
|
-
import {BundleSet} from "./BundleSet.sol";
|
30
12
|
import {InstanceStore} from "./InstanceStore.sol";
|
31
|
-
|
32
|
-
import {
|
33
|
-
|
34
|
-
import {
|
35
|
-
import {
|
36
|
-
import {
|
37
|
-
import {
|
38
|
-
import {IRisk} from "./module/IRisk.sol";
|
39
|
-
|
40
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
41
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
42
|
-
import {IProductService} from "../product/IProductService.sol";
|
43
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
44
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
13
|
+
import {INSTANCE} from "../type/ObjectType.sol";
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
import {Registerable} from "../shared/Registerable.sol";
|
16
|
+
import {RoleId} from "../type/RoleId.sol";
|
17
|
+
import {Seconds} from "../type/Seconds.sol";
|
18
|
+
import {UFixed} from "../type/UFixed.sol";
|
19
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
45
20
|
|
46
21
|
contract Instance is
|
47
22
|
IInstance,
|
@@ -7,6 +7,7 @@ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
|
7
7
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
8
|
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
|
+
import {IComponent} from "../shared/IComponent.sol";
|
10
11
|
import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
13
|
import {IInstance} from "./IInstance.sol";
|
@@ -14,6 +15,7 @@ import {IService} from "../shared/IService.sol";
|
|
14
15
|
import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
|
15
16
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
16
17
|
import {Str, StrLib} from "../type/String.sol";
|
18
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
19
|
import {VersionPart} from "../type/Version.sol";
|
18
20
|
|
19
21
|
|
@@ -111,26 +113,43 @@ contract InstanceAdmin is
|
|
111
113
|
/// @dev Initializes the authorization for the specified component.
|
112
114
|
/// Important: The component MUST be registered.
|
113
115
|
function initializeComponentAuthorization(
|
114
|
-
|
116
|
+
IComponent component,
|
115
117
|
IAuthorization authorization
|
116
118
|
)
|
117
119
|
external
|
118
120
|
{
|
119
|
-
_checkTargetIsReadyForAuthorization(
|
121
|
+
_checkTargetIsReadyForAuthorization(address(component));
|
120
122
|
|
121
123
|
_createRoles(authorization);
|
122
124
|
|
123
125
|
// create component target
|
124
126
|
_createTarget(
|
125
|
-
|
127
|
+
address(component),
|
126
128
|
authorization.getTargetName(),
|
127
129
|
true, // checkAuthority
|
128
130
|
false); // custom
|
129
131
|
|
132
|
+
_createTarget(
|
133
|
+
address(component.getTokenHandler()),
|
134
|
+
string(abi.encodePacked(authorization.getTargetName(), "TH")),
|
135
|
+
true,
|
136
|
+
false);
|
137
|
+
|
138
|
+
// FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
|
139
|
+
FunctionInfo[] memory functions = new FunctionInfo[](3);
|
140
|
+
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
141
|
+
functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
|
142
|
+
functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
143
|
+
|
144
|
+
_authorizeTargetFunctions(
|
145
|
+
address(component.getTokenHandler()),
|
146
|
+
getPublicRole(),
|
147
|
+
functions);
|
148
|
+
|
130
149
|
_grantRoleToAccount(
|
131
150
|
authorization.getTargetRole(
|
132
151
|
authorization.getTarget()),
|
133
|
-
|
152
|
+
address(component));
|
134
153
|
|
135
154
|
_createTargetAuthorizations(authorization);
|
136
155
|
}
|
@@ -6,7 +6,7 @@ import {
|
|
6
6
|
} from "../../contracts/type/ObjectType.sol";
|
7
7
|
|
8
8
|
import {
|
9
|
-
|
9
|
+
DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
|
10
10
|
} from "../../contracts/type/RoleId.sol";
|
11
11
|
|
12
12
|
import {BundleSet} from "../instance/BundleSet.sol";
|
@@ -15,8 +15,6 @@ import {Instance} from "../instance/Instance.sol";
|
|
15
15
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
16
16
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
17
17
|
import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
|
18
|
-
import {RoleId} from "../type/RoleId.sol";
|
19
|
-
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
20
18
|
|
21
19
|
|
22
20
|
contract InstanceAuthorizationV3
|
@@ -141,7 +139,9 @@ contract InstanceAuthorizationV3
|
|
141
139
|
_authorize(functions, InstanceStore.createProduct.selector, "createProduct");
|
142
140
|
_authorize(functions, InstanceStore.updateProduct.selector, "updateProduct");
|
143
141
|
_authorize(functions, InstanceStore.increaseBalance.selector, "increaseBalance");
|
142
|
+
_authorize(functions, InstanceStore.decreaseBalance.selector, "decreaseBalance");
|
144
143
|
_authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
|
144
|
+
_authorize(functions, InstanceStore.decreaseFees.selector, "decreaseFees");
|
145
145
|
|
146
146
|
// authorize distribution service role
|
147
147
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
|
@@ -189,6 +189,8 @@ contract InstanceAuthorizationV3
|
|
189
189
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
|
190
190
|
_authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
|
191
191
|
_authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
|
192
|
+
_authorize(functions, InstanceStore.createPremium.selector, "createPremium");
|
193
|
+
_authorize(functions, InstanceStore.updatePremiumState.selector, "updatePremiumState");
|
192
194
|
|
193
195
|
// authorize claim service role
|
194
196
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
|
@@ -1,25 +1,20 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {Amount} from "../type/Amount.sol";
|
7
5
|
import {ClaimId} from "../type/ClaimId.sol";
|
8
6
|
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
7
|
import {Key32} from "../type/Key32.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {
|
9
|
+
import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
|
13
10
|
import {PayoutId} from "../type/PayoutId.sol";
|
14
11
|
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
|
15
12
|
import {RequestId} from "../type/RequestId.sol";
|
16
13
|
import {RiskId} from "../type/RiskId.sol";
|
17
14
|
import {RoleId} from "../type/RoleId.sol";
|
18
15
|
import {StateId} from "../type/StateId.sol";
|
19
|
-
import {UFixed,
|
20
|
-
import {Version} from "../type/Version.sol";
|
16
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
21
17
|
|
22
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
23
18
|
import {IBundle} from "../instance/module/IBundle.sol";
|
24
19
|
import {IComponents} from "../instance/module/IComponents.sol";
|
25
20
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
@@ -85,6 +80,33 @@ contract InstanceReader {
|
|
85
80
|
return _store.getState(toPolicyKey(policyNftId));
|
86
81
|
}
|
87
82
|
|
83
|
+
function getPremiumInfo(NftId policyNftId)
|
84
|
+
public
|
85
|
+
view
|
86
|
+
returns (IPolicy.PremiumInfo memory info)
|
87
|
+
{
|
88
|
+
bytes memory data = _store.getData(toPremiumKey(policyNftId));
|
89
|
+
if (data.length > 0) {
|
90
|
+
return abi.decode(data, (IPolicy.PremiumInfo));
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
function getPremiumInfoState(NftId policyNftId)
|
95
|
+
public
|
96
|
+
view
|
97
|
+
returns (StateId state)
|
98
|
+
{
|
99
|
+
return _store.getState(toPremiumKey(policyNftId));
|
100
|
+
}
|
101
|
+
|
102
|
+
function getBundleState(NftId bundleNftId)
|
103
|
+
public
|
104
|
+
view
|
105
|
+
returns (StateId state)
|
106
|
+
{
|
107
|
+
return _store.getState(toBundleKey(bundleNftId));
|
108
|
+
}
|
109
|
+
|
88
110
|
/// @dev returns true iff policy may be closed
|
89
111
|
/// a policy can be closed all conditions below are met
|
90
112
|
/// - policy exists
|
@@ -361,6 +383,9 @@ contract InstanceReader {
|
|
361
383
|
return policyNftId.toKey32(POLICY());
|
362
384
|
}
|
363
385
|
|
386
|
+
function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
|
387
|
+
return policyNftId.toKey32(PREMIUM());
|
388
|
+
}
|
364
389
|
|
365
390
|
function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
|
366
391
|
return distributorNftId.toKey32(DISTRIBUTOR());
|