@etherisc/gif-next 0.0.2-858f0b8-208 → 0.0.2-85e1eb3-876
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 +89 -9
- 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 +790 -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 +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +190 -464
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +109 -356
- 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 +209 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
- 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 +1484 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1439 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +567 -67
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +385 -60
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +573 -165
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1696 -724
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +974 -651
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +135 -333
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- 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 -133
- 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 +111 -293
- 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 +177 -97
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +164 -354
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +386 -482
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +168 -144
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +259 -153
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +142 -183
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +524 -288
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +140 -333
- 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 +730 -549
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +206 -114
- 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 +159 -99
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +288 -409
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- 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 +187 -123
- 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 +358 -127
- 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 -226
- 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 +477 -373
- 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 +196 -124
- 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 +165 -137
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +280 -401
- 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 +774 -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 +795 -394
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -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 +141 -89
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -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 +99 -252
- 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 +183 -133
- 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 -93
- 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 -133
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +42 -6
- 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 +110 -292
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +48 -7
- 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 +1087 -160
- 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/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1285 -387
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +424 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +222 -105
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +175 -223
- 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 +144 -96
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +960 -732
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +131 -50
- 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 +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +174 -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 +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/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 +3 -3
- 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 +118 -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 +458 -269
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +255 -25
- package/contracts/distribution/BasicDistribution.sol +21 -18
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +44 -92
- package/contracts/distribution/DistributionService.sol +243 -131
- 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/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +102 -43
- package/contracts/instance/IInstanceService.sol +59 -34
- package/contracts/instance/Instance.sol +193 -100
- package/contracts/instance/InstanceAdmin.sol +275 -158
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
- package/contracts/instance/InstanceReader.sol +478 -251
- package/contracts/instance/InstanceService.sol +293 -236
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -2
- package/contracts/instance/RiskSet.sol +126 -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 +30 -15
- 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/oracle/BasicOracle.sol +2 -5
- 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 +9 -21
- package/contracts/oracle/OracleService.sol +119 -87
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +36 -40
- package/contracts/pool/BasicPoolAuthorization.sol +36 -13
- package/contracts/pool/BundleService.sol +140 -191
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +33 -50
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +97 -76
- package/contracts/pool/Pool.sol +142 -137
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +390 -301
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +143 -46
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +11 -14
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +385 -172
- 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 -43
- 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 +423 -307
- 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 +188 -106
- package/contracts/product/RiskService.sol +190 -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 +110 -287
- package/contracts/registry/RegistryAuthorization.sol +308 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -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 +69 -135
- package/contracts/shared/ComponentService.sol +424 -387
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +312 -0
- package/contracts/shared/IComponent.sol +6 -19
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/IKeyValueStore.sol +1 -1
- 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 +73 -51
- package/contracts/shared/KeyValueStore.sol +4 -4
- 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 +163 -65
- package/contracts/staking/IStakingService.sol +45 -78
- package/contracts/staking/Staking.sol +629 -223
- package/contracts/staking/StakingLib.sol +168 -0
- package/contracts/staking/StakingManager.sol +9 -8
- package/contracts/staking/StakingReader.sol +53 -85
- package/contracts/staking/StakingService.sol +63 -149
- package/contracts/staking/StakingServiceManager.sol +7 -5
- package/contracts/staking/StakingStore.sol +639 -350
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +19 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +92 -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 +13 -0
- 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 +4 -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 +93 -45
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- 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/InitializableCustom.sol +0 -177
- package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Key32, KeyId, Key32Lib} from "./Key32.sol";
|
5
|
+
import {NftId} from "./NftId.sol";
|
5
6
|
import {RISK} from "./ObjectType.sol";
|
6
7
|
|
7
8
|
type RiskId is bytes8;
|
@@ -10,6 +11,11 @@ type RiskId is bytes8;
|
|
10
11
|
using {
|
11
12
|
eqRiskId as ==,
|
12
13
|
neRiskId as !=,
|
14
|
+
RiskIdLib.eq,
|
15
|
+
RiskIdLib.eqz,
|
16
|
+
RiskIdLib.gtz,
|
17
|
+
RiskIdLib.toInt,
|
18
|
+
RiskIdLib.toKeyId,
|
13
19
|
RiskIdLib.toKey32
|
14
20
|
} for RiskId global;
|
15
21
|
|
@@ -26,18 +32,44 @@ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) {
|
|
26
32
|
}
|
27
33
|
|
28
34
|
library RiskIdLib {
|
29
|
-
|
30
|
-
|
31
|
-
return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
|
35
|
+
function zero() public pure returns (RiskId) {
|
36
|
+
return RiskId.wrap(bytes8(0));
|
32
37
|
}
|
33
38
|
|
34
|
-
|
35
|
-
function
|
36
|
-
return
|
39
|
+
// @dev Converts a risk id into a uint256.
|
40
|
+
function toInt(RiskId riskId) public pure returns (uint256) {
|
41
|
+
return uint64(RiskId.unwrap(riskId));
|
42
|
+
}
|
43
|
+
|
44
|
+
// @dev Converts a risk id string with a product NftId into a risk id.
|
45
|
+
function toRiskId(NftId productNftId, bytes32 risk) public pure returns (RiskId) {
|
46
|
+
return RiskId.wrap(bytes8(keccak256(abi.encode(productNftId, risk))));
|
47
|
+
}
|
48
|
+
|
49
|
+
/// @dev Returns the key32 value for the specified risk id.
|
50
|
+
function toKey32(RiskId riskId) public pure returns (Key32 key) {
|
51
|
+
return Key32Lib.toKey32(RISK(), toKeyId(riskId));
|
37
52
|
}
|
38
53
|
|
39
54
|
/// @dev Returns the key id value for the specified nft id
|
40
55
|
function toKeyId(RiskId id) public pure returns (KeyId keyId) {
|
41
56
|
return KeyId.wrap(bytes31(RiskId.unwrap(id)));
|
42
57
|
}
|
58
|
+
|
59
|
+
function toRiskId(KeyId keyId) public pure returns (RiskId riskId) {
|
60
|
+
riskId = RiskId.wrap(bytes8(KeyId.unwrap(keyId)));
|
61
|
+
assert(toInt(riskId) < 2**64);
|
62
|
+
}
|
63
|
+
|
64
|
+
function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
|
65
|
+
return eqRiskId(a, b);
|
66
|
+
}
|
67
|
+
|
68
|
+
function eqz(RiskId a) public pure returns (bool isZero) {
|
69
|
+
return eqRiskId(a, zero());
|
70
|
+
}
|
71
|
+
|
72
|
+
function gtz(RiskId a) public pure returns (bool isZero) {
|
73
|
+
return uint64(RiskId.unwrap(a)) > 0;
|
74
|
+
}
|
43
75
|
}
|
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Key32, KeyId, Key32Lib} from "./Key32.sol";
|
5
5
|
import {ObjectType, ROLE} from "./ObjectType.sol";
|
6
|
-
import {VersionPart} from "./Version.sol";
|
6
|
+
import {VersionPart, VersionPartLib} from "./Version.sol";
|
7
7
|
|
8
8
|
type RoleId is uint64;
|
9
9
|
|
@@ -11,10 +11,10 @@ type RoleId is uint64;
|
|
11
11
|
using {
|
12
12
|
eqRoleId as ==,
|
13
13
|
neRoleId as !=,
|
14
|
+
RoleIdLib.toInt,
|
15
|
+
RoleIdLib.isServiceRole,
|
14
16
|
RoleIdLib.eqz,
|
15
|
-
RoleIdLib.gtz
|
16
|
-
RoleIdLib.toInt
|
17
|
-
// RoleIdLib.toKey32
|
17
|
+
RoleIdLib.gtz
|
18
18
|
} for RoleId global;
|
19
19
|
|
20
20
|
// general pure free functions
|
@@ -54,18 +54,14 @@ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2)
|
|
54
54
|
/// @dev role for registering remote staking targets and reporting remote total value locked amounts.
|
55
55
|
function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
|
56
56
|
|
57
|
-
|
58
|
-
|
57
|
+
// TODO check if/where this is really needed
|
58
|
+
/// @dev role assigned to release registry, release specfic to lock/unlock a release
|
59
|
+
function RELEASE_REGISTRY_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
|
59
60
|
|
60
|
-
/// @dev
|
61
|
-
function
|
62
|
-
|
63
|
-
/// @dev instance specific role to register/own a distribution component
|
64
|
-
function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(13); }
|
65
|
-
|
66
|
-
/// @dev instance specific role to register/own a pool component
|
67
|
-
function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(14); }
|
61
|
+
/// @dev role assigned to every instance owner
|
62
|
+
function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(5); }
|
68
63
|
|
64
|
+
// TODO upate role id ranges
|
69
65
|
//--- GIF core contract roles (range: 200 - 9'900) --------------------------//
|
70
66
|
// created and assigned during initial deployment for registry and staking
|
71
67
|
// granting for instances and components in instance service
|
@@ -84,6 +80,8 @@ function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(14)
|
|
84
80
|
// - application service role (version 3): 2003
|
85
81
|
|
86
82
|
//--- GIF component contract roles (range 12'001 - 19'099) ------------------//
|
83
|
+
// the min value of 12'001 is based on the following calculation:
|
84
|
+
// object type * 1000 + 1 where the lowest object type is 12 (product)
|
87
85
|
// assigned at component registration time
|
88
86
|
// object type * 1000 + instane specific component counter
|
89
87
|
// on any instance a maximum number of 999 components may be deployed
|
@@ -102,54 +100,72 @@ function CUSTOM_ROLE_MIN() pure returns (RoleId) { return RoleIdLib.toRoleId(100
|
|
102
100
|
|
103
101
|
library RoleIdLib {
|
104
102
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
uint64 public constant
|
103
|
+
error ErrorRoleIdTooBig(uint256 roleId);
|
104
|
+
|
105
|
+
// constant values need to match with AccessAdminLib.SERVICE_ROLE_*
|
106
|
+
uint64 public constant SERVICE_ROLE_MIN = 1000;
|
107
|
+
uint64 public constant SERVICE_ROLE_MAX = 99099; // 99 (max object type) * 1000 + 99
|
108
|
+
|
109
|
+
uint64 public constant SERVICE_ROLE_FACTOR = 1000;
|
109
110
|
|
110
111
|
/// @dev Converts the RoleId to a uint.
|
111
112
|
function zero() public pure returns (RoleId) {
|
112
113
|
return RoleId.wrap(0);
|
113
114
|
}
|
114
115
|
|
116
|
+
|
115
117
|
/// @dev Converts an uint into a role id.
|
116
|
-
function toRoleId(
|
117
|
-
|
118
|
-
|
118
|
+
function toRoleId(uint256 a) public pure returns (RoleId) {
|
119
|
+
if (a > type(uint64).max) {
|
120
|
+
revert ErrorRoleIdTooBig(a);
|
121
|
+
}
|
119
122
|
|
120
|
-
|
121
|
-
function toComponentRoleId(ObjectType objectType, uint64 index) public pure returns (RoleId) {
|
122
|
-
return toRoleId(COMPONENT_ROLE_FACTOR * uint64(objectType.toInt()) + index);
|
123
|
+
return RoleId.wrap(uint64(a));
|
123
124
|
}
|
124
125
|
|
125
|
-
/// @dev Converts an uint into a custom role id.
|
126
|
-
function toCustomRoleId(uint64 index) public pure returns (RoleId) {
|
127
|
-
return toRoleId(CUSTOM_ROLE_MIN + index);
|
128
|
-
}
|
129
126
|
|
130
|
-
|
131
|
-
|
132
|
-
|
127
|
+
function isServiceRole(RoleId roleId)
|
128
|
+
public
|
129
|
+
pure
|
130
|
+
returns (bool)
|
131
|
+
{
|
132
|
+
uint256 roleIdInt = RoleId.unwrap(roleId);
|
133
|
+
return roleIdInt >= SERVICE_ROLE_MIN && roleIdInt <= SERVICE_ROLE_MAX;
|
133
134
|
}
|
134
135
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
136
|
+
|
137
|
+
function toGenericServiceRoleId(
|
138
|
+
ObjectType objectType
|
139
|
+
)
|
140
|
+
public
|
141
|
+
pure
|
142
|
+
returns (RoleId)
|
143
|
+
{
|
144
|
+
return toServiceRoleId(
|
145
|
+
objectType,
|
146
|
+
VersionPartLib.releaseMax());
|
139
147
|
}
|
140
148
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
149
|
+
|
150
|
+
function toServiceRoleId(
|
151
|
+
ObjectType serviceDomain,
|
152
|
+
VersionPart release
|
153
|
+
)
|
154
|
+
public
|
155
|
+
pure
|
156
|
+
returns (RoleId serviceRoleId)
|
157
|
+
{
|
158
|
+
uint256 serviceRoleIdInt =
|
159
|
+
SERVICE_ROLE_MIN
|
160
|
+
+ SERVICE_ROLE_FACTOR * (serviceDomain.toInt() - 1)
|
161
|
+
+ release.toInt();
|
162
|
+
|
163
|
+
return toRoleId(serviceRoleIdInt);
|
146
164
|
}
|
147
165
|
|
148
|
-
/// @dev Converts
|
149
|
-
|
150
|
-
|
151
|
-
return RoleId.wrap(
|
152
|
-
uint64(SERVICE_DOMAIN_ROLE_FACTOR * objectType.toInt() + ALL_VERSIONS));
|
166
|
+
/// @dev Converts the role id to a uint.
|
167
|
+
function toInt(RoleId a) public pure returns (uint64) {
|
168
|
+
return uint64(RoleId.unwrap(a));
|
153
169
|
}
|
154
170
|
|
155
171
|
/// @dev Returns true if the value is non-zero (> 0).
|
@@ -161,14 +177,4 @@ library RoleIdLib {
|
|
161
177
|
function eqz(RoleId a) public pure returns (bool) {
|
162
178
|
return RoleId.unwrap(a) == 0;
|
163
179
|
}
|
164
|
-
|
165
|
-
/// @dev Returns the key32 value for the specified id and object type.
|
166
|
-
function toKey32(RoleId a) public pure returns (Key32 key) {
|
167
|
-
return Key32Lib.toKey32(ROLE(), toKeyId(a));
|
168
|
-
}
|
169
|
-
|
170
|
-
/// @dev Returns the key id value for the specified id
|
171
|
-
function toKeyId(RoleId a) public pure returns (KeyId keyId) {
|
172
|
-
return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
|
173
|
-
}
|
174
180
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
/// @dev Target: Cover durations of 1000 years.
|
4
5
|
type Seconds is uint40;
|
5
6
|
|
6
7
|
using {
|
@@ -9,6 +10,9 @@ using {
|
|
9
10
|
SecondsAdd as +,
|
10
11
|
SecondsLib.eqz,
|
11
12
|
SecondsLib.gtz,
|
13
|
+
SecondsLib.eq,
|
14
|
+
SecondsLib.gt,
|
15
|
+
SecondsLib.lt,
|
12
16
|
SecondsLib.toInt,
|
13
17
|
SecondsLib.add
|
14
18
|
} for Seconds global;
|
@@ -42,6 +46,10 @@ library SecondsLib {
|
|
42
46
|
return Seconds.wrap(24 * 3600);
|
43
47
|
}
|
44
48
|
|
49
|
+
function fromDays(uint32 numberOfDays) public pure returns (Seconds duration) {
|
50
|
+
return Seconds.wrap(numberOfDays * 24 * 3600);
|
51
|
+
}
|
52
|
+
|
45
53
|
function oneYear() public pure returns (Seconds duration) {
|
46
54
|
return Seconds.wrap(365 * 24 * 3600);
|
47
55
|
}
|
@@ -77,6 +85,11 @@ library SecondsLib {
|
|
77
85
|
return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
|
78
86
|
}
|
79
87
|
|
88
|
+
/// @dev return true if duration1 is smaller than duration2
|
89
|
+
function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
|
90
|
+
return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
|
91
|
+
}
|
92
|
+
|
80
93
|
/// @dev return add duration1 and duration2
|
81
94
|
function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
|
82
95
|
return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
|
@@ -8,6 +8,7 @@ using {
|
|
8
8
|
eqSelector as ==,
|
9
9
|
neSelector as !=,
|
10
10
|
SelectorLib.toBytes4,
|
11
|
+
SelectorLib.toString,
|
11
12
|
SelectorLib.eqz
|
12
13
|
} for Selector global;
|
13
14
|
|
@@ -46,6 +47,10 @@ library SelectorLib {
|
|
46
47
|
function toBytes4(Selector s) public pure returns (bytes4) {
|
47
48
|
return Selector.unwrap(s);
|
48
49
|
}
|
50
|
+
|
51
|
+
function toString(Selector s) public pure returns (string memory) {
|
52
|
+
return string(abi.encode(Selector.unwrap(s)));
|
53
|
+
}
|
49
54
|
}
|
50
55
|
|
51
56
|
// selector specific set library
|
@@ -9,6 +9,7 @@ using {
|
|
9
9
|
eqStateId as ==,
|
10
10
|
neStateId as !=,
|
11
11
|
StateIdLib.eqz,
|
12
|
+
StateIdLib.eq,
|
12
13
|
StateIdLib.gtz,
|
13
14
|
StateIdLib.toInt
|
14
15
|
} for StateId global;
|
@@ -27,10 +28,18 @@ function DEPLOYING() pure returns (StateId) {
|
|
27
28
|
return toStateId(3);
|
28
29
|
}
|
29
30
|
|
30
|
-
function
|
31
|
+
function DEPLOYED() pure returns (StateId) {
|
31
32
|
return toStateId(4);
|
32
33
|
}
|
33
34
|
|
35
|
+
function ACTIVE() pure returns (StateId) {
|
36
|
+
return toStateId(5);
|
37
|
+
}
|
38
|
+
|
39
|
+
function SKIPPED() pure returns (StateId) {
|
40
|
+
return toStateId(6);
|
41
|
+
}
|
42
|
+
|
34
43
|
function APPLIED() pure returns (StateId) {
|
35
44
|
return toStateId(10);
|
36
45
|
}
|
@@ -113,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
|
|
113
122
|
|
114
123
|
// library functions that operate on user defined type
|
115
124
|
library StateIdLib {
|
125
|
+
|
126
|
+
function zero() public pure returns (StateId) {
|
127
|
+
return StateId.wrap(0);
|
128
|
+
}
|
129
|
+
|
116
130
|
/// @dev Converts the NftId to a uint256.
|
117
131
|
function toInt(StateId stateId) public pure returns (uint96) {
|
118
132
|
return uint96(StateId.unwrap(stateId));
|
@@ -12,10 +12,12 @@ using {
|
|
12
12
|
StrLib.length
|
13
13
|
} for Str global;
|
14
14
|
|
15
|
+
// pure free function needed for the operator overloading
|
15
16
|
function StrEq(Str s1, Str s2) pure returns (bool) {
|
16
17
|
return StrLib.eq(s1, s2);
|
17
18
|
}
|
18
19
|
|
20
|
+
// pure free function needed for the operator overloading
|
19
21
|
function StrNe(Str s1, Str s2) pure returns (bool) {
|
20
22
|
return StrLib.ne(s1, s2);
|
21
23
|
}
|
@@ -39,6 +41,16 @@ library StrLib {
|
|
39
41
|
return Str.unwrap(s1) != Str.unwrap(s2);
|
40
42
|
}
|
41
43
|
|
44
|
+
/// @dev return true iff s1 equals from s2
|
45
|
+
function eq(string memory s1, string memory s2) public pure returns (bool) {
|
46
|
+
return keccak256(bytes(s1)) == keccak256(bytes(s2));
|
47
|
+
}
|
48
|
+
|
49
|
+
/// @dev return true iff s1 differs s2
|
50
|
+
function ne(string memory s1, string memory s2) public pure returns (bool) {
|
51
|
+
return !eq(s1, s2);
|
52
|
+
}
|
53
|
+
|
42
54
|
/// @dev converts the provided short string into a string.
|
43
55
|
/// uses ShortStrings.toString
|
44
56
|
function toString(Str str) public pure returns (string memory) {
|
@@ -3,6 +3,8 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Seconds} from "./Seconds.sol";
|
5
5
|
|
6
|
+
/// @dev Target: Cover 10 years with 1 ms block time resolution.
|
7
|
+
/// Typical block time resolution is 1s.
|
6
8
|
type Timestamp is uint40;
|
7
9
|
|
8
10
|
using {
|
@@ -54,11 +56,6 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
|
54
56
|
return Timestamp.unwrap(a) != Timestamp.unwrap(b);
|
55
57
|
}
|
56
58
|
|
57
|
-
/// @dev Converts the uint256 to a Timestamp.
|
58
|
-
function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
|
59
|
-
return TimestampLib.toTimestamp(timestamp);
|
60
|
-
}
|
61
|
-
|
62
59
|
// TODO move to TimestampLib and rename to zero()
|
63
60
|
/// @dev Return the Timestamp zero (0)
|
64
61
|
function zeroTimestamp() pure returns (Timestamp) {
|
@@ -74,8 +71,8 @@ library TimestampLib {
|
|
74
71
|
function max() public pure returns (Timestamp) {
|
75
72
|
return Timestamp.wrap(type(uint40).max);
|
76
73
|
}
|
77
|
-
|
78
|
-
function
|
74
|
+
|
75
|
+
function current() public view returns (Timestamp) {
|
79
76
|
return Timestamp.wrap(uint40(block.timestamp));
|
80
77
|
}
|
81
78
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
5
|
+
|
6
|
+
/// @dev UFixed is a 160-bit fixed point number with 15 decimals precision.
|
7
|
+
type UFixed is uint160;
|
6
8
|
|
7
9
|
using {
|
8
10
|
addUFixed as +,
|
@@ -16,6 +18,7 @@ using {
|
|
16
18
|
eqUFixed as ==,
|
17
19
|
neUFixed as !=,
|
18
20
|
UFixedLib.gt,
|
21
|
+
UFixedLib.eqz,
|
19
22
|
UFixedLib.gtz,
|
20
23
|
UFixedLib.toInt,
|
21
24
|
UFixedLib.toInt1000
|
@@ -39,7 +42,7 @@ function subUFixed(UFixed a, UFixed b) pure returns (UFixed) {
|
|
39
42
|
|
40
43
|
function mulUFixed(UFixed a, UFixed b) pure returns (UFixed) {
|
41
44
|
return
|
42
|
-
UFixed.wrap(
|
45
|
+
UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 15)));
|
43
46
|
}
|
44
47
|
|
45
48
|
function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
|
@@ -48,7 +51,7 @@ function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
|
|
48
51
|
}
|
49
52
|
|
50
53
|
return
|
51
|
-
UFixed.wrap(
|
54
|
+
UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), 10 ** 15, UFixed.unwrap(b))));
|
52
55
|
}
|
53
56
|
|
54
57
|
function gtUFixed(UFixed a, UFixed b) pure returns (bool isGreaterThan) {
|
@@ -91,118 +94,6 @@ function deltaUFixed(UFixed a, UFixed b) pure returns (UFixed) {
|
|
91
94
|
return b - a;
|
92
95
|
}
|
93
96
|
|
94
|
-
/// @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.3/contracts/utils/math/Math.sol
|
95
|
-
library MathLib {
|
96
|
-
|
97
|
-
error MathLigMulDivOverflow();
|
98
|
-
|
99
|
-
enum Rounding {
|
100
|
-
Down, // Toward negative infinity
|
101
|
-
Up, // Toward infinity
|
102
|
-
Zero // Toward zero
|
103
|
-
}
|
104
|
-
|
105
|
-
/**
|
106
|
-
* @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
|
107
|
-
* @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
|
108
|
-
* with further edits by Uniswap Labs also under MIT license.
|
109
|
-
*/
|
110
|
-
function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
|
111
|
-
unchecked {
|
112
|
-
// 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
|
113
|
-
// use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
|
114
|
-
// variables such that product = prod1 * 2^256 + prod0.
|
115
|
-
uint256 prod0; // Least significant 256 bits of the product
|
116
|
-
uint256 prod1; // Most significant 256 bits of the product
|
117
|
-
assembly {
|
118
|
-
let mm := mulmod(x, y, not(0))
|
119
|
-
prod0 := mul(x, y)
|
120
|
-
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
|
121
|
-
}
|
122
|
-
|
123
|
-
// Handle non-overflow cases, 256 by 256 division.
|
124
|
-
if (prod1 == 0) {
|
125
|
-
// Solidity will revert if denominator == 0, unlike the div opcode on its own.
|
126
|
-
// The surrounding unchecked block does not change this fact.
|
127
|
-
// See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
|
128
|
-
return prod0 / denominator;
|
129
|
-
}
|
130
|
-
|
131
|
-
// Make sure the result is less than 2^256. Also prevents denominator == 0.
|
132
|
-
if (denominator <= prod1) {
|
133
|
-
revert MathLigMulDivOverflow();
|
134
|
-
}
|
135
|
-
|
136
|
-
///////////////////////////////////////////////
|
137
|
-
// 512 by 256 division.
|
138
|
-
///////////////////////////////////////////////
|
139
|
-
|
140
|
-
// Make division exact by subtracting the remainder from [prod1 prod0].
|
141
|
-
uint256 remainder;
|
142
|
-
assembly {
|
143
|
-
// Compute remainder using mulmod.
|
144
|
-
remainder := mulmod(x, y, denominator)
|
145
|
-
|
146
|
-
// Subtract 256 bit number from 512 bit number.
|
147
|
-
prod1 := sub(prod1, gt(remainder, prod0))
|
148
|
-
prod0 := sub(prod0, remainder)
|
149
|
-
}
|
150
|
-
|
151
|
-
// Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
|
152
|
-
// See https://cs.stackexchange.com/q/138556/92363.
|
153
|
-
|
154
|
-
// Does not overflow because the denominator cannot be zero at this stage in the function.
|
155
|
-
uint256 twos = denominator & (~denominator + 1);
|
156
|
-
assembly {
|
157
|
-
// Divide denominator by twos.
|
158
|
-
denominator := div(denominator, twos)
|
159
|
-
|
160
|
-
// Divide [prod1 prod0] by twos.
|
161
|
-
prod0 := div(prod0, twos)
|
162
|
-
|
163
|
-
// Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
|
164
|
-
twos := add(div(sub(0, twos), twos), 1)
|
165
|
-
}
|
166
|
-
|
167
|
-
// Shift in bits from prod1 into prod0.
|
168
|
-
prod0 |= prod1 * twos;
|
169
|
-
|
170
|
-
// Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
|
171
|
-
// that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
|
172
|
-
// four bits. That is, denominator * inv = 1 mod 2^4.
|
173
|
-
uint256 inverse = (3 * denominator) ^ 2;
|
174
|
-
|
175
|
-
// Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
|
176
|
-
// in modular arithmetic, doubling the correct bits in each step.
|
177
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^8
|
178
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^16
|
179
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^32
|
180
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^64
|
181
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^128
|
182
|
-
inverse *= 2 - denominator * inverse; // inverse mod 2^256
|
183
|
-
|
184
|
-
// Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
|
185
|
-
// This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
|
186
|
-
// less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
|
187
|
-
// is no longer required.
|
188
|
-
result = prod0 * inverse;
|
189
|
-
return result;
|
190
|
-
}
|
191
|
-
}
|
192
|
-
|
193
|
-
/**
|
194
|
-
* @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
|
195
|
-
*/
|
196
|
-
function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
|
197
|
-
uint256 result = mulDiv(x, y, denominator);
|
198
|
-
if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
|
199
|
-
result += 1;
|
200
|
-
}
|
201
|
-
return result;
|
202
|
-
}
|
203
|
-
|
204
|
-
}
|
205
|
-
|
206
97
|
library UFixedLib {
|
207
98
|
error UFixedLibNegativeResult();
|
208
99
|
error UFixedLibDivisionByZero();
|
@@ -210,7 +101,9 @@ library UFixedLib {
|
|
210
101
|
error UFixedLibExponentTooSmall(int8 exp);
|
211
102
|
error UFixedLibExponentTooLarge(int8 exp);
|
212
103
|
|
213
|
-
|
104
|
+
error UFixedLibNumberTooLarge(uint256 number);
|
105
|
+
|
106
|
+
int8 public constant EXP = 15;
|
214
107
|
uint256 public constant MULTIPLIER = 10 ** uint256(int256(EXP));
|
215
108
|
uint256 public constant MULTIPLIER_HALF = MULTIPLIER / 2;
|
216
109
|
|
@@ -229,9 +122,14 @@ library UFixedLib {
|
|
229
122
|
return uint8(2);
|
230
123
|
}
|
231
124
|
|
232
|
-
/// @dev Converts the uint256 to a UFixed.
|
125
|
+
/// @dev Converts the uint256 to a uint160 based UFixed.
|
126
|
+
/// This method reverts if the number is too large to fit in a uint160.
|
233
127
|
function toUFixed(uint256 a) public pure returns (UFixed) {
|
234
|
-
|
128
|
+
uint256 n = a * MULTIPLIER;
|
129
|
+
if (n > type(uint160).max) {
|
130
|
+
revert UFixedLibNumberTooLarge(a);
|
131
|
+
}
|
132
|
+
return UFixed.wrap(uint160(n));
|
235
133
|
}
|
236
134
|
|
237
135
|
/// @dev Converts the uint256 to a UFixed with given exponent.
|
@@ -239,11 +137,17 @@ library UFixedLib {
|
|
239
137
|
if (EXP + exp < 0) {
|
240
138
|
revert UFixedLibExponentTooSmall(exp);
|
241
139
|
}
|
242
|
-
if (EXP + exp >
|
140
|
+
if (EXP + exp > 48) {
|
243
141
|
revert UFixedLibExponentTooLarge(exp);
|
244
142
|
}
|
245
143
|
|
246
|
-
|
144
|
+
uint256 n = a * 10 ** uint8(EXP + exp);
|
145
|
+
|
146
|
+
if (n > type(uint160).max) {
|
147
|
+
revert UFixedLibNumberTooLarge(n);
|
148
|
+
}
|
149
|
+
|
150
|
+
return UFixed.wrap(uint160(n));
|
247
151
|
}
|
248
152
|
|
249
153
|
/// @dev returns the decimals precision of the UFixed type
|
@@ -265,23 +169,23 @@ library UFixedLib {
|
|
265
169
|
function toIntWithRounding(UFixed a, uint8 rounding) public pure returns (uint256) {
|
266
170
|
if (rounding == ROUNDING_HALF_UP()) {
|
267
171
|
return
|
268
|
-
|
172
|
+
Math.mulDiv(
|
269
173
|
UFixed.unwrap(a) + MULTIPLIER_HALF,
|
270
174
|
1,
|
271
175
|
MULTIPLIER,
|
272
|
-
|
176
|
+
Math.Rounding.Floor
|
273
177
|
);
|
274
178
|
} else if (rounding == ROUNDING_DOWN()) {
|
275
179
|
return
|
276
|
-
|
180
|
+
Math.mulDiv(
|
277
181
|
UFixed.unwrap(a),
|
278
182
|
1,
|
279
183
|
MULTIPLIER,
|
280
|
-
|
184
|
+
Math.Rounding.Floor
|
281
185
|
);
|
282
186
|
} else {
|
283
187
|
return
|
284
|
-
|
188
|
+
Math.mulDiv(UFixed.unwrap(a), 1, MULTIPLIER, Math.Rounding.Ceil);
|
285
189
|
}
|
286
190
|
}
|
287
191
|
|
@@ -344,6 +248,14 @@ library UFixedLib {
|
|
344
248
|
return UFixed.wrap(0);
|
345
249
|
}
|
346
250
|
|
251
|
+
function one() public pure returns (UFixed) {
|
252
|
+
return UFixed.wrap(uint160(MULTIPLIER));
|
253
|
+
}
|
254
|
+
|
255
|
+
function max() public pure returns (UFixed) {
|
256
|
+
return UFixed.wrap(type(uint160).max);
|
257
|
+
}
|
258
|
+
|
347
259
|
/// @dev return the absolute delta between two UFixed numbers
|
348
260
|
function delta(UFixed a, UFixed b) public pure returns (UFixed) {
|
349
261
|
return deltaUFixed(a, b);
|