@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- 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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- 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 +108 -188
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
- 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 +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- 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 +139 -131
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +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 +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +44 -58
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
- 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 +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
- 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 +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- 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/IRegisterable.sol/IRegisterable.json +120 -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 +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
- 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 +118 -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 +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- 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 +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -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 +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +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 +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -38
- package/contracts/distribution/DistributionService.sol +54 -51
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -10
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +242 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +73 -82
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +4 -4
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +5 -8
- package/contracts/product/PolicyService.sol +244 -253
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +66 -52
- package/contracts/product/RiskService.sol +79 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +5 -8
- package/contracts/staking/IStakingService.sol +8 -0
- package/contracts/staking/StakeManagerLib.sol +1 -1
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +35 -12
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- 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/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- 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/ComponentServiceHelperLib.sol +0 -118
| @@ -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,15 +39,15 @@ 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
         | 
| 44 46 | 
             
                )
         | 
| 45 47 | 
             
                    external
         | 
| 46 48 | 
             
                    virtual
         | 
| 47 | 
            -
                    onlyOwner()
         | 
| 48 49 | 
             
                    restricted()
         | 
| 50 | 
            +
                    onlyOwner()
         | 
| 49 51 | 
             
                    returns (DistributorType distributorType)
         | 
| 50 52 | 
             
                {
         | 
| 51 53 | 
             
                    return _createDistributorType(
         | 
| @@ -67,25 +69,25 @@ contract BasicDistribution is | |
| 67 69 | 
             
                )
         | 
| 68 70 | 
             
                    external
         | 
| 69 71 | 
             
                    virtual
         | 
| 70 | 
            -
                    onlyOwner()
         | 
| 71 72 | 
             
                    restricted()
         | 
| 73 | 
            +
                    onlyOwner()
         | 
| 72 74 | 
             
                    returns(NftId distributorNftId)
         | 
| 73 75 | 
             
                {
         | 
| 74 76 | 
             
                    return _createDistributor(distributor, distributorType, data);
         | 
| 75 77 | 
             
                }
         | 
| 76 78 |  | 
| 77 | 
            -
                function  | 
| 79 | 
            +
                function changeDistributorType(
         | 
| 78 80 | 
             
                    NftId distributorNftId,
         | 
| 79 81 | 
             
                    DistributorType distributorType,
         | 
| 80 82 | 
             
                    bytes memory data
         | 
| 81 83 | 
             
                )
         | 
| 82 84 | 
             
                    external
         | 
| 83 85 | 
             
                    virtual
         | 
| 86 | 
            +
                    restricted()
         | 
| 84 87 | 
             
                    onlyOwner()
         | 
| 85 88 | 
             
                    onlyNftOfType(distributorNftId, DISTRIBUTOR())
         | 
| 86 | 
            -
                    restricted()
         | 
| 87 89 | 
             
                {
         | 
| 88 | 
            -
                     | 
| 90 | 
            +
                    _changeDistributorType(distributorNftId, distributorType, data);
         | 
| 89 91 | 
             
                }
         | 
| 90 92 |  | 
| 91 93 | 
             
                /**
         | 
| @@ -101,8 +103,8 @@ contract BasicDistribution is | |
| 101 103 | 
             
                )
         | 
| 102 104 | 
             
                    external
         | 
| 103 105 | 
             
                    virtual
         | 
| 104 | 
            -
                    onlyDistributor()
         | 
| 105 106 | 
             
                    restricted()
         | 
| 107 | 
            +
                    onlyDistributor()
         | 
| 106 108 | 
             
                    returns (ReferralId referralId)
         | 
| 107 109 | 
             
                {
         | 
| 108 110 | 
             
                    NftId distributorNftId = getDistributorNftId(msg.sender);
         | 
| @@ -1,13 +1,15 @@ | |
| 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 {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 12 | 
            +
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 11 13 |  | 
| 12 14 |  | 
| 13 15 | 
             
            contract BasicDistributionAuthorization
         | 
| @@ -15,16 +17,27 @@ contract BasicDistributionAuthorization | |
| 15 17 | 
             
            {
         | 
| 16 18 |  | 
| 17 19 | 
             
                 constructor(string memory distributionlName)
         | 
| 18 | 
            -
                      Authorization(distributionlName)
         | 
| 20 | 
            +
                      Authorization(distributionlName, DISTRIBUTION())
         | 
| 19 21 | 
             
                 {}
         | 
| 20 22 |  | 
| 21 | 
            -
                 function  | 
| 23 | 
            +
                 function _setupServiceTargets()
         | 
| 22 24 | 
             
                      internal
         | 
| 23 25 | 
             
                      virtual override
         | 
| 24 26 | 
             
                 {
         | 
| 25 | 
            -
                       | 
| 27 | 
            +
                      _addServiceTargetWithRole(COMPONENT());
         | 
| 26 28 | 
             
                 }
         | 
| 27 29 |  | 
| 30 | 
            +
                 function _setupTokenHandlerAuthorizations() internal virtual override {
         | 
| 31 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 32 | 
            +
                      functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
         | 
| 33 | 
            +
                      _authorize(functions, TokenHandler.approve.selector, "approve");
         | 
| 34 | 
            +
                      _authorize(functions, TokenHandler.setWallet.selector, "setWallet");
         | 
| 35 | 
            +
                      _authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                      // authorize token handler functions for pool service role
         | 
| 38 | 
            +
                      functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(DISTRIBUTION()));
         | 
| 39 | 
            +
                      _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
         | 
| 40 | 
            +
                 }
         | 
| 28 41 |  | 
| 29 42 | 
             
                 function _setupTargetAuthorizations()
         | 
| 30 43 | 
             
                      internal
         | 
| @@ -33,11 +46,11 @@ contract BasicDistributionAuthorization | |
| 33 46 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 34 47 |  | 
| 35 48 | 
             
                      // authorize public role (open access to any account, only allows to lock target)
         | 
| 36 | 
            -
                      functions = _authorizeForTarget( | 
| 49 | 
            +
                      functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
         | 
| 37 50 | 
             
                      _authorize(functions, BasicDistribution.setFees.selector, "setFees");
         | 
| 38 51 | 
             
                      _authorize(functions, BasicDistribution.createDistributorType.selector, "createDistributorType");
         | 
| 39 52 | 
             
                      _authorize(functions, BasicDistribution.createDistributor.selector, "createDistributor");
         | 
| 40 | 
            -
                      _authorize(functions, BasicDistribution. | 
| 53 | 
            +
                      _authorize(functions, BasicDistribution.changeDistributorType.selector, "changeDistributorType");
         | 
| 41 54 | 
             
                      _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
         | 
| 42 55 |  | 
| 43 56 | 
             
                      _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
         | 
| @@ -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";
         | 
| 5 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 6 | 
            +
            import {IDistributionComponent} from "./IDistributionComponent.sol";
         | 
| 7 7 | 
             
            import {IDistributionService} from "./IDistributionService.sol";
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 10 | 
            +
            import {COMPONENT, DISTRIBUTION, DISTRIBUTOR} from "../type/ObjectType.sol";
         | 
| 11 | 
            +
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 12 | 
            +
            import {Fee} from "../type/Fee.sol";
         | 
| 8 13 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 9 14 | 
             
            import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
         | 
| 10 | 
            -
            import {Fee} from "../type/Fee.sol";
         | 
| 11 15 | 
             
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import {IDistributionComponent} from "./IDistributionComponent.sol";
         | 
| 14 | 
            -
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 | 
            -
            import {DistributorType} from "../type/DistributorType.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
         | 
| @@ -37,6 +39,32 @@ abstract contract Distribution is | |
| 37 39 | 
             
                }
         | 
| 38 40 |  | 
| 39 41 |  | 
| 42 | 
            +
                function processRenewal(
         | 
| 43 | 
            +
                    ReferralId referralId,
         | 
| 44 | 
            +
                    uint256 feeAmount
         | 
| 45 | 
            +
                )
         | 
| 46 | 
            +
                    external
         | 
| 47 | 
            +
                    virtual
         | 
| 48 | 
            +
                    restricted()
         | 
| 49 | 
            +
                {
         | 
| 50 | 
            +
                    // default is no action
         | 
| 51 | 
            +
                }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 54 | 
            +
                /// @inheritdoc IDistributionComponent
         | 
| 55 | 
            +
                function withdrawCommission(NftId distributorNftId, Amount amount) 
         | 
| 56 | 
            +
                    external 
         | 
| 57 | 
            +
                    virtual
         | 
| 58 | 
            +
                    restricted()
         | 
| 59 | 
            +
                    onlyDistributor()
         | 
| 60 | 
            +
                    onlyNftOfType(distributorNftId, DISTRIBUTOR())
         | 
| 61 | 
            +
                    onlyNftOwner(distributorNftId)
         | 
| 62 | 
            +
                    returns (Amount withdrawnAmount) 
         | 
| 63 | 
            +
                {
         | 
| 64 | 
            +
                    return _withdrawCommission(distributorNftId, amount);
         | 
| 65 | 
            +
                }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
             | 
| 40 68 | 
             
                function isDistributor(address candidate)
         | 
| 41 69 | 
             
                    public
         | 
| 42 70 | 
             
                    view
         | 
| @@ -97,35 +125,12 @@ abstract contract Distribution is | |
| 97 125 | 
             
                }
         | 
| 98 126 |  | 
| 99 127 |  | 
| 100 | 
            -
                function processRenewal(
         | 
| 101 | 
            -
                    ReferralId referralId,
         | 
| 102 | 
            -
                    uint256 feeAmount
         | 
| 103 | 
            -
                )
         | 
| 104 | 
            -
                    external
         | 
| 105 | 
            -
                    virtual
         | 
| 106 | 
            -
                    restricted()
         | 
| 107 | 
            -
                {
         | 
| 108 | 
            -
                    // default is no action
         | 
| 109 | 
            -
                }
         | 
| 110 | 
            -
             | 
| 111 128 | 
             
                /// @dev Returns true iff the component needs to be called when selling/renewing policis
         | 
| 112 129 | 
             
                function isVerifying() external pure returns (bool verifying) {
         | 
| 113 130 | 
             
                    return true;
         | 
| 114 131 | 
             
                }
         | 
| 115 132 |  | 
| 116 | 
            -
             | 
| 117 | 
            -
                function withdrawCommission(NftId distributorNftId, Amount amount) 
         | 
| 118 | 
            -
                    external 
         | 
| 119 | 
            -
                    virtual
         | 
| 120 | 
            -
                    restricted()
         | 
| 121 | 
            -
                    onlyDistributor()
         | 
| 122 | 
            -
                    onlyNftOfType(distributorNftId, DISTRIBUTOR())
         | 
| 123 | 
            -
                    onlyNftOwner(distributorNftId)
         | 
| 124 | 
            -
                    returns (Amount withdrawnAmount) 
         | 
| 125 | 
            -
                {
         | 
| 126 | 
            -
                    return _withdrawCommission(distributorNftId, amount);
         | 
| 127 | 
            -
                }
         | 
| 128 | 
            -
                    
         | 
| 133 | 
            +
             | 
| 129 134 | 
             
                function _initializeDistribution(
         | 
| 130 135 | 
             
                    address registry,
         | 
| 131 136 | 
             
                    NftId productNftId,
         | 
| @@ -177,7 +182,7 @@ abstract contract Distribution is | |
| 177 182 | 
             
                    UFixed maxDiscountPercentage,
         | 
| 178 183 | 
             
                    UFixed commissionPercentage,
         | 
| 179 184 | 
             
                    uint32 maxReferralCount,
         | 
| 180 | 
            -
                     | 
| 185 | 
            +
                    Seconds maxReferralLifetime,
         | 
| 181 186 | 
             
                    bool allowSelfReferrals,
         | 
| 182 187 | 
             
                    bool allowRenewals,
         | 
| 183 188 | 
             
                    bytes memory data
         | 
| @@ -223,7 +228,7 @@ abstract contract Distribution is | |
| 223 228 | 
             
                }
         | 
| 224 229 |  | 
| 225 230 | 
             
                /// @dev Uptates the distributor type for the specified distributor.
         | 
| 226 | 
            -
                function  | 
| 231 | 
            +
                function _changeDistributorType(
         | 
| 227 232 | 
             
                    NftId distributorNftId,
         | 
| 228 233 | 
             
                    DistributorType distributorType,
         | 
| 229 234 | 
             
                    bytes memory data
         | 
| @@ -232,11 +237,10 @@ abstract contract Distribution is | |
| 232 237 | 
             
                    virtual
         | 
| 233 238 | 
             
                {
         | 
| 234 239 | 
             
                    DistributionStorage storage $ = _getDistributionStorage();
         | 
| 235 | 
            -
                     | 
| 236 | 
            -
             | 
| 237 | 
            -
             | 
| 238 | 
            -
             | 
| 239 | 
            -
                    //     data);
         | 
| 240 | 
            +
                    $._distributionService.changeDistributorType(
         | 
| 241 | 
            +
                        distributorNftId,
         | 
| 242 | 
            +
                        distributorType,
         | 
| 243 | 
            +
                        data);
         | 
| 240 244 | 
             
                }
         | 
| 241 245 |  | 
| 242 246 | 
             
                /// @dev Create a new referral code for the provided distributor.
         | 
| @@ -1,33 +1,36 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 5 | 
            -
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 4 | 
            +
            import {IAccountingService} from "../accounting/IAccountingService.sol";
         | 
| 6 5 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 6 | 
            +
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 7 | 
            +
            import {IDistributionService} from "./IDistributionService.sol";
         | 
| 8 | 
            +
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 7 9 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 10 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 11 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 9 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 10 12 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 11 13 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 12 14 |  | 
| 13 15 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 14 | 
            -
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 15 | 
            -
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 16 | 
            -
            import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
         | 
| 17 16 | 
             
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 18 | 
            -
            import {IDistributionService} from "./IDistributionService.sol";
         | 
| 19 | 
            -
            import {UFixed} from "../type/UFixed.sol";
         | 
| 20 17 | 
             
            import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
         | 
| 18 | 
            +
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 19 | 
            +
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 20 | 
            +
            import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 22 | 
            +
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 21 23 | 
             
            import {ReferralId, ReferralLib} from "../type/Referral.sol";
         | 
| 24 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 22 25 | 
             
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 23 | 
            -
            import { | 
| 24 | 
            -
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 26 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 25 27 |  | 
| 26 28 |  | 
| 27 29 | 
             
            contract DistributionService is
         | 
| 28 30 | 
             
                ComponentVerifyingService,
         | 
| 29 31 | 
             
                IDistributionService
         | 
| 30 32 | 
             
            {
         | 
| 33 | 
            +
                IAccountingService private _accountingService;
         | 
| 31 34 | 
             
                IComponentService private _componentService;
         | 
| 32 35 | 
             
                IInstanceService private _instanceService;
         | 
| 33 36 | 
             
                IRegistryService private _registryService;
         | 
| @@ -41,12 +44,13 @@ contract DistributionService is | |
| 41 44 | 
             
                    initializer()
         | 
| 42 45 | 
             
                {
         | 
| 43 46 | 
             
                    (
         | 
| 44 | 
            -
                        address  | 
| 45 | 
            -
                        address  | 
| 47 | 
            +
                        address authority,
         | 
| 48 | 
            +
                        address registry
         | 
| 46 49 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 47 50 |  | 
| 48 | 
            -
                     | 
| 51 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 49 52 |  | 
| 53 | 
            +
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 50 54 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 51 55 | 
             
                    _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
         | 
| 52 56 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| @@ -61,7 +65,7 @@ contract DistributionService is | |
| 61 65 | 
             
                    UFixed maxDiscountPercentage,
         | 
| 62 66 | 
             
                    UFixed commissionPercentage,
         | 
| 63 67 | 
             
                    uint32 maxReferralCount,
         | 
| 64 | 
            -
                     | 
| 68 | 
            +
                    Seconds maxReferralLifetime,
         | 
| 65 69 | 
             
                    bool allowSelfReferrals,
         | 
| 66 70 | 
             
                    bool allowRenewals,
         | 
| 67 71 | 
             
                    bytes memory data
         | 
| @@ -70,14 +74,14 @@ contract DistributionService is | |
| 70 74 | 
             
                    returns (DistributorType distributorType)
         | 
| 71 75 | 
             
                {
         | 
| 72 76 | 
             
                    (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
         | 
| 73 | 
            -
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 77 | 
            +
                    // InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 74 78 |  | 
| 75 79 | 
             
                    {
         | 
| 76 80 | 
             
                        NftId productNftId = _getProductNftId(distributionNftId);
         | 
| 77 | 
            -
                        IComponents. | 
| 81 | 
            +
                        IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
         | 
| 78 82 |  | 
| 79 | 
            -
                        UFixed variableDistributionFees =  | 
| 80 | 
            -
                        UFixed variableFeesPartsTotal =  | 
| 83 | 
            +
                        UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
         | 
| 84 | 
            +
                        UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
         | 
| 81 85 |  | 
| 82 86 | 
             
                        if (variableFeesPartsTotal > variableDistributionFees) {
         | 
| 83 87 | 
             
                            revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
         | 
| @@ -136,21 +140,20 @@ contract DistributionService is | |
| 136 140 | 
             
                    instance.getInstanceStore().createDistributor(distributorNftId, info);
         | 
| 137 141 | 
             
                }
         | 
| 138 142 |  | 
| 139 | 
            -
                 | 
| 140 | 
            -
             | 
| 141 | 
            -
             | 
| 142 | 
            -
             | 
| 143 | 
            -
                 | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
                 | 
| 147 | 
            -
             | 
| 148 | 
            -
             | 
| 149 | 
            -
             | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
                 | 
| 153 | 
            -
                // }
         | 
| 143 | 
            +
                function changeDistributorType(
         | 
| 144 | 
            +
                    NftId distributorNftId,
         | 
| 145 | 
            +
                    DistributorType distributorType,
         | 
| 146 | 
            +
                    bytes memory data
         | 
| 147 | 
            +
                )
         | 
| 148 | 
            +
                    external
         | 
| 149 | 
            +
                    virtual
         | 
| 150 | 
            +
                {
         | 
| 151 | 
            +
                    (,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
         | 
| 152 | 
            +
                    IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
         | 
| 153 | 
            +
                    distributorInfo.distributorType = distributorType;
         | 
| 154 | 
            +
                    distributorInfo.data = data;
         | 
| 155 | 
            +
                    instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
         | 
| 156 | 
            +
                }
         | 
| 154 157 |  | 
| 155 158 |  | 
| 156 159 | 
             
                function createReferral(
         | 
| @@ -169,10 +172,10 @@ contract DistributionService is | |
| 169 172 | 
             
                    (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
         | 
| 170 173 |  | 
| 171 174 | 
             
                    if (bytes(code).length == 0) {
         | 
| 172 | 
            -
                        revert  | 
| 175 | 
            +
                        revert ErrorDistributionServiceInvalidReferral(code);
         | 
| 173 176 | 
             
                    }
         | 
| 174 177 | 
             
                    if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
         | 
| 175 | 
            -
                        revert  | 
| 178 | 
            +
                        revert ErrorDistributionServiceExpirationInvalid(expiryAt);
         | 
| 176 179 | 
             
                    }
         | 
| 177 180 |  | 
| 178 181 | 
             
                    {
         | 
| @@ -181,16 +184,16 @@ contract DistributionService is | |
| 181 184 | 
             
                        IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
         | 
| 182 185 |  | 
| 183 186 | 
             
                        if (distributorTypeData.maxReferralCount < maxReferrals) {
         | 
| 184 | 
            -
                            revert  | 
| 187 | 
            +
                            revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
         | 
| 185 188 | 
             
                        }
         | 
| 186 189 | 
             
                        if (distributorTypeData.minDiscountPercentage > discountPercentage) {
         | 
| 187 | 
            -
                            revert  | 
| 190 | 
            +
                            revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
         | 
| 188 191 | 
             
                        }
         | 
| 189 192 | 
             
                        if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
         | 
| 190 | 
            -
                            revert  | 
| 193 | 
            +
                            revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
         | 
| 191 194 | 
             
                        }
         | 
| 192 | 
            -
                        if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
         | 
| 193 | 
            -
                            revert  | 
| 195 | 
            +
                        if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
         | 
| 196 | 
            +
                            revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
         | 
| 194 197 | 
             
                        }
         | 
| 195 198 | 
             
                    }
         | 
| 196 199 |  | 
| @@ -223,7 +226,7 @@ contract DistributionService is | |
| 223 226 | 
             
                    if (referralIsValid(distributionNftId, referralId)) {
         | 
| 224 227 | 
             
                        IRegistry registry = getRegistry();
         | 
| 225 228 | 
             
                        IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 226 | 
            -
                        IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 229 | 
            +
                        IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
         | 
| 227 230 |  | 
| 228 231 | 
             
                        // update book keeping for referral info
         | 
| 229 232 | 
             
                        IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| @@ -244,7 +247,7 @@ contract DistributionService is | |
| 244 247 | 
             
                {
         | 
| 245 248 | 
             
                    IRegistry registry = getRegistry();
         | 
| 246 249 | 
             
                    IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 247 | 
            -
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 250 | 
            +
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
         | 
| 248 251 | 
             
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 249 252 | 
             
                    InstanceStore store = instance.getInstanceStore();
         | 
| 250 253 |  | 
| @@ -256,12 +259,12 @@ contract DistributionService is | |
| 256 259 |  | 
| 257 260 | 
             
                        // increase distribution balance by commission amount and distribution owner fee
         | 
| 258 261 | 
             
                        Amount commissionAmount = premium.commissionAmount;
         | 
| 259 | 
            -
                         | 
| 262 | 
            +
                        _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
         | 
| 260 263 |  | 
| 261 264 | 
             
                        // update book keeping for referral info
         | 
| 262 265 | 
             
                        IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
         | 
| 263 266 |  | 
| 264 | 
            -
                         | 
| 267 | 
            +
                        _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
         | 
| 265 268 |  | 
| 266 269 | 
             
                        // update book keeping for distributor info
         | 
| 267 270 | 
             
                        IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
         | 
| @@ -269,7 +272,7 @@ contract DistributionService is | |
| 269 272 | 
             
                        store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
         | 
| 270 273 | 
             
                    } else {
         | 
| 271 274 | 
             
                        // increase distribution balance by distribution owner fee
         | 
| 272 | 
            -
                         | 
| 275 | 
            +
                        _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
         | 
| 273 276 | 
             
                    }
         | 
| 274 277 | 
             
                }
         | 
| 275 278 |  | 
| @@ -285,7 +288,7 @@ contract DistributionService is | |
| 285 288 | 
             
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 286 289 |  | 
| 287 290 | 
             
                    IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
         | 
| 288 | 
            -
                    address distributionWallet = distributionInfo. | 
| 291 | 
            +
                    address distributionWallet = distributionInfo.tokenHandler.getWallet();
         | 
| 289 292 |  | 
| 290 293 | 
             
                    Amount commissionAmount = reader.getFeeAmount(distributorNftId);
         | 
| 291 294 |  | 
| @@ -303,16 +306,16 @@ contract DistributionService is | |
| 303 306 | 
             
                    {
         | 
| 304 307 | 
             
                        InstanceStore store = instance.getInstanceStore();
         | 
| 305 308 | 
             
                        // decrease fee counter for distribution balance
         | 
| 306 | 
            -
                         | 
| 309 | 
            +
                        _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
         | 
| 307 310 | 
             
                        // decrease fee counter for distributor fee
         | 
| 308 | 
            -
                         | 
| 311 | 
            +
                        _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
         | 
| 309 312 | 
             
                    }
         | 
| 310 313 |  | 
| 311 314 | 
             
                    // transfer amount to distributor
         | 
| 312 315 | 
             
                    {
         | 
| 313 316 | 
             
                        address distributor = getRegistry().ownerOf(distributorNftId);
         | 
| 314 317 | 
             
                        emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
         | 
| 315 | 
            -
                        distributionInfo.tokenHandler. | 
| 318 | 
            +
                        distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
         | 
| 316 319 | 
             
                    }
         | 
| 317 320 | 
             
                }
         | 
| 318 321 |  | 
| @@ -328,7 +331,7 @@ contract DistributionService is | |
| 328 331 |  | 
| 329 332 | 
             
                    IRegistry registry = getRegistry();
         | 
| 330 333 | 
             
                    IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 331 | 
            -
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 334 | 
            +
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
         | 
| 332 335 | 
             
                    IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| 333 336 |  | 
| 334 337 | 
             
                    if (info.distributorNftId.eqz()) {
         | 
| @@ -344,7 +347,7 @@ contract DistributionService is | |
| 344 347 | 
             
                    view
         | 
| 345 348 | 
             
                    returns(IInstance instance)
         | 
| 346 349 | 
             
                {
         | 
| 347 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 350 | 
            +
                    NftId instanceNftId = getRegistry().getParentNftId(distributionNftId);
         | 
| 348 351 | 
             
                    address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
         | 
| 349 352 | 
             
                    return IInstance(instanceAddress);
         | 
| 350 353 | 
             
                }
         | 
| @@ -17,7 +17,7 @@ contract DistributionServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    DistributionService svc = new DistributionService{salt: salt}();
         | 
| 20 | 
            -
                    bytes memory data = abi.encode( | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 21 | 
             
                    IVersionable versionable = initialize(
         | 
| 22 22 | 
             
                        registry,
         | 
| 23 23 | 
             
                        address(svc), 
         | 
| @@ -8,30 +8,31 @@ import {IService} from "../shared/IService.sol"; | |
| 8 8 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 9 9 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 10 10 | 
             
            import {ReferralId} from "../type/Referral.sol";
         | 
| 11 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 12 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 12 13 |  | 
| 13 14 |  | 
| 14 15 | 
             
            interface IDistributionService is IService {
         | 
| 15 16 |  | 
| 16 17 | 
             
                error ErrorDistributionServiceCallerNotRegistered(address caller);
         | 
| 17 | 
            -
                error  | 
| 18 | 
            -
                error  | 
| 19 | 
            -
                error  | 
| 20 | 
            -
                error  | 
| 21 | 
            -
                error  | 
| 22 | 
            -
                error  | 
| 23 | 
            -
                error  | 
| 24 | 
            -
                error  | 
| 25 | 
            -
                error  | 
| 26 | 
            -
                error  | 
| 27 | 
            -
                error  | 
| 18 | 
            +
                error ErrorDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
         | 
| 19 | 
            +
                error ErrorDistributionServiceCallerNotDistributor(address caller);
         | 
| 20 | 
            +
                error ErrorDistributionServiceInvalidReferralId(ReferralId referralId);
         | 
| 21 | 
            +
                error ErrorDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
         | 
| 22 | 
            +
                error ErrorDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
         | 
| 23 | 
            +
                error ErrorDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
         | 
| 24 | 
            +
                error ErrorDistributionServiceExpiryTooLong(Seconds maxReferralLifetime, Timestamp expiryAt);
         | 
| 25 | 
            +
                error ErrorDistributionServiceInvalidReferral(string code);
         | 
| 26 | 
            +
                error ErrorDistributionServiceExpirationInvalid(Timestamp expiryAt);
         | 
| 27 | 
            +
                error ErrorDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
         | 
| 28 | 
            +
                error ErrorDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
         | 
| 28 29 |  | 
| 29 30 | 
             
                error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 30 31 |  | 
| 31 32 | 
             
                error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
         | 
| 32 33 | 
             
                error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
         | 
| 33 34 |  | 
| 34 | 
            -
                error  | 
| 35 | 
            +
                error ErrorDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
         | 
| 35 36 | 
             
                error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
         | 
| 36 37 |  | 
| 37 38 | 
             
                event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
         | 
| @@ -42,7 +43,7 @@ interface IDistributionService is IService { | |
| 42 43 | 
             
                    UFixed maxDiscountPercentage,
         | 
| 43 44 | 
             
                    UFixed commissionPercentage,
         | 
| 44 45 | 
             
                    uint32 maxReferralCount,
         | 
| 45 | 
            -
                     | 
| 46 | 
            +
                    Seconds maxReferralLifetime,
         | 
| 46 47 | 
             
                    bool allowSelfReferrals,
         | 
| 47 48 | 
             
                    bool allowRenewals,
         | 
| 48 49 | 
             
                    bytes memory data
         | 
| @@ -56,12 +57,11 @@ interface IDistributionService is IService { | |
| 56 57 | 
             
                    bytes memory data
         | 
| 57 58 | 
             
                ) external returns (NftId distributorNftId);
         | 
| 58 59 |  | 
| 59 | 
            -
                 | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                 | 
| 64 | 
            -
                // ) external;
         | 
| 60 | 
            +
                function changeDistributorType(
         | 
| 61 | 
            +
                    NftId distributorNftId,
         | 
| 62 | 
            +
                    DistributorType distributorType,
         | 
| 63 | 
            +
                    bytes memory data
         | 
| 64 | 
            +
                ) external;
         | 
| 65 65 |  | 
| 66 66 | 
             
                function createReferral(
         | 
| 67 67 | 
             
                    NftId distributorNftId,
         |