@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13d67f-541
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 +90 -317
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +729 -287
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
- 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 +560 -220
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -300
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -173
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +190 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -135
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
- 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 +160 -224
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -337
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -257
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -165
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -233
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +946 -466
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +551 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +417 -17
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +615 -105
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1121 -374
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +379 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1127 -557
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +434 -81
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1286 -1925
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -175
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
- 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 +48 -74
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -111
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +154 -46
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -173
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +426 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -92
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -128
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -159
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +186 -66
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +143 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -223
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +151 -83
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -181
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +169 -77
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +131 -59
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +193 -217
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +141 -41
- 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 +78 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/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 +116 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +848 -479
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +119 -39
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -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 +398 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +66 -96
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +308 -542
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +155 -83
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
- 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 +48 -60
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +171 -356
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -74
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -110
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +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 +1446 -164
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -296
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +160 -69
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +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 +49 -50
- 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 +23 -4
- 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/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- 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 +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +389 -306
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +128 -4
- package/contracts/authorization/Authorization.sol +161 -260
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +89 -84
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +19 -18
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +45 -85
- package/contracts/distribution/DistributionService.sol +192 -99
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +38 -24
- package/contracts/examples/fire/FirePool.sol +21 -8
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +38 -20
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/flight/FlightLib.sol +279 -0
- package/contracts/examples/flight/FlightOracle.sol +168 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +470 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +26 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +109 -19
- package/contracts/instance/IInstanceService.sol +61 -14
- package/contracts/instance/Instance.sol +184 -65
- package/contracts/instance/InstanceAdmin.sol +221 -193
- package/contracts/instance/InstanceAuthorizationV3.sol +153 -72
- package/contracts/instance/InstanceReader.sol +447 -314
- package/contracts/instance/InstanceService.sol +315 -214
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +152 -116
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +19 -10
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -7
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +12 -12
- package/contracts/oracle/Oracle.sol +5 -9
- package/contracts/oracle/OracleService.sol +98 -79
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +26 -19
- package/contracts/pool/BasicPoolAuthorization.sol +34 -10
- package/contracts/pool/BundleService.sol +75 -182
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +28 -55
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +65 -62
- package/contracts/pool/Pool.sol +111 -115
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +299 -229
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +93 -25
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -15
- package/contracts/product/BasicProductAuthorization.sol +33 -11
- package/contracts/product/ClaimService.sol +221 -207
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +34 -12
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +260 -306
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -70
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +25 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +31 -12
- package/contracts/registry/RegistryAdmin.sol +94 -369
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +199 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +158 -134
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +58 -119
- package/contracts/shared/ComponentService.sol +400 -395
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +277 -3
- package/contracts/shared/IComponent.sol +2 -18
- package/contracts/shared/IComponentService.sol +28 -38
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +63 -44
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +264 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +270 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +522 -222
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -148
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- 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 +70 -68
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -8
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +27 -13
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +4 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
- package/contracts/shared/ComponentVerifyingService.sol +0 -126
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -1,33 +1,39 @@ | |
| 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";
         | 
| 16 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 17 | 
            +
            import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
         | 
| 14 18 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 15 19 | 
             
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 16 | 
            -
            import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
         | 
| 17 | 
            -
            import { | 
| 18 | 
            -
            import {IDistributionService} from "./IDistributionService.sol";
         | 
| 19 | 
            -
            import {UFixed} from "../type/UFixed.sol";
         | 
| 20 | 
            -
            import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
         | 
| 21 | 
            -
            import {ReferralId, ReferralLib} from "../type/Referral.sol";
         | 
| 22 | 
            -
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 23 | 
            -
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 20 | 
            +
            import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 24 22 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 23 | 
            +
            // TODO PoolLib feels wrong, should likely go in a component type independent lib
         | 
| 24 | 
            +
            import {PoolLib} from "../pool/PoolLib.sol";
         | 
| 25 | 
            +
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
         | 
| 26 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 27 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 28 | 
            +
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 29 | 
            +
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 25 30 |  | 
| 26 31 |  | 
| 27 32 | 
             
            contract DistributionService is
         | 
| 28 | 
            -
                 | 
| 33 | 
            +
                Service,
         | 
| 29 34 | 
             
                IDistributionService
         | 
| 30 35 | 
             
            {
         | 
| 36 | 
            +
                IAccountingService private _accountingService;
         | 
| 31 37 | 
             
                IComponentService private _componentService;
         | 
| 32 38 | 
             
                IInstanceService private _instanceService;
         | 
| 33 39 | 
             
                IRegistryService private _registryService;
         | 
| @@ -41,12 +47,13 @@ contract DistributionService is | |
| 41 47 | 
             
                    initializer()
         | 
| 42 48 | 
             
                {
         | 
| 43 49 | 
             
                    (
         | 
| 44 | 
            -
                        address  | 
| 45 | 
            -
                        address  | 
| 50 | 
            +
                        address authority,
         | 
| 51 | 
            +
                        address registry
         | 
| 46 52 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 47 53 |  | 
| 48 | 
            -
                     | 
| 54 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 49 55 |  | 
| 56 | 
            +
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 50 57 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 51 58 | 
             
                    _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
         | 
| 52 59 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| @@ -61,47 +68,51 @@ contract DistributionService is | |
| 61 68 | 
             
                    UFixed maxDiscountPercentage,
         | 
| 62 69 | 
             
                    UFixed commissionPercentage,
         | 
| 63 70 | 
             
                    uint32 maxReferralCount,
         | 
| 64 | 
            -
                     | 
| 71 | 
            +
                    Seconds maxReferralLifetime,
         | 
| 65 72 | 
             
                    bool allowSelfReferrals,
         | 
| 66 73 | 
             
                    bool allowRenewals,
         | 
| 67 74 | 
             
                    bytes memory data
         | 
| 68 75 | 
             
                )
         | 
| 69 76 | 
             
                    external
         | 
| 77 | 
            +
                    virtual
         | 
| 78 | 
            +
                    restricted()
         | 
| 70 79 | 
             
                    returns (DistributorType distributorType)
         | 
| 71 80 | 
             
                {
         | 
| 72 | 
            -
                    (NftId distributionNftId | 
| 73 | 
            -
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 81 | 
            +
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 74 82 |  | 
| 75 83 | 
             
                    {
         | 
| 76 | 
            -
                        NftId productNftId =  | 
| 77 | 
            -
                        IComponents. | 
| 84 | 
            +
                        NftId productNftId = getRegistry().getParentNftId(distributionNftId);
         | 
| 85 | 
            +
                        IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
         | 
| 78 86 |  | 
| 79 | 
            -
                        UFixed variableDistributionFees =  | 
| 80 | 
            -
                        UFixed variableFeesPartsTotal =  | 
| 87 | 
            +
                        UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
         | 
| 88 | 
            +
                        UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
         | 
| 81 89 |  | 
| 82 90 | 
             
                        if (variableFeesPartsTotal > variableDistributionFees) {
         | 
| 83 91 | 
             
                            revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
         | 
| 84 92 | 
             
                        }
         | 
| 85 93 | 
             
                        UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
         | 
| 86 94 |  | 
| 87 | 
            -
                        if (maxDiscountPercentage | 
| 95 | 
            +
                        if (maxDiscountPercentage > maxDiscountPercentageLimit) {
         | 
| 88 96 | 
             
                            revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
         | 
| 89 97 | 
             
                        }
         | 
| 90 98 | 
             
                    }
         | 
| 91 99 |  | 
| 92 100 | 
             
                    distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
         | 
| 93 | 
            -
                    IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
         | 
| 94 | 
            -
                        name,
         | 
| 95 | 
            -
                         | 
| 96 | 
            -
                         | 
| 97 | 
            -
                         | 
| 98 | 
            -
                         | 
| 99 | 
            -
                         | 
| 100 | 
            -
                         | 
| 101 | 
            -
                         | 
| 102 | 
            -
                         | 
| 101 | 
            +
                    IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
         | 
| 102 | 
            +
                        name: name,
         | 
| 103 | 
            +
                        distributionNftId: distributionNftId,
         | 
| 104 | 
            +
                        minDiscountPercentage: minDiscountPercentage,
         | 
| 105 | 
            +
                        maxDiscountPercentage: maxDiscountPercentage,
         | 
| 106 | 
            +
                        commissionPercentage: commissionPercentage,
         | 
| 107 | 
            +
                        maxReferralCount: maxReferralCount,
         | 
| 108 | 
            +
                        maxReferralLifetime: maxReferralLifetime,
         | 
| 109 | 
            +
                        allowSelfReferrals: allowSelfReferrals,
         | 
| 110 | 
            +
                        allowRenewals: allowRenewals,
         | 
| 111 | 
            +
                        data: data});
         | 
| 103 112 |  | 
| 104 113 | 
             
                    instance.getInstanceStore().createDistributorType(distributorType, info);
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
         | 
| 105 116 | 
             
                }
         | 
| 106 117 |  | 
| 107 118 |  | 
| @@ -112,9 +123,11 @@ contract DistributionService is | |
| 112 123 | 
             
                )
         | 
| 113 124 | 
             
                    external 
         | 
| 114 125 | 
             
                    virtual
         | 
| 126 | 
            +
                    restricted()
         | 
| 115 127 | 
             
                    returns (NftId distributorNftId)
         | 
| 116 128 | 
             
                {
         | 
| 117 | 
            -
                    (NftId distributionNftId | 
| 129 | 
            +
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 130 | 
            +
                    _checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
         | 
| 118 131 |  | 
| 119 132 | 
             
                    distributorNftId = _registryService.registerDistributor(
         | 
| 120 133 | 
             
                        IRegistry.ObjectInfo(
         | 
| @@ -127,30 +140,38 @@ contract DistributionService is | |
| 127 140 | 
             
                            ""
         | 
| 128 141 | 
             
                        ));
         | 
| 129 142 |  | 
| 130 | 
            -
                    IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
         | 
| 131 | 
            -
                        distributorType,
         | 
| 132 | 
            -
                        true,  | 
| 133 | 
            -
                         | 
| 134 | 
            -
                         | 
| 143 | 
            +
                    IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
         | 
| 144 | 
            +
                        distributorType: distributorType,
         | 
| 145 | 
            +
                        active: true, 
         | 
| 146 | 
            +
                        numPoliciesSold: 0,
         | 
| 147 | 
            +
                        data: data});
         | 
| 135 148 |  | 
| 136 149 | 
             
                    instance.getInstanceStore().createDistributor(distributorNftId, info);
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                    emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributorType, distributor);
         | 
| 137 152 | 
             
                }
         | 
| 138 153 |  | 
| 139 | 
            -
                 | 
| 140 | 
            -
             | 
| 141 | 
            -
             | 
| 142 | 
            -
             | 
| 143 | 
            -
                 | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
             | 
| 147 | 
            -
                 | 
| 148 | 
            -
             | 
| 149 | 
            -
             | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
             | 
| 153 | 
            -
             | 
| 154 | 
            +
                function changeDistributorType(
         | 
| 155 | 
            +
                    NftId distributorNftId,
         | 
| 156 | 
            +
                    DistributorType newDistributorType,
         | 
| 157 | 
            +
                    bytes memory data
         | 
| 158 | 
            +
                )
         | 
| 159 | 
            +
                    external
         | 
| 160 | 
            +
                    virtual
         | 
| 161 | 
            +
                    restricted()
         | 
| 162 | 
            +
                {
         | 
| 163 | 
            +
                    _checkNftType(distributorNftId, DISTRIBUTOR());
         | 
| 164 | 
            +
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 165 | 
            +
                    _checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
         | 
| 166 | 
            +
                    
         | 
| 167 | 
            +
                    IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
         | 
| 168 | 
            +
                    DistributorType oldDistributorType = distributorInfo.distributorType;
         | 
| 169 | 
            +
                    distributorInfo.distributorType = newDistributorType;
         | 
| 170 | 
            +
                    distributorInfo.data = data;
         | 
| 171 | 
            +
                    instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                    emit LogDistributionServiceDistributorTypeChanged(distributorNftId, oldDistributorType, newDistributorType);
         | 
| 174 | 
            +
                }
         | 
| 154 175 |  | 
| 155 176 |  | 
| 156 177 | 
             
                function createReferral(
         | 
| @@ -163,16 +184,22 @@ contract DistributionService is | |
| 163 184 | 
             
                )
         | 
| 164 185 | 
             
                    external
         | 
| 165 186 | 
             
                    virtual
         | 
| 187 | 
            +
                    restricted()
         | 
| 166 188 | 
             
                    onlyNftOfType(distributorNftId, DISTRIBUTOR())
         | 
| 167 189 | 
             
                    returns (ReferralId referralId)
         | 
| 168 190 | 
             
                {
         | 
| 169 | 
            -
                    (NftId distributionNftId | 
| 191 | 
            +
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 170 192 |  | 
| 171 193 | 
             
                    if (bytes(code).length == 0) {
         | 
| 172 | 
            -
                        revert  | 
| 194 | 
            +
                        revert ErrorDistributionServiceInvalidReferral();
         | 
| 195 | 
            +
                    }
         | 
| 196 | 
            +
                    if (expiryAt.eqz() || expiryAt < TimestampLib.current()) {
         | 
| 197 | 
            +
                        revert ErrorDistributionServiceExpirationInvalid(expiryAt);
         | 
| 173 198 | 
             
                    }
         | 
| 174 | 
            -
             | 
| 175 | 
            -
             | 
| 199 | 
            +
             | 
| 200 | 
            +
                    NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
         | 
| 201 | 
            +
                    if (distributorDistributionNftId != distributionNftId) {
         | 
| 202 | 
            +
                        revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
         | 
| 176 203 | 
             
                    }
         | 
| 177 204 |  | 
| 178 205 | 
             
                    {
         | 
| @@ -181,32 +208,35 @@ contract DistributionService is | |
| 181 208 | 
             
                        IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
         | 
| 182 209 |  | 
| 183 210 | 
             
                        if (distributorTypeData.maxReferralCount < maxReferrals) {
         | 
| 184 | 
            -
                            revert  | 
| 211 | 
            +
                            revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount, maxReferrals);
         | 
| 185 212 | 
             
                        }
         | 
| 186 213 | 
             
                        if (distributorTypeData.minDiscountPercentage > discountPercentage) {
         | 
| 187 | 
            -
                            revert  | 
| 214 | 
            +
                            revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage, discountPercentage);
         | 
| 188 215 | 
             
                        }
         | 
| 189 216 | 
             
                        if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
         | 
| 190 | 
            -
                            revert  | 
| 217 | 
            +
                            revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage, discountPercentage);
         | 
| 191 218 | 
             
                        }
         | 
| 192 | 
            -
                        if (expiryAt.toInt() - TimestampLib. | 
| 193 | 
            -
                            revert  | 
| 219 | 
            +
                        if (expiryAt.toInt() - TimestampLib.current().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
         | 
| 220 | 
            +
                            revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
         | 
| 194 221 | 
             
                        }
         | 
| 195 222 | 
             
                    }
         | 
| 196 223 |  | 
| 197 224 | 
             
                    {
         | 
| 198 225 | 
             
                        referralId = ReferralLib.toReferralId(distributionNftId, code);
         | 
| 199 | 
            -
                        IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
         | 
| 200 | 
            -
                             | 
| 201 | 
            -
                             | 
| 202 | 
            -
                             | 
| 203 | 
            -
                             | 
| 204 | 
            -
                             | 
| 205 | 
            -
                             | 
| 206 | 
            -
                             | 
| 207 | 
            -
             | 
| 226 | 
            +
                        IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo({
         | 
| 227 | 
            +
                            distributionNftId: distributionNftId,
         | 
| 228 | 
            +
                            distributorNftId: distributorNftId,
         | 
| 229 | 
            +
                            referralCode: code,
         | 
| 230 | 
            +
                            discountPercentage: discountPercentage,
         | 
| 231 | 
            +
                            maxReferrals: maxReferrals,
         | 
| 232 | 
            +
                            usedReferrals: 0, 
         | 
| 233 | 
            +
                            expiryAt: expiryAt,
         | 
| 234 | 
            +
                            data: data
         | 
| 235 | 
            +
                        });
         | 
| 208 236 |  | 
| 209 237 | 
             
                        instance.getInstanceStore().createReferral(referralId, info);
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                        emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
         | 
| 210 240 | 
             
                    }
         | 
| 211 241 | 
             
                }
         | 
| 212 242 |  | 
| @@ -221,14 +251,14 @@ contract DistributionService is | |
| 221 251 | 
             
                    onlyNftOfType(distributionNftId, DISTRIBUTION())
         | 
| 222 252 | 
             
                {
         | 
| 223 253 | 
             
                    if (referralIsValid(distributionNftId, referralId)) {
         | 
| 224 | 
            -
                         | 
| 225 | 
            -
                        IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 226 | 
            -
                        IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 254 | 
            +
                        IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 227 255 |  | 
| 228 256 | 
             
                        // update book keeping for referral info
         | 
| 229 257 | 
             
                        IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| 230 258 | 
             
                        referralInfo.usedReferrals += 1;
         | 
| 231 259 | 
             
                        instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                        emit LogDistributionServiceReferralProcessed(distributionNftId, referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
         | 
| 232 262 | 
             
                    }
         | 
| 233 263 | 
             
                }
         | 
| 234 264 |  | 
| @@ -242,9 +272,7 @@ contract DistributionService is | |
| 242 272 | 
             
                    restricted()
         | 
| 243 273 | 
             
                    onlyNftOfType(distributionNftId, DISTRIBUTION())
         | 
| 244 274 | 
             
                {
         | 
| 245 | 
            -
                     | 
| 246 | 
            -
                    IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 247 | 
            -
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 275 | 
            +
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 248 276 | 
             
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 249 277 | 
             
                    InstanceStore store = instance.getInstanceStore();
         | 
| 250 278 |  | 
| @@ -256,12 +284,12 @@ contract DistributionService is | |
| 256 284 |  | 
| 257 285 | 
             
                        // increase distribution balance by commission amount and distribution owner fee
         | 
| 258 286 | 
             
                        Amount commissionAmount = premium.commissionAmount;
         | 
| 259 | 
            -
                         | 
| 287 | 
            +
                        _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
         | 
| 260 288 |  | 
| 261 289 | 
             
                        // update book keeping for referral info
         | 
| 262 290 | 
             
                        IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
         | 
| 263 291 |  | 
| 264 | 
            -
                         | 
| 292 | 
            +
                        _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
         | 
| 265 293 |  | 
| 266 294 | 
             
                        // update book keeping for distributor info
         | 
| 267 295 | 
             
                        IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
         | 
| @@ -269,32 +297,34 @@ contract DistributionService is | |
| 269 297 | 
             
                        store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
         | 
| 270 298 | 
             
                    } else {
         | 
| 271 299 | 
             
                        // increase distribution balance by distribution owner fee
         | 
| 272 | 
            -
                         | 
| 300 | 
            +
                        _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
         | 
| 273 301 | 
             
                    }
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                    emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
         | 
| 274 304 | 
             
                }
         | 
| 275 305 |  | 
| 276 306 | 
             
                /// @inheritdoc IDistributionService
         | 
| 277 307 | 
             
                function withdrawCommission(NftId distributorNftId, Amount amount) 
         | 
| 278 308 | 
             
                    public 
         | 
| 279 309 | 
             
                    virtual
         | 
| 280 | 
            -
                     | 
| 310 | 
            +
                    restricted()
         | 
| 281 311 | 
             
                    onlyNftOfType(distributorNftId, DISTRIBUTOR())
         | 
| 282 312 | 
             
                    returns (Amount withdrawnAmount) 
         | 
| 283 313 | 
             
                {
         | 
| 284 | 
            -
                    (NftId distributionNftId | 
| 314 | 
            +
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 285 315 | 
             
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 286 316 |  | 
| 287 317 | 
             
                    IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
         | 
| 288 | 
            -
                    address distributionWallet = distributionInfo. | 
| 318 | 
            +
                    // address distributionWallet = distributionInfo.tokenHandler.getWallet();
         | 
| 289 319 |  | 
| 290 320 | 
             
                    Amount commissionAmount = reader.getFeeAmount(distributorNftId);
         | 
| 291 321 |  | 
| 292 322 | 
             
                    // determine withdrawn amount
         | 
| 293 323 | 
             
                    withdrawnAmount = amount;
         | 
| 294 | 
            -
                    if (withdrawnAmount | 
| 324 | 
            +
                    if (withdrawnAmount >= AmountLib.max()) {
         | 
| 295 325 | 
             
                        withdrawnAmount = commissionAmount;
         | 
| 296 326 | 
             
                    } else {
         | 
| 297 | 
            -
                        if (withdrawnAmount | 
| 327 | 
            +
                        if (withdrawnAmount > commissionAmount) {
         | 
| 298 328 | 
             
                            revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
         | 
| 299 329 | 
             
                        }
         | 
| 300 330 | 
             
                    }
         | 
| @@ -303,21 +333,22 @@ contract DistributionService is | |
| 303 333 | 
             
                    {
         | 
| 304 334 | 
             
                        InstanceStore store = instance.getInstanceStore();
         | 
| 305 335 | 
             
                        // decrease fee counter for distribution balance
         | 
| 306 | 
            -
                         | 
| 336 | 
            +
                        _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
         | 
| 307 337 | 
             
                        // decrease fee counter for distributor fee
         | 
| 308 | 
            -
                         | 
| 338 | 
            +
                        _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
         | 
| 309 339 | 
             
                    }
         | 
| 310 340 |  | 
| 311 341 | 
             
                    // transfer amount to distributor
         | 
| 312 342 | 
             
                    {
         | 
| 313 343 | 
             
                        address distributor = getRegistry().ownerOf(distributorNftId);
         | 
| 314 | 
            -
                        emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo. | 
| 315 | 
            -
                        distributionInfo.tokenHandler. | 
| 344 | 
            +
                        emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
         | 
| 345 | 
            +
                        distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
         | 
| 316 346 | 
             
                    }
         | 
| 317 347 | 
             
                }
         | 
| 318 348 |  | 
| 319 349 | 
             
                function referralIsValid(NftId distributionNftId, ReferralId referralId) 
         | 
| 320 350 | 
             
                    public 
         | 
| 351 | 
            +
                    virtual
         | 
| 321 352 | 
             
                    view 
         | 
| 322 353 | 
             
                    onlyNftOfType(distributionNftId, DISTRIBUTION())
         | 
| 323 354 | 
             
                    returns (bool isValid) 
         | 
| @@ -326,29 +357,91 @@ contract DistributionService is | |
| 326 357 | 
             
                        return false;
         | 
| 327 358 | 
             
                    }
         | 
| 328 359 |  | 
| 329 | 
            -
                     | 
| 330 | 
            -
                    IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
         | 
| 331 | 
            -
                    IInstance instance = _getInstanceForComponent(registry, distributionInfo);
         | 
| 360 | 
            +
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 332 361 | 
             
                    IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| 333 362 |  | 
| 334 363 | 
             
                    if (info.distributorNftId.eqz()) {
         | 
| 335 364 | 
             
                        return false;
         | 
| 336 365 | 
             
                    }
         | 
| 337 366 |  | 
| 338 | 
            -
                     | 
| 367 | 
            +
                    // ensure the referral was created on the same distribution
         | 
| 368 | 
            +
                    if(info.distributionNftId != distributionNftId) {
         | 
| 369 | 
            +
                        revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
         | 
| 370 | 
            +
                    }
         | 
| 371 | 
            +
             | 
| 372 | 
            +
                    isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.current() <= info.expiryAt);
         | 
| 339 373 | 
             
                    isValid = isValid && info.usedReferrals < info.maxReferrals;
         | 
| 340 374 | 
             
                }
         | 
| 341 375 |  | 
| 342 | 
            -
             | 
| 376 | 
            +
             | 
| 377 | 
            +
                function getDiscountPercentage(
         | 
| 378 | 
            +
                    InstanceReader instanceReader,
         | 
| 379 | 
            +
                    ReferralId referralId
         | 
| 380 | 
            +
                )
         | 
| 381 | 
            +
                    external
         | 
| 382 | 
            +
                    virtual
         | 
| 383 | 
            +
                    view 
         | 
| 384 | 
            +
                    returns (
         | 
| 385 | 
            +
                        UFixed discountPercentage, 
         | 
| 386 | 
            +
                        ReferralStatus status
         | 
| 387 | 
            +
                    )
         | 
| 388 | 
            +
                { 
         | 
| 389 | 
            +
                    IDistribution.ReferralInfo memory info = instanceReader.getReferralInfo(
         | 
| 390 | 
            +
                        referralId);        
         | 
| 391 | 
            +
             | 
| 392 | 
            +
                    if (info.expiryAt.eqz()) {
         | 
| 393 | 
            +
                        return (
         | 
| 394 | 
            +
                            UFixedLib.zero(),
         | 
| 395 | 
            +
                            REFERRAL_ERROR_UNKNOWN());
         | 
| 396 | 
            +
                    }
         | 
| 397 | 
            +
             | 
| 398 | 
            +
                    if (info.expiryAt < TimestampLib.current()) {
         | 
| 399 | 
            +
                        return (
         | 
| 400 | 
            +
                            UFixedLib.zero(),
         | 
| 401 | 
            +
                            REFERRAL_ERROR_EXPIRED());
         | 
| 402 | 
            +
                    }
         | 
| 403 | 
            +
             | 
| 404 | 
            +
                    if (info.usedReferrals >= info.maxReferrals) {
         | 
| 405 | 
            +
                        return (
         | 
| 406 | 
            +
                            UFixedLib.zero(),
         | 
| 407 | 
            +
                            REFERRAL_ERROR_EXHAUSTED());
         | 
| 408 | 
            +
                    }
         | 
| 409 | 
            +
             | 
| 410 | 
            +
                    return (
         | 
| 411 | 
            +
                        info.discountPercentage,
         | 
| 412 | 
            +
                        REFERRAL_OK()
         | 
| 413 | 
            +
                    );
         | 
| 414 | 
            +
             | 
| 415 | 
            +
                }
         | 
| 416 | 
            +
             | 
| 417 | 
            +
             | 
| 418 | 
            +
                function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId) 
         | 
| 419 | 
            +
                    internal
         | 
| 420 | 
            +
                    view 
         | 
| 421 | 
            +
                {
         | 
| 422 | 
            +
                    // enfore distributor type belongs to the calling distribution
         | 
| 423 | 
            +
                    NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
         | 
| 424 | 
            +
             | 
| 425 | 
            +
                    if (distributorTypeDistributionNftId != expectedDistributionNftId) {
         | 
| 426 | 
            +
                        revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
         | 
| 427 | 
            +
                    }
         | 
| 428 | 
            +
                }
         | 
| 429 | 
            +
             | 
| 430 | 
            +
             | 
| 431 | 
            +
             | 
| 432 | 
            +
                function _getAndVerifyActiveDistribution()
         | 
| 343 433 | 
             
                    internal
         | 
| 434 | 
            +
                    virtual
         | 
| 344 435 | 
             
                    view
         | 
| 345 | 
            -
                    returns( | 
| 436 | 
            +
                    returns (
         | 
| 437 | 
            +
                        NftId poolNftId,
         | 
| 438 | 
            +
                        IInstance instance
         | 
| 439 | 
            +
                    )
         | 
| 346 440 | 
             
                {
         | 
| 347 | 
            -
                     | 
| 348 | 
            -
                    address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
         | 
| 349 | 
            -
                    return IInstance(instanceAddress);
         | 
| 441 | 
            +
                    return PoolLib.getAndVerifyActiveComponent(getRegistry(), msg.sender, DISTRIBUTION());
         | 
| 350 442 | 
             
                }
         | 
| 351 443 |  | 
| 444 | 
            +
             | 
| 352 445 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 353 446 | 
             
                    return DISTRIBUTION();
         | 
| 354 447 | 
             
                }
         | 
| @@ -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), 
         | 
| @@ -1,25 +1,18 @@ | |
| 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 4 | 
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 6 7 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 7 8 | 
             
            import {ReferralId, ReferralStatus} from "../type/Referral.sol";
         | 
| 8 9 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 9 10 |  | 
| 10 | 
            -
            interface IDistributionComponent is IInstanceLinkedComponent {
         | 
| 11 11 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
                error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
         | 
| 12 | 
            +
            interface IDistributionComponent is IInstanceLinkedComponent {
         | 
| 14 13 |  | 
| 15 14 | 
             
                event LogDistributorUpdated(address to, address operator);
         | 
| 16 15 |  | 
| 17 | 
            -
                /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
         | 
| 18 | 
            -
                function isDistributor(address candidate) external view returns (bool);
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                /// @dev Returns the distributor Nft Id for the provided address
         | 
| 21 | 
            -
                function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
         | 
| 22 | 
            -
             | 
| 23 16 | 
             
                function getDiscountPercentage(
         | 
| 24 17 | 
             
                    string memory referralCode
         | 
| 25 18 | 
             
                ) external view returns (UFixed discountPercentage, ReferralStatus status);
         | 
| @@ -1,40 +1,51 @@ | |
| 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 {NftId} from "../type/NftId.sol";
         | 
| 6 4 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 7 5 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 8 | 
            -
             | 
| 6 | 
            +
             | 
| 7 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 9 8 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 10 | 
            -
            import { | 
| 9 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 10 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 11 | 
            +
            import {ReferralId, ReferralStatus} from "../type/Referral.sol";
         | 
| 12 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 13 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 14 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 12 15 |  | 
| 13 16 |  | 
| 14 17 | 
             
            interface IDistributionService is IService {
         | 
| 15 | 
            -
             | 
| 16 18 | 
             
                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  | 
| 19 | 
            +
                error ErrorDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
         | 
| 20 | 
            +
                error ErrorDistributionServiceCallerNotDistributor(address caller);
         | 
| 21 | 
            +
                error ErrorDistributionServiceInvalidReferralId(ReferralId referralId);
         | 
| 22 | 
            +
                error ErrorDistributionServiceMaxReferralsExceeded(uint256 limit, uint256 maxReferrals);
         | 
| 23 | 
            +
                error ErrorDistributionServiceDiscountTooLow(UFixed minDiscountPercentage, UFixed discountPercentage);
         | 
| 24 | 
            +
                error ErrorDistributionServiceDiscountTooHigh(UFixed maxDiscountPercentage, UFixed discountPercentage);
         | 
| 25 | 
            +
                error ErrorDistributionServiceExpiryTooLong(Seconds maxReferralLifetime, Timestamp expiryAt);
         | 
| 26 | 
            +
                error ErrorDistributionServiceInvalidReferral();
         | 
| 27 | 
            +
                error ErrorDistributionServiceExpirationInvalid(Timestamp expiryAt);
         | 
| 28 | 
            +
                error ErrorDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
         | 
| 29 | 
            +
                error ErrorDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
         | 
| 30 | 
            +
                error ErrorDistributionServiceDistributorTypeDistributionMismatch(DistributorType distributorType, NftId distributorTypeDistributionNftId, NftId distributionNftId);
         | 
| 31 | 
            +
                error ErrorDistributionServiceDistributorDistributionMismatch(NftId distributorNftId, NftId distributorDistributionNftId, NftId distributionNftId);
         | 
| 28 32 |  | 
| 29 33 | 
             
                error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 30 34 |  | 
| 31 35 | 
             
                error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
         | 
| 32 36 | 
             
                error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
         | 
| 33 37 |  | 
| 34 | 
            -
                error  | 
| 38 | 
            +
                error ErrorDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
         | 
| 35 39 | 
             
                error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
         | 
| 40 | 
            +
                error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
         | 
| 36 41 |  | 
| 37 42 | 
             
                event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
         | 
| 43 | 
            +
                event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
         | 
| 44 | 
            +
                event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
         | 
| 45 | 
            +
                event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
         | 
| 46 | 
            +
                event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
         | 
| 47 | 
            +
                event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
         | 
| 48 | 
            +
                event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
         | 
| 38 49 |  | 
| 39 50 | 
             
                function createDistributorType(
         | 
| 40 51 | 
             
                    string memory name,
         | 
| @@ -42,7 +53,7 @@ interface IDistributionService is IService { | |
| 42 53 | 
             
                    UFixed maxDiscountPercentage,
         | 
| 43 54 | 
             
                    UFixed commissionPercentage,
         | 
| 44 55 | 
             
                    uint32 maxReferralCount,
         | 
| 45 | 
            -
                     | 
| 56 | 
            +
                    Seconds maxReferralLifetime,
         | 
| 46 57 | 
             
                    bool allowSelfReferrals,
         | 
| 47 58 | 
             
                    bool allowRenewals,
         | 
| 48 59 | 
             
                    bytes memory data
         | 
| @@ -56,12 +67,11 @@ interface IDistributionService is IService { | |
| 56 67 | 
             
                    bytes memory data
         | 
| 57 68 | 
             
                ) external returns (NftId distributorNftId);
         | 
| 58 69 |  | 
| 59 | 
            -
                 | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                 | 
| 64 | 
            -
                // ) external;
         | 
| 70 | 
            +
                function changeDistributorType(
         | 
| 71 | 
            +
                    NftId distributorNftId,
         | 
| 72 | 
            +
                    DistributorType newDistributorType,
         | 
| 73 | 
            +
                    bytes memory data
         | 
| 74 | 
            +
                ) external;
         | 
| 65 75 |  | 
| 66 76 | 
             
                function createReferral(
         | 
| 67 77 | 
             
                    NftId distributorNftId,
         | 
| @@ -98,4 +108,8 @@ interface IDistributionService is IService { | |
| 98 108 | 
             
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 99 109 | 
             
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 100 110 | 
             
                function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                /// @dev Returns the discount percentage for the provided referral code.
         | 
| 113 | 
            +
                /// The function retuns both the percentage and the status of the referral code.
         | 
| 114 | 
            +
                function getDiscountPercentage(InstanceReader instanceReader, ReferralId referralId) external view returns (UFixed discountPercentage, ReferralStatus status);
         | 
| 101 115 | 
             
            }
         |