@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1e6957-384
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 +137 -333
- 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 +760 -278
- 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 +485 -26
- 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 +588 -220
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +227 -20
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +275 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +479 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -497
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +475 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -397
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +227 -131
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -201
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
- 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 +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
- 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 +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
- 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} +55 -197
- 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/{shared/KeyValueStore.sol/KeyValueStore.json → instance/IBaseStore.sol/IBaseStore.json} +34 -227
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +587 -64
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +405 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +625 -182
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1154 -380
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +363 -92
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1645 -849
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +419 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +160 -102
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1300 -1842
- 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 +46 -5
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -365
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +473 -42
- 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 +103 -143
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -333
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +195 -95
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -448
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +474 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +502 -364
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +212 -112
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -246
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -426
- 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 +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +246 -102
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +177 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +266 -435
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +474 -40
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +204 -120
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +405 -102
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -236
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +511 -303
- 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 +213 -105
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +177 -129
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +258 -427
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- 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/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +913 -404
- 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 +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +159 -87
- 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 +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +495 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +511 -20
- 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 +86 -287
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +198 -128
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/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 +92 -103
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -143
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
- 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 +84 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -332
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +41 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- 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 +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
- 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 +1635 -465
- 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 +211 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +162 -94
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
- 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 +180 -77
- 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 +35 -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 +28 -4
- 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 +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -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 +93 -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/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- 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 +134 -79
- 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 +401 -313
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +128 -4
- package/contracts/authorization/Authorization.sol +179 -207
- package/contracts/authorization/IAccess.sol +29 -11
- package/contracts/authorization/IAccessAdmin.sol +89 -83
- package/contracts/authorization/IAuthorization.sol +9 -37
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +235 -25
- package/contracts/distribution/BasicDistribution.sol +21 -19
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +46 -96
- package/contracts/distribution/DistributionService.sol +243 -132
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +47 -29
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
- 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 +113 -43
- package/contracts/instance/IInstanceService.sol +61 -34
- package/contracts/instance/Instance.sol +201 -104
- package/contracts/instance/InstanceAdmin.sol +218 -177
- package/contracts/instance/InstanceAuthorizationV3.sol +154 -83
- package/contracts/instance/InstanceReader.sol +456 -255
- package/contracts/instance/InstanceService.sol +333 -262
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +153 -107
- 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 +13 -10
- 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 +29 -20
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +3 -7
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +11 -25
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +40 -43
- package/contracts/pool/BasicPoolAuthorization.sol +39 -13
- package/contracts/pool/BundleService.sol +200 -155
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +42 -46
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +145 -142
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +413 -233
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +144 -47
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +11 -15
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +394 -185
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +48 -11
- package/contracts/product/IPolicyService.sol +61 -39
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +434 -288
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +198 -108
- package/contracts/product/RiskService.sol +189 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +70 -32
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +367 -207
- package/contracts/registry/RegistryAdmin.sol +99 -291
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +199 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +279 -239
- package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +72 -142
- package/contracts/shared/ComponentService.sol +428 -388
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +74 -54
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -9
- package/contracts/shared/PolicyHolder.sol +18 -54
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +270 -71
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +526 -245
- package/contracts/staking/StakingLib.sol +195 -0
- package/contracts/staking/StakingManager.sol +12 -9
- package/contracts/staking/StakingReader.sol +70 -82
- package/contracts/staking/StakingService.sol +62 -152
- package/contracts/staking/StakingServiceManager.sol +7 -5
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +73 -46
- package/contracts/type/Amount.sol +19 -0
- package/contracts/type/Blocknumber.sol +24 -23
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/ClaimId.sol +6 -1
- 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 +7 -0
- package/contracts/type/ObjectType.sol +73 -37
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +40 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +14 -7
- package/contracts/type/UFixed.sol +38 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +94 -46
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +8 -5
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakeManagerLib.sol +0 -231
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -0,0 +1,132 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 5 | 
            +
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 | 
            +
            import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 11 | 
            +
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 12 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            +
            import {StakingStore} from "./StakingStore.sol";
         | 
| 14 | 
            +
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 15 | 
            +
             | 
| 16 | 
            +
             | 
| 17 | 
            +
            contract TargetHandler is
         | 
| 18 | 
            +
                Initializable,
         | 
| 19 | 
            +
                AccessManaged,
         | 
| 20 | 
            +
                ITargetLimitHandler
         | 
| 21 | 
            +
            {
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                event LogTargetHandlerUpdateTriggersSet(uint16 tvlUpdatesTrigger, UFixed minTvlRatioTrigger, Blocknumber lastUpdateIn);
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                IRegistry private _registry;
         | 
| 26 | 
            +
                StakingStore private _store;
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                /// @dev Update trigger value: Number of TVL updates below which limit updates are suppressed
         | 
| 29 | 
            +
                uint16 private _tvlUpdatesTrigger; 
         | 
| 30 | 
            +
                /// @dev Maximum TVL ratio: Any ratio above this value will trigger a limit update
         | 
| 31 | 
            +
                UFixed private _minTvlRatioTrigger;
         | 
| 32 | 
            +
                Blocknumber private _lastUpdateIn;
         | 
| 33 | 
            +
             | 
| 34 | 
            +
             | 
| 35 | 
            +
                constructor (
         | 
| 36 | 
            +
                    IRegistry registry,
         | 
| 37 | 
            +
                    StakingStore stakingStore
         | 
| 38 | 
            +
                )
         | 
| 39 | 
            +
                    AccessManaged(msg.sender)
         | 
| 40 | 
            +
                {
         | 
| 41 | 
            +
                    // set final authority and registry
         | 
| 42 | 
            +
                    setAuthority(registry.getAuthority());
         | 
| 43 | 
            +
                    _registry = registry;
         | 
| 44 | 
            +
                    _store = stakingStore;
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    // set default trigger values
         | 
| 47 | 
            +
                    _setUpdateTriggers(
         | 
| 48 | 
            +
                        10, // check after 2 TVL updates
         | 
| 49 | 
            +
                        UFixedLib.toUFixed(1, -1)); // 10% deviation from baseline TVL
         | 
| 50 | 
            +
                }
         | 
| 51 | 
            +
             | 
| 52 | 
            +
             | 
| 53 | 
            +
                // TODO do we really need this?
         | 
| 54 | 
            +
                // if so: add onlyDeployer (new base contract? also for reader)
         | 
| 55 | 
            +
                // if not: remove oz intializer/initializable
         | 
| 56 | 
            +
                function initialize()
         | 
| 57 | 
            +
                    external
         | 
| 58 | 
            +
                    initializer()
         | 
| 59 | 
            +
                { }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                //--- staking functions -------------------------------------------------------//
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                /// @dev Sets the TVL update triggers.
         | 
| 64 | 
            +
                function setUpdateTriggers(
         | 
| 65 | 
            +
                    uint16 tvlUpdatesTrigger,
         | 
| 66 | 
            +
                    UFixed minTvlRatioTrigger
         | 
| 67 | 
            +
                )
         | 
| 68 | 
            +
                    external
         | 
| 69 | 
            +
                    restricted()
         | 
| 70 | 
            +
                {
         | 
| 71 | 
            +
                    _setUpdateTriggers(tvlUpdatesTrigger, minTvlRatioTrigger);
         | 
| 72 | 
            +
                }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                //--- ITargetLimitHandler -----------------------------------------------------//
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                /// @inheritdoc ITargetLimitHandler
         | 
| 77 | 
            +
                // Current implementation only considers the TVL amounts. 
         | 
| 78 | 
            +
                // Future implementations may also consider target or token specific factors. 
         | 
| 79 | 
            +
                function isLimitUpdateRequired(
         | 
| 80 | 
            +
                    NftId, // targetNftId
         | 
| 81 | 
            +
                    address , // token
         | 
| 82 | 
            +
                    uint16 tvlUpdatesCount,
         | 
| 83 | 
            +
                    Amount baselineTvlAmount, 
         | 
| 84 | 
            +
                    Amount currentTvlAmount
         | 
| 85 | 
            +
                )
         | 
| 86 | 
            +
                    external 
         | 
| 87 | 
            +
                    virtual
         | 
| 88 | 
            +
                    view
         | 
| 89 | 
            +
                    returns (bool updateIsRequired)
         | 
| 90 | 
            +
                {
         | 
| 91 | 
            +
                    // no update required if below the TVL updates trigger
         | 
| 92 | 
            +
                    if (tvlUpdatesCount < _tvlUpdatesTrigger) {
         | 
| 93 | 
            +
                        return false;
         | 
| 94 | 
            +
                    }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                    // no update required if both amounts are zero
         | 
| 97 | 
            +
                    Amount zero = AmountLib.zero();
         | 
| 98 | 
            +
                    if (baselineTvlAmount == zero && currentTvlAmount == zero) {
         | 
| 99 | 
            +
                        return false;
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    // update required if one amount is zero
         | 
| 102 | 
            +
                    } else if (baselineTvlAmount == zero || currentTvlAmount == zero) {
         | 
| 103 | 
            +
                        return true;
         | 
| 104 | 
            +
                    }
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                    // calculate the ratio of the current TVL amount to the baseline TVL amount
         | 
| 107 | 
            +
                    UFixed baseline = baselineTvlAmount.toUFixed();
         | 
| 108 | 
            +
                    UFixed current = currentTvlAmount.toUFixed();
         | 
| 109 | 
            +
                    UFixed ratio;
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                    if (baseline > current) { ratio = baseline / current; }
         | 
| 112 | 
            +
                    else { ratio = current / baseline; }
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                    // update required if the ratio is above the maximum TVL ratio
         | 
| 115 | 
            +
                    return ratio >= _minTvlRatioTrigger;
         | 
| 116 | 
            +
                }
         | 
| 117 | 
            +
             | 
| 118 | 
            +
             | 
| 119 | 
            +
                function _setUpdateTriggers(
         | 
| 120 | 
            +
                    uint16 tvlUpdatesTrigger,
         | 
| 121 | 
            +
                    UFixed minTvlRatioTrigger
         | 
| 122 | 
            +
                )
         | 
| 123 | 
            +
                    internal
         | 
| 124 | 
            +
                {
         | 
| 125 | 
            +
                    Blocknumber lastUpdateIn = _lastUpdateIn;
         | 
| 126 | 
            +
                    _tvlUpdatesTrigger = tvlUpdatesTrigger;
         | 
| 127 | 
            +
                    _minTvlRatioTrigger = minTvlRatioTrigger;
         | 
| 128 | 
            +
                    _lastUpdateIn = BlocknumberLib.current();
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                    emit LogTargetHandlerUpdateTriggersSet(tvlUpdatesTrigger, minTvlRatioTrigger, lastUpdateIn);
         | 
| 131 | 
            +
                }
         | 
| 132 | 
            +
            }
         | 
| @@ -3,8 +3,10 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 5 |  | 
| 6 | 
            +
            import {IStaking} from "./IStaking.sol";
         | 
| 7 | 
            +
             | 
| 6 8 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 7 | 
            -
            import { | 
| 9 | 
            +
            import {ChainIdLib} from "../type/ChainId.sol";
         | 
| 8 10 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 11 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 10 12 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| @@ -37,7 +39,8 @@ library TargetManagerLib { | |
| 37 39 | 
             
                        revert IStaking.ErrorStakingTargetNotFound(targetNftId);
         | 
| 38 40 | 
             
                    }
         | 
| 39 41 |  | 
| 40 | 
            -
                     | 
| 42 | 
            +
                    ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
         | 
| 43 | 
            +
                    checkLockingPeriod(reader, targetNftId, targetType, lockingPeriod);
         | 
| 41 44 |  | 
| 42 45 | 
             
                    targetInfo = reader.getTargetInfo(targetNftId);
         | 
| 43 46 | 
             
                    oldLockingPeriod = targetInfo.lockingPeriod;
         | 
| @@ -65,7 +68,8 @@ library TargetManagerLib { | |
| 65 68 | 
             
                        revert IStaking.ErrorStakingTargetNotFound(targetNftId);
         | 
| 66 69 | 
             
                    }
         | 
| 67 70 |  | 
| 68 | 
            -
                     | 
| 71 | 
            +
                    ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
         | 
| 72 | 
            +
                    checkRewardRate(reader, targetNftId, targetType, rewardRate);
         | 
| 69 73 |  | 
| 70 74 | 
             
                    targetInfo = reader.getTargetInfo(targetNftId);
         | 
| 71 75 | 
             
                    oldRewardRate = targetInfo.rewardRate;
         | 
| @@ -79,8 +83,8 @@ library TargetManagerLib { | |
| 79 83 | 
             
                    StakingReader stakingReader,
         | 
| 80 84 | 
             
                    NftId targetNftId,
         | 
| 81 85 | 
             
                    ObjectType expectedObjectType,
         | 
| 82 | 
            -
                    Seconds  | 
| 83 | 
            -
                    UFixed  | 
| 86 | 
            +
                    Seconds lockingPeriod,
         | 
| 87 | 
            +
                    UFixed rewardRate
         | 
| 84 88 | 
             
                )
         | 
| 85 89 | 
             
                    external
         | 
| 86 90 | 
             
                    view
         | 
| @@ -95,63 +99,54 @@ library TargetManagerLib { | |
| 95 99 | 
             
                        revert IStaking.ErrorStakingTargetAlreadyRegistered(targetNftId);
         | 
| 96 100 | 
             
                    }
         | 
| 97 101 |  | 
| 98 | 
            -
                    //  | 
| 99 | 
            -
                     | 
| 102 | 
            +
                    // get setup info for additional checks
         | 
| 103 | 
            +
                    IStaking.SupportInfo memory supportInfo = stakingReader.getSupportInfo(expectedObjectType);
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                    // check if type is supported and new targets of that type are allowed
         | 
| 106 | 
            +
                    if (!(supportInfo.isSupported && supportInfo.allowNewTargets)) {
         | 
| 100 107 | 
             
                        revert IStaking.ErrorStakingTargetTypeNotSupported(targetNftId, expectedObjectType);
         | 
| 101 108 | 
             
                    }
         | 
| 102 109 |  | 
| 103 | 
            -
                     | 
| 104 | 
            -
                     | 
| 110 | 
            +
                    // check if cross chain targets are allowed (if applicable)
         | 
| 111 | 
            +
                    bool isCurrentChain = ChainIdLib.isCurrentChain(targetNftId);
         | 
| 112 | 
            +
                    if (!supportInfo.allowCrossChain && !isCurrentChain) {
         | 
| 113 | 
            +
                        revert IStaking.ErrorStakingCrossChainTargetsNotSupported(targetNftId, expectedObjectType);
         | 
| 114 | 
            +
                    }
         | 
| 105 115 |  | 
| 106 | 
            -
                    // target nft id must be known and registered with the expected object type
         | 
| 107 | 
            -
                    if ( | 
| 108 | 
            -
                         | 
| 109 | 
            -
             | 
| 110 | 
            -
                         | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
                             | 
| 116 | 
            +
                    // additional check for current chain target: target nft id must be known and registered with the expected object type
         | 
| 117 | 
            +
                    if (isCurrentChain) {
         | 
| 118 | 
            +
                        if (!registry.isRegistered(targetNftId)) {
         | 
| 119 | 
            +
                            revert IStaking.ErrorStakingTargetNotFound(targetNftId);
         | 
| 120 | 
            +
                        } else {
         | 
| 121 | 
            +
                            // check that expected object type matches with registered object type
         | 
| 122 | 
            +
                            ObjectType actualObjectType = registry.getObjectInfo(targetNftId).objectType;
         | 
| 123 | 
            +
                            if (actualObjectType != expectedObjectType) {
         | 
| 124 | 
            +
                                revert IStaking.ErrorStakingTargetUnexpectedObjectType(targetNftId, expectedObjectType, actualObjectType);
         | 
| 125 | 
            +
                            }
         | 
| 114 126 | 
             
                        }
         | 
| 115 127 | 
             
                    }
         | 
| 116 | 
            -
                }
         | 
| 117 128 |  | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
                     | 
| 121 | 
            -
                    pure 
         | 
| 122 | 
            -
                    returns (bool isSupported)
         | 
| 123 | 
            -
                {
         | 
| 124 | 
            -
                    if(objectType == PROTOCOL()) { return true; }
         | 
| 125 | 
            -
                    if(objectType == INSTANCE()) { return true; }
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                    return false;
         | 
| 129 | 
            +
                    // check locking period and reward rate
         | 
| 130 | 
            +
                    _checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
         | 
| 131 | 
            +
                    _checkRewardRate(targetNftId, rewardRate, supportInfo);
         | 
| 128 132 | 
             
                }
         | 
| 129 133 |  | 
| 130 134 |  | 
| 131 | 
            -
                function checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
         | 
| 135 | 
            +
                function checkLockingPeriod(StakingReader reader, NftId targetNftId, ObjectType targetType, Seconds lockingPeriod)
         | 
| 132 136 | 
             
                    public 
         | 
| 133 | 
            -
                     | 
| 137 | 
            +
                    view
         | 
| 134 138 | 
             
                {
         | 
| 135 | 
            -
                     | 
| 136 | 
            -
                     | 
| 137 | 
            -
                        revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
         | 
| 138 | 
            -
                    }
         | 
| 139 | 
            -
             | 
| 140 | 
            -
                    // check locking period <= max locking period
         | 
| 141 | 
            -
                    if (lockingPeriod > getMaxLockingPeriod()) {
         | 
| 142 | 
            -
                        revert IStaking.ErrorStakingLockingPeriodTooLong(targetNftId, getMaxLockingPeriod(), lockingPeriod);
         | 
| 143 | 
            -
                    }
         | 
| 139 | 
            +
                    IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
         | 
| 140 | 
            +
                    _checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
         | 
| 144 141 | 
             
                }
         | 
| 145 142 |  | 
| 146 143 |  | 
| 147 | 
            -
                function checkRewardRate(NftId targetNftId, UFixed rewardRate)
         | 
| 144 | 
            +
                function checkRewardRate(StakingReader reader, NftId targetNftId, ObjectType targetType, UFixed rewardRate)
         | 
| 148 145 | 
             
                    public
         | 
| 149 | 
            -
                     | 
| 146 | 
            +
                    view
         | 
| 150 147 | 
             
                {
         | 
| 151 | 
            -
                     | 
| 152 | 
            -
                     | 
| 153 | 
            -
                        revert IStaking.ErrorStakingRewardRateTooHigh(targetNftId, getMaxRewardRate(), rewardRate);
         | 
| 154 | 
            -
                    }
         | 
| 148 | 
            +
                    IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
         | 
| 149 | 
            +
                    _checkRewardRate(targetNftId, rewardRate, supportInfo);
         | 
| 155 150 | 
             
                }
         | 
| 156 151 |  | 
| 157 152 |  | 
| @@ -160,7 +155,7 @@ library TargetManagerLib { | |
| 160 155 | 
             
                    UFixed stakingRate
         | 
| 161 156 | 
             
                )
         | 
| 162 157 | 
             
                    public
         | 
| 163 | 
            -
                     | 
| 158 | 
            +
                    pure
         | 
| 164 159 | 
             
                    returns (Amount dipAmount)
         | 
| 165 160 | 
             
                {
         | 
| 166 161 | 
             
                    dipAmount = tokenAmount.multiplyWith(stakingRate);
         | 
| @@ -190,6 +185,10 @@ library TargetManagerLib { | |
| 190 185 | 
             
                    return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
         | 
| 191 186 | 
             
                }
         | 
| 192 187 |  | 
| 188 | 
            +
                /// @dev the minimum locking period is 24 hours
         | 
| 189 | 
            +
                function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
         | 
| 190 | 
            +
                    return SecondsLib.toSeconds(24 * 3600);
         | 
| 191 | 
            +
                }
         | 
| 193 192 |  | 
| 194 193 | 
             
                function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
         | 
| 195 194 | 
             
                    return UFixedLib.toUFixed(33, -2);
         | 
| @@ -204,4 +203,32 @@ library TargetManagerLib { | |
| 204 203 | 
             
                function toTargetKey(NftId targetNftId) public pure returns (Key32 targetKey) {
         | 
| 205 204 | 
             
                    return targetNftId.toKey32(TARGET());
         | 
| 206 205 | 
             
                }
         | 
| 206 | 
            +
             | 
| 207 | 
            +
             | 
| 208 | 
            +
                function _checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod, IStaking.SupportInfo memory supportInfo)
         | 
| 209 | 
            +
                    private
         | 
| 210 | 
            +
                    pure
         | 
| 211 | 
            +
                {
         | 
| 212 | 
            +
                    if (lockingPeriod < supportInfo.minLockingPeriod || lockingPeriod > supportInfo.maxLockingPeriod) {
         | 
| 213 | 
            +
                        revert IStaking.ErrorStakingLockingPeriodInvalid(
         | 
| 214 | 
            +
                            targetNftId, 
         | 
| 215 | 
            +
                            lockingPeriod, 
         | 
| 216 | 
            +
                            supportInfo.minLockingPeriod,
         | 
| 217 | 
            +
                            supportInfo.maxLockingPeriod);
         | 
| 218 | 
            +
                    }
         | 
| 219 | 
            +
                }
         | 
| 220 | 
            +
             | 
| 221 | 
            +
             | 
| 222 | 
            +
                function _checkRewardRate(NftId targetNftId, UFixed rewardRate, IStaking.SupportInfo memory supportInfo) 
         | 
| 223 | 
            +
                    private
         | 
| 224 | 
            +
                    pure
         | 
| 225 | 
            +
                {
         | 
| 226 | 
            +
                    if (rewardRate < supportInfo.minRewardRate || rewardRate > supportInfo.maxRewardRate) {
         | 
| 227 | 
            +
                        revert IStaking.ErrorStakingRewardRateInvalid(
         | 
| 228 | 
            +
                            targetNftId, 
         | 
| 229 | 
            +
                            rewardRate,
         | 
| 230 | 
            +
                            supportInfo.minRewardRate,
         | 
| 231 | 
            +
                            supportInfo.maxRewardRate);
         | 
| 232 | 
            +
                    }
         | 
| 233 | 
            +
                }
         | 
| 207 234 | 
             
            }
         | 
| @@ -3,6 +3,10 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {UFixed, UFixedLib} from "./UFixed.sol";
         | 
| 5 5 |  | 
| 6 | 
            +
            /// @dev Targets: 100 trillion (worlds GDP) with 6 decimal places
         | 
| 7 | 
            +
            /// 3 trillion USD (total crypto market cap) with 12 decimal places.
         | 
| 8 | 
            +
            /// 2023 100 trillion USD => 100e12 * 1e6 = 1e20
         | 
| 9 | 
            +
            /// 2024 2 trillion crypto market cap => 2e12 * 1e18 = 2e30
         | 
| 6 10 | 
             
            type Amount is uint96;
         | 
| 7 11 |  | 
| 8 12 | 
             
            using {
         | 
| @@ -11,7 +15,9 @@ using { | |
| 11 15 | 
             
                eqAmount as ==,
         | 
| 12 16 | 
             
                nqAmount as !=,
         | 
| 13 17 | 
             
                ltAmount as <,
         | 
| 18 | 
            +
                ltAmount as <=,
         | 
| 14 19 | 
             
                gtAmount as >,
         | 
| 20 | 
            +
                gteAmount as >=,
         | 
| 15 21 | 
             
                AmountLib.add,
         | 
| 16 22 | 
             
                AmountLib.eq,
         | 
| 17 23 | 
             
                AmountLib.eqz,
         | 
| @@ -43,10 +49,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) { | |
| 43 49 | 
             
                return AmountLib.lt(a, b);
         | 
| 44 50 | 
             
            }
         | 
| 45 51 |  | 
| 52 | 
            +
            function lteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 53 | 
            +
                return AmountLib.lte(a, b);
         | 
| 54 | 
            +
            }
         | 
| 55 | 
            +
             | 
| 46 56 | 
             
            function gtAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 47 57 | 
             
                return AmountLib.gt(a, b);
         | 
| 48 58 | 
             
            }
         | 
| 49 59 |  | 
| 60 | 
            +
            function gteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 61 | 
            +
                return AmountLib.gte(a, b);
         | 
| 62 | 
            +
            }
         | 
| 63 | 
            +
             | 
| 50 64 | 
             
            library AmountLib {
         | 
| 51 65 |  | 
| 52 66 | 
             
                error ErrorAmountLibValueTooBig(uint256 amount);
         | 
| @@ -84,6 +98,11 @@ library AmountLib { | |
| 84 98 | 
             
                    return Amount.unwrap(a1) < Amount.unwrap(a2);
         | 
| 85 99 | 
             
                }
         | 
| 86 100 |  | 
| 101 | 
            +
                /// @dev return true if amount a1 is less or equal than a2
         | 
| 102 | 
            +
                function lte(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 103 | 
            +
                    return Amount.unwrap(a1) <= Amount.unwrap(a2);
         | 
| 104 | 
            +
                }
         | 
| 105 | 
            +
             | 
| 87 106 | 
             
                /// @dev return true if amount a1 is greater than a2
         | 
| 88 107 | 
             
                function gt(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 89 108 | 
             
                    return Amount.unwrap(a1) > Amount.unwrap(a2);
         | 
| @@ -1,7 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 4 | 
            +
            /// @dev Target: Cover 10 years with 1 ms block times.
         | 
| 5 | 
            +
            /// Typical block times are a few seconds.
         | 
| 6 | 
            +
            type Blocknumber is uint40;
         | 
| 5 7 |  | 
| 6 8 | 
             
            using {
         | 
| 7 9 | 
             
                gtBlocknumber as >,
         | 
| @@ -11,8 +13,14 @@ using { | |
| 11 13 | 
             
                eqBlocknumber as ==,
         | 
| 12 14 | 
             
                neBlocknumber as !=,
         | 
| 13 15 | 
             
                BlocknumberLib.toInt,
         | 
| 16 | 
            +
                BlocknumberLib.eq,
         | 
| 17 | 
            +
                BlocknumberLib.ne,
         | 
| 14 18 | 
             
                BlocknumberLib.eqz,
         | 
| 15 | 
            -
                BlocknumberLib.gtz
         | 
| 19 | 
            +
                BlocknumberLib.gtz,
         | 
| 20 | 
            +
                BlocknumberLib.gt,
         | 
| 21 | 
            +
                BlocknumberLib.gte,
         | 
| 22 | 
            +
                BlocknumberLib.lt,
         | 
| 23 | 
            +
                BlocknumberLib.lte
         | 
| 16 24 | 
             
            } for Blocknumber global;
         | 
| 17 25 |  | 
| 18 26 | 
             
            /// @dev return true if Blocknumber a is greater than Blocknumber b
         | 
| @@ -45,30 +53,23 @@ function neBlocknumber(Blocknumber a, Blocknumber b) pure returns (bool) { | |
| 45 53 | 
             
                return Blocknumber.unwrap(a) != Blocknumber.unwrap(b);
         | 
| 46 54 | 
             
            }
         | 
| 47 55 |  | 
| 48 | 
            -
            /// @dev Converts the uint256 to a Blocknumber.
         | 
| 49 | 
            -
            function toBlocknumber(uint256 blocknum) pure returns (Blocknumber) {
         | 
| 50 | 
            -
                return Blocknumber.wrap(uint32(blocknum));
         | 
| 51 | 
            -
            }
         | 
| 52 56 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
                return BlocknumberLib.currentBlocknumber();
         | 
| 55 | 
            -
            }
         | 
| 57 | 
            +
            library BlocknumberLib {
         | 
| 56 58 |  | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
                return toBlocknumber(0);
         | 
| 61 | 
            -
            }
         | 
| 59 | 
            +
                function zero() public pure returns (Blocknumber) {
         | 
| 60 | 
            +
                    return Blocknumber.wrap(0);
         | 
| 61 | 
            +
                }
         | 
| 62 62 |  | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                 | 
| 66 | 
            -
            }
         | 
| 63 | 
            +
                function max() public pure returns (Blocknumber) {
         | 
| 64 | 
            +
                    return Blocknumber.wrap(type(uint40).max);
         | 
| 65 | 
            +
                }
         | 
| 67 66 |  | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
                 | 
| 71 | 
            -
             | 
| 67 | 
            +
                function current() public view returns (Blocknumber) {
         | 
| 68 | 
            +
                    return Blocknumber.wrap(uint40(block.number));
         | 
| 69 | 
            +
                }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                function toBlocknumber(uint256 blocknum) public pure returns (Blocknumber) {
         | 
| 72 | 
            +
                    return Blocknumber.wrap(uint32(blocknum));
         | 
| 72 73 | 
             
                }
         | 
| 73 74 |  | 
| 74 75 | 
             
                /// @dev return true iff blocknumber is 0
         | 
| @@ -76,7 +77,7 @@ library BlocknumberLib { | |
| 76 77 | 
             
                    return Blocknumber.unwrap(blocknumber) == 0;
         | 
| 77 78 | 
             
                }
         | 
| 78 79 |  | 
| 79 | 
            -
                /// @dev return true iff blocknumber is 0
         | 
| 80 | 
            +
                /// @dev return true iff blocknumber is > 0
         | 
| 80 81 | 
             
                function gtz(Blocknumber blocknumber) public pure returns (bool) {
         | 
| 81 82 | 
             
                    return Blocknumber.unwrap(blocknumber) > 0;
         | 
| 82 83 | 
             
                }
         | 
| @@ -0,0 +1,101 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {NftId} from "./NftId.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            /// @dev Target: Cover chain IDs up to 26 decimal places.
         | 
| 7 | 
            +
            /// Current longest chain ID seems to be DCHAIN Testnet: 2713017997578000 with 16 decimal places 
         | 
| 8 | 
            +
            type ChainId is uint96;
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            using {
         | 
| 11 | 
            +
                eqChainId as ==,
         | 
| 12 | 
            +
                neChainId as !=,
         | 
| 13 | 
            +
                ChainIdLib.toInt,
         | 
| 14 | 
            +
                ChainIdLib.eqz,
         | 
| 15 | 
            +
                ChainIdLib.gtz
         | 
| 16 | 
            +
            } for ChainId global;
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 19 | 
            +
            /// @dev return true if ChainId a is equal to ChainId b
         | 
| 20 | 
            +
            function eqChainId(ChainId a, ChainId b) pure returns (bool) {
         | 
| 21 | 
            +
                return ChainId.unwrap(a) == ChainId.unwrap(b);
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            /// @dev return true if ChainId a is not equal to ChainId b
         | 
| 25 | 
            +
            function neChainId(ChainId a, ChainId b) pure returns (bool) {
         | 
| 26 | 
            +
                return ChainId.unwrap(a) != ChainId.unwrap(b);
         | 
| 27 | 
            +
            }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
             | 
| 30 | 
            +
            library ChainIdLib {
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                error ErrorChainIdLibValueTooBig(uint256 chainId);
         | 
| 33 | 
            +
             | 
| 34 | 
            +
             | 
| 35 | 
            +
                function zero() public pure returns (ChainId) {
         | 
| 36 | 
            +
                    return ChainId.wrap(0);
         | 
| 37 | 
            +
                }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
                function max() public pure returns (ChainId) {
         | 
| 41 | 
            +
                    return ChainId.wrap(_max());
         | 
| 42 | 
            +
                }
         | 
| 43 | 
            +
             | 
| 44 | 
            +
             | 
| 45 | 
            +
                function current() public view returns (ChainId) {
         | 
| 46 | 
            +
                    return toChainId(block.chainid);
         | 
| 47 | 
            +
                }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
             | 
| 50 | 
            +
                /// @dev return true iff chainId is 0
         | 
| 51 | 
            +
                function eqz(ChainId chainId) public pure returns (bool) {
         | 
| 52 | 
            +
                    return ChainId.unwrap(chainId) == 0;
         | 
| 53 | 
            +
                }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
             | 
| 56 | 
            +
                /// @dev return true iff chainId is > 0
         | 
| 57 | 
            +
                function gtz(ChainId chainId) public pure returns (bool) {
         | 
| 58 | 
            +
                    return ChainId.unwrap(chainId) > 0;
         | 
| 59 | 
            +
                }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
             | 
| 62 | 
            +
                /// @dev converts the uint into ChainId
         | 
| 63 | 
            +
                /// function reverts if value is exceeding max ChainId value
         | 
| 64 | 
            +
                function toChainId(uint256 chainId) public pure returns (ChainId) {
         | 
| 65 | 
            +
                    if(chainId > _max()) {
         | 
| 66 | 
            +
                        revert ErrorChainIdLibValueTooBig(chainId);
         | 
| 67 | 
            +
                    }
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    return ChainId.wrap(uint96(chainId));
         | 
| 70 | 
            +
                }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
             | 
| 73 | 
            +
                /// @dev returns true iff NFT ID is from the current chain.
         | 
| 74 | 
            +
                function isCurrentChain(NftId nftId) public view returns (bool) {
         | 
| 75 | 
            +
                    return _fromNftId(nftId) == block.chainid;
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
             | 
| 79 | 
            +
                function fromNftId(NftId nftId) public pure returns (ChainId) {
         | 
| 80 | 
            +
                    return toChainId(_fromNftId(nftId));
         | 
| 81 | 
            +
                }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
             | 
| 84 | 
            +
                /// @dev converts the ChainId to a uint256
         | 
| 85 | 
            +
                function toInt(ChainId chainId) public pure returns (uint256) {
         | 
| 86 | 
            +
                    return uint256(uint96(ChainId.unwrap(chainId)));
         | 
| 87 | 
            +
                }
         | 
| 88 | 
            +
             | 
| 89 | 
            +
             | 
| 90 | 
            +
                function _fromNftId(NftId nftId) internal pure returns (uint256 chainIdInt) {
         | 
| 91 | 
            +
                    uint256 nftIdInt = nftId.toInt();
         | 
| 92 | 
            +
                    uint256 chainIdDigits = nftIdInt % 100; // Extract the last two digits
         | 
| 93 | 
            +
                    chainIdInt = nftIdInt % 10**(chainIdDigits + 2) / 100; // Extract the chainId
         | 
| 94 | 
            +
                }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
             | 
| 97 | 
            +
                function _max() internal pure returns (uint96) {
         | 
| 98 | 
            +
                    // IMPORTANT: type nees to match with actual definition for Amount
         | 
| 99 | 
            +
                    return type(uint96).max;
         | 
| 100 | 
            +
                }
         | 
| 101 | 
            +
            }
         | 
| @@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol"; | |
| 12 12 | 
             
            using {
         | 
| 13 13 | 
             
                eqClaimId as ==, 
         | 
| 14 14 | 
             
                neClaimId as !=, 
         | 
| 15 | 
            +
                ClaimIdLib.eq,
         | 
| 15 16 | 
             
                ClaimIdLib.eqz,
         | 
| 16 17 | 
             
                ClaimIdLib.gtz,
         | 
| 17 18 | 
             
                ClaimIdLib.toInt,
         | 
| @@ -21,7 +22,7 @@ using { | |
| 21 22 |  | 
| 22 23 | 
             
            // pure free functions for operators
         | 
| 23 24 | 
             
            function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
         | 
| 24 | 
            -
                return  | 
| 25 | 
            +
                return ClaimIdLib.eq(a, b);
         | 
| 25 26 | 
             
            }
         | 
| 26 27 |  | 
| 27 28 | 
             
            function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
         | 
| @@ -68,6 +69,10 @@ library ClaimIdLib { | |
| 68 69 | 
             
                    return ClaimId.unwrap(a) > 0;
         | 
| 69 70 | 
             
                }
         | 
| 70 71 |  | 
| 72 | 
            +
                function eq(ClaimId a, ClaimId b) public pure returns (bool) {
         | 
| 73 | 
            +
                    return ClaimId.unwrap(a) == ClaimId.unwrap(b);
         | 
| 74 | 
            +
                }
         | 
| 75 | 
            +
             | 
| 71 76 | 
             
                /// @dev Returns true if the value is zero (== 0).
         | 
| 72 77 | 
             
                function eqz(ClaimId a) public pure returns (bool) {
         | 
| 73 78 | 
             
                    return ClaimId.unwrap(a) == 0;
         | 
    
        package/contracts/type/Fee.sol
    CHANGED
    
    | @@ -5,16 +5,16 @@ import {Amount, AmountLib} from "./Amount.sol"; | |
| 5 5 | 
             
            import {UFixed, UFixedLib} from "./UFixed.sol";
         | 
| 6 6 |  | 
| 7 7 | 
             
            struct Fee {
         | 
| 8 | 
            +
                // slot 0
         | 
| 8 9 | 
             
                UFixed fractionalFee;
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                uint256 fixedFee;
         | 
| 10 | 
            +
                Amount fixedFee;
         | 
| 11 11 | 
             
            }
         | 
| 12 12 |  | 
| 13 13 | 
             
            library FeeLib {
         | 
| 14 14 |  | 
| 15 15 | 
             
                /// @dev Return a zero fee struct (0, 0)
         | 
| 16 16 | 
             
                function zero() public pure returns (Fee memory fee) {
         | 
| 17 | 
            -
                    return Fee(UFixed.wrap(0),  | 
| 17 | 
            +
                    return Fee(UFixed.wrap(0), AmountLib.zero());
         | 
| 18 18 | 
             
                }
         | 
| 19 19 |  | 
| 20 20 | 
             
                /// @dev Converts the uint256 to a fee struct.
         | 
| @@ -22,7 +22,7 @@ library FeeLib { | |
| 22 22 | 
             
                    UFixed fractionalFee,
         | 
| 23 23 | 
             
                    uint256 fixedFee
         | 
| 24 24 | 
             
                ) public pure returns (Fee memory fee) {
         | 
| 25 | 
            -
                    return Fee(fractionalFee, fixedFee);
         | 
| 25 | 
            +
                    return Fee(fractionalFee, AmountLib.toAmount(fixedFee));
         | 
| 26 26 | 
             
                }
         | 
| 27 27 |  | 
| 28 28 | 
             
                /// @dev Calculates fee and net amounts for the provided parameters
         | 
| @@ -41,14 +41,14 @@ library FeeLib { | |
| 41 41 | 
             
                    if(gtz(fee)) {
         | 
| 42 42 | 
             
                        UFixed fractionalAmount = 
         | 
| 43 43 | 
             
                            amount.toUFixed() * fee.fractionalFee;
         | 
| 44 | 
            -
                        feeAmount = AmountLib.toAmount(fractionalAmount.toInt() + fee.fixedFee | 
| 44 | 
            +
                        feeAmount = AmountLib.toAmount(fractionalAmount.toInt()) + fee.fixedFee;
         | 
| 45 45 | 
             
                        netAmount = netAmount - feeAmount;
         | 
| 46 46 | 
             
                    }
         | 
| 47 47 | 
             
                }
         | 
| 48 48 |  | 
| 49 49 | 
             
                /// @dev Return the percent fee struct (x%, 0)
         | 
| 50 50 | 
             
                function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
         | 
| 51 | 
            -
                    return Fee(UFixedLib.toUFixed(percent, -2),  | 
| 51 | 
            +
                    return Fee(UFixedLib.toUFixed(percent, -2), AmountLib.zero());
         | 
| 52 52 | 
             
                }
         | 
| 53 53 |  | 
| 54 54 | 
             
                // pure free functions for operators
         | 
| @@ -57,10 +57,10 @@ library FeeLib { | |
| 57 57 | 
             
                }
         | 
| 58 58 |  | 
| 59 59 | 
             
                function gtz(Fee memory fee) public pure returns (bool) {
         | 
| 60 | 
            -
                    return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee | 
| 60 | 
            +
                    return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee.gtz();
         | 
| 61 61 | 
             
                }
         | 
| 62 62 |  | 
| 63 63 | 
             
                function eqz(Fee memory fee) public pure returns (bool) {
         | 
| 64 | 
            -
                    return fee.fixedFee  | 
| 64 | 
            +
                    return fee.fixedFee.eqz() && UFixed.unwrap(fee.fractionalFee) == 0;
         | 
| 65 65 | 
             
                }
         | 
| 66 66 | 
             
            }
         | 
    
        package/contracts/type/Key32.sol
    CHANGED
    
    | @@ -28,8 +28,8 @@ library Key32Lib { | |
| 28 28 |  | 
| 29 29 | 
             
                uint8 public constant TYPE_SHIFT = 31 * 8;
         | 
| 30 30 | 
             
                uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
         | 
| 31 | 
            -
                bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); //  | 
| 32 | 
            -
                bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); //  | 
| 31 | 
            +
                bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // [32] byte in bytes32
         | 
| 32 | 
            +
                bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // [0..31] bytes in bytes32
         | 
| 33 33 |  | 
| 34 34 | 
             
                function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
         | 
| 35 35 | 
             
                    uint256 uintObjectType = ObjectType.unwrap(objectType);
         |