@etherisc/gif-next 0.0.2-f9905e1 → 0.0.2-f9bc4c7-556
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 +123 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → BaseComponent.sol/BaseComponent.json} +55 -60
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +54 -59
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +279 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +225 -33
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +154 -62
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1249 -275
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1560 -373
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{product/ProductService.sol/ProductModule.json → base/IInstanceBase.sol/IInstanceBase.json} +18 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +511 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/InstanceBase.sol/InstanceBase.json} +140 -141
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +692 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +296 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +296 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +54 -111
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +146 -116
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +146 -116
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +63 -63
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +149 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +533 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +533 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +597 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +452 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +115 -81
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +265 -82
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +22 -67
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +23 -68
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/Versionable.sol/Versionable.json} +72 -70
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +153 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +88 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IPoolComponent.sol +57 -0
- package/contracts/components/IProductComponent.sol +19 -0
- package/contracts/components/Pool.sol +161 -16
- package/contracts/components/Product.sol +79 -27
- package/contracts/experiment/errors/Require.sol +38 -0
- package/contracts/experiment/errors/Revert.sol +44 -0
- package/contracts/experiment/inheritance/A.sol +8 -11
- package/contracts/experiment/inheritance/B.sol +10 -5
- package/contracts/experiment/inheritance/C.sol +11 -5
- package/contracts/experiment/inheritance/IA.sol +2 -7
- package/contracts/experiment/inheritance/IB.sol +3 -2
- package/contracts/experiment/inheritance/IC.sol +4 -3
- package/contracts/experiment/statemachine/Dummy.sol +27 -0
- package/contracts/experiment/statemachine/ISM.sol +25 -0
- package/contracts/experiment/statemachine/README.md +112 -0
- package/contracts/experiment/statemachine/SM.sol +57 -0
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
- package/contracts/experiment/types/TypeA.sol +14 -9
- package/contracts/experiment/types/TypeB.sol +14 -9
- package/contracts/instance/IInstance.sol +42 -10
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +47 -42
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +14 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +80 -0
- package/contracts/instance/base/KeyValueStore.sol +156 -0
- package/contracts/instance/base/Lifecycle.sol +95 -0
- package/contracts/instance/base/ModuleBase.sol +52 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +136 -0
- package/contracts/instance/module/bundle/IBundle.sol +58 -0
- package/contracts/instance/module/compensation/CompensationModule.sol +8 -0
- package/contracts/instance/module/compensation/ICompensation.sol +10 -0
- package/contracts/instance/module/component/ComponentModule.sol +95 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +76 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/risk/IRisk.sol +10 -0
- package/contracts/instance/module/risk/RiskModule.sol +8 -0
- package/contracts/instance/module/treasury/ITreasury.sol +103 -0
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/module/treasury/TreasuryModule.sol +152 -0
- package/contracts/instance/service/ComponentOwnerService.sol +170 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +58 -0
- package/contracts/instance/service/PoolService.sol +123 -0
- package/contracts/instance/service/ProductService.sol +354 -0
- package/contracts/registry/ChainNft.sol +159 -0
- package/contracts/registry/IChainNft.sol +21 -0
- package/contracts/registry/IRegistry.sol +41 -50
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +307 -123
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +52 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +89 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +22 -0
- package/contracts/test/TestProduct.sol +44 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +118 -0
- package/contracts/types/ChainId.sol +24 -10
- package/contracts/types/Fee.sol +51 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +72 -0
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +115 -0
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +101 -0
- package/contracts/types/Timestamp.sol +123 -0
- package/contracts/types/UFixed.sol +209 -0
- package/contracts/types/Version.sol +95 -0
- package/package.json +19 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -62
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -11
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -259
- package/contracts/instance/component/IComponent.sol +0 -94
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -106
- package/contracts/instance/pool/IPoolModule.sol +0 -40
- package/contracts/instance/pool/PoolModule.sol +0 -83
- package/contracts/instance/product/IProductService.sol +0 -45
- package/contracts/instance/product/ProductService.sol +0 -105
@@ -1,24 +1,38 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
|
4
|
+
/// @dev bytes5 (uint40) allows for chain ids up to 13 digits
|
5
5
|
type ChainId is bytes5;
|
6
6
|
|
7
7
|
// type bindings
|
8
|
-
using {
|
9
|
-
eqChainId as ==,
|
10
|
-
neChainId as !=,
|
11
|
-
ChainIdLib.toInt
|
12
|
-
} for ChainId global;
|
8
|
+
using {eqChainId as ==, neChainId as !=, ChainIdLib.toInt} for ChainId global;
|
13
9
|
|
14
10
|
// general pure free functions
|
15
|
-
|
11
|
+
/// @dev Converts the uint256 to a ChainId.
|
12
|
+
function toChainId(uint256 chainId) pure returns (ChainId) {
|
13
|
+
return ChainId.wrap(bytes5(uint40(chainId)));
|
14
|
+
}
|
15
|
+
|
16
|
+
/// @dev Return the ChainId for the chain the contract is deployed to
|
17
|
+
function thisChainId() view returns (ChainId) {
|
18
|
+
return toChainId(block.chainid);
|
19
|
+
}
|
16
20
|
|
17
21
|
// pure free functions for operators
|
18
|
-
|
19
|
-
function
|
22
|
+
/// @dev Returns true if the values are equal (==).
|
23
|
+
function eqChainId(ChainId a, ChainId b) pure returns (bool isSame) {
|
24
|
+
return ChainId.unwrap(a) == ChainId.unwrap(b);
|
25
|
+
}
|
26
|
+
|
27
|
+
/// @dev Returns true if the values are not equal (!=).
|
28
|
+
function neChainId(ChainId a, ChainId b) pure returns (bool isDifferent) {
|
29
|
+
return ChainId.unwrap(a) != ChainId.unwrap(b);
|
30
|
+
}
|
20
31
|
|
21
32
|
// library functions that operate on user defined type
|
22
33
|
library ChainIdLib {
|
23
|
-
|
34
|
+
/// @dev Converts the ChainId to a uint256.
|
35
|
+
function toInt(ChainId chainId) internal pure returns (uint256) {
|
36
|
+
return uint256(uint40(ChainId.unwrap(chainId)));
|
37
|
+
}
|
24
38
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {UFixed, UFixedMathLib} from "./UFixed.sol";
|
5
|
+
|
6
|
+
struct Fee {
|
7
|
+
UFixed fractionalFee;
|
8
|
+
uint256 fixedFee;
|
9
|
+
}
|
10
|
+
|
11
|
+
library FeeLib {
|
12
|
+
|
13
|
+
function calculateFee(
|
14
|
+
uint256 amount,
|
15
|
+
Fee memory fee
|
16
|
+
)
|
17
|
+
public
|
18
|
+
pure
|
19
|
+
returns (
|
20
|
+
uint256 feeAmount,
|
21
|
+
uint256 netAmount
|
22
|
+
)
|
23
|
+
{
|
24
|
+
UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
|
25
|
+
fee.fractionalFee;
|
26
|
+
feeAmount = fractionalAmount.toInt() + fee.fixedFee;
|
27
|
+
netAmount = amount - feeAmount;
|
28
|
+
}
|
29
|
+
|
30
|
+
/// @dev Converts the uint256 to a fee struct.
|
31
|
+
function toFee(
|
32
|
+
UFixed fractionalFee,
|
33
|
+
uint256 fixedFee
|
34
|
+
) public pure returns (Fee memory fee) {
|
35
|
+
return Fee(fractionalFee, fixedFee);
|
36
|
+
}
|
37
|
+
|
38
|
+
/// @dev Return the zero fee struct (0, 0)
|
39
|
+
function zeroFee() public pure returns (Fee memory fee) {
|
40
|
+
return Fee(UFixed.wrap(0), 0);
|
41
|
+
}
|
42
|
+
|
43
|
+
// pure free functions for operators
|
44
|
+
function feeIsSame(Fee memory a, Fee memory b) public pure returns (bool isSame) {
|
45
|
+
return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
|
46
|
+
}
|
47
|
+
|
48
|
+
function feeIsZero(Fee memory fee) public pure returns (bool) {
|
49
|
+
return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {ObjectType} from "./ObjectType.sol";
|
5
|
+
|
6
|
+
type Key32 is bytes32;
|
7
|
+
type KeyId is bytes31;
|
8
|
+
|
9
|
+
// type bindings
|
10
|
+
using {
|
11
|
+
eqKey32 as ==,
|
12
|
+
neKey32 as !=,
|
13
|
+
Key32Lib.toKey
|
14
|
+
} for Key32 global;
|
15
|
+
|
16
|
+
// @dev Returns true iff keys are identical
|
17
|
+
function eqKey32(Key32 a, Key32 b) pure returns (bool isSame) {
|
18
|
+
return Key32.unwrap(a) == Key32.unwrap(b);
|
19
|
+
}
|
20
|
+
|
21
|
+
// @dev Returns true iff keys are different
|
22
|
+
function neKey32(Key32 a, Key32 b) pure returns (bool isDifferent) {
|
23
|
+
return Key32.unwrap(a) != Key32.unwrap(b);
|
24
|
+
}
|
25
|
+
|
26
|
+
library Key32Lib {
|
27
|
+
|
28
|
+
uint8 public constant TYPE_SHIFT = 31 * 8;
|
29
|
+
uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
|
30
|
+
bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
|
31
|
+
bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
|
32
|
+
|
33
|
+
function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
|
34
|
+
uint256 uintObjectType = ObjectType.unwrap(objectType);
|
35
|
+
uint256 uintId = uint248(KeyId.unwrap(id));
|
36
|
+
uint256 uintKey = (uintObjectType << TYPE_SHIFT) + uintId;
|
37
|
+
return Key32.wrap(bytes32(uintKey));
|
38
|
+
}
|
39
|
+
|
40
|
+
function toKey(Key32 key) public pure returns (ObjectType objectType, KeyId id) {
|
41
|
+
bytes32 key32 = Key32.unwrap(key);
|
42
|
+
objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
|
43
|
+
id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Key32, KeyId, Key32Lib} from "./Key32.sol";
|
5
|
+
import {ObjectType} from "./ObjectType.sol";
|
6
|
+
|
7
|
+
// uint96 allows for chain ids up to 13 digits
|
8
|
+
type NftId is uint96;
|
9
|
+
|
10
|
+
// type bindings
|
11
|
+
using {
|
12
|
+
eqNftId as ==,
|
13
|
+
neNftId as !=,
|
14
|
+
NftIdLib.toInt,
|
15
|
+
NftIdLib.gtz,
|
16
|
+
NftIdLib.eqz,
|
17
|
+
NftIdLib.toKeyId,
|
18
|
+
NftIdLib.toKey32
|
19
|
+
} for NftId global;
|
20
|
+
|
21
|
+
// general pure free functions
|
22
|
+
/// @dev Converts the uint256 to a NftId.
|
23
|
+
function toNftId(uint256 id) pure returns (NftId) {
|
24
|
+
return NftId.wrap(uint96(id));
|
25
|
+
}
|
26
|
+
|
27
|
+
/// @dev Return the NftId zero (0)
|
28
|
+
function zeroNftId() pure returns (NftId) {
|
29
|
+
return NftId.wrap(0);
|
30
|
+
}
|
31
|
+
|
32
|
+
// pure free functions for operators
|
33
|
+
function eqNftId(NftId a, NftId b) pure returns (bool isSame) {
|
34
|
+
return NftId.unwrap(a) == NftId.unwrap(b);
|
35
|
+
}
|
36
|
+
|
37
|
+
function neNftId(NftId a, NftId b) pure returns (bool isDifferent) {
|
38
|
+
return NftId.unwrap(a) != NftId.unwrap(b);
|
39
|
+
}
|
40
|
+
|
41
|
+
// library functions that operate on user defined type
|
42
|
+
library NftIdLib {
|
43
|
+
/// @dev Converts the NftId to a uint256.
|
44
|
+
function toInt(NftId nftId) public pure returns (uint96) {
|
45
|
+
return uint96(NftId.unwrap(nftId));
|
46
|
+
}
|
47
|
+
|
48
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
49
|
+
function gtz(NftId a) public pure returns (bool) {
|
50
|
+
return NftId.unwrap(a) > 0;
|
51
|
+
}
|
52
|
+
|
53
|
+
/// @dev Returns true if the value is zero (== 0).
|
54
|
+
function eqz(NftId a) public pure returns (bool) {
|
55
|
+
return NftId.unwrap(a) == 0;
|
56
|
+
}
|
57
|
+
|
58
|
+
/// @dev Returns true if the values are equal (==).
|
59
|
+
function eq(NftId a, NftId b) public pure returns (bool isSame) {
|
60
|
+
return eqNftId(a, b);
|
61
|
+
}
|
62
|
+
|
63
|
+
/// @dev Returns the key32 value for the specified nft id and object type.
|
64
|
+
function toKey32(NftId id, ObjectType objectType) public pure returns (Key32 key) {
|
65
|
+
return Key32Lib.toKey32(objectType, toKeyId(id));
|
66
|
+
}
|
67
|
+
|
68
|
+
/// @dev Returns the key id value for the specified nft id
|
69
|
+
function toKeyId(NftId id) public pure returns (KeyId keyId) {
|
70
|
+
return KeyId.wrap(bytes31(uint248(NftId.unwrap(id))));
|
71
|
+
}
|
72
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
|
6
|
+
// based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
|
7
|
+
library LibNftIdSet {
|
8
|
+
|
9
|
+
struct Set {
|
10
|
+
NftId[] ids;
|
11
|
+
mapping(NftId nftid => uint256 index) at;
|
12
|
+
}
|
13
|
+
|
14
|
+
function add(Set storage set, NftId nftId) external returns(bool added) {
|
15
|
+
if (set.at[nftId] == 0) {
|
16
|
+
set.ids.push(nftId);
|
17
|
+
set.at[nftId] = set.ids.length;
|
18
|
+
return true;
|
19
|
+
} else {
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
function remove(Set storage set, NftId nftId) external returns(bool removed) {
|
25
|
+
uint256 nftIdIndex = set.at[nftId];
|
26
|
+
|
27
|
+
if (nftIdIndex > 0) {
|
28
|
+
uint256 toDeleteIndex = nftIdIndex - 1;
|
29
|
+
uint256 lastIndex = set.ids.length - 1;
|
30
|
+
|
31
|
+
if (lastIndex != toDeleteIndex) {
|
32
|
+
NftId lastId = set.ids[lastIndex];
|
33
|
+
set.ids[toDeleteIndex] = lastId;
|
34
|
+
set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
|
35
|
+
}
|
36
|
+
|
37
|
+
set.ids.pop();
|
38
|
+
delete set.at[nftId];
|
39
|
+
return true;
|
40
|
+
} else {
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
function isEmpty(Set storage set) external view returns(bool empty) {
|
46
|
+
return set.ids.length == 0;
|
47
|
+
}
|
48
|
+
|
49
|
+
function contains(Set storage set, NftId nftId) external view returns(bool inSet) {
|
50
|
+
return set.at[nftId] > 0;
|
51
|
+
}
|
52
|
+
|
53
|
+
function getLength(Set storage set) external view returns(uint256 length) {
|
54
|
+
return set.ids.length;
|
55
|
+
}
|
56
|
+
|
57
|
+
function getElementAt(Set storage set, uint256 index) external view returns(NftId nftId) {
|
58
|
+
return set.ids[index];
|
59
|
+
}
|
60
|
+
}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
type ObjectType is uint8;
|
5
|
+
|
6
|
+
// type bindings
|
7
|
+
using {
|
8
|
+
eqObjectType as ==,
|
9
|
+
neObjectType as !=,
|
10
|
+
ObjectTypeLib.toInt,
|
11
|
+
ObjectTypeLib.gtz
|
12
|
+
} for ObjectType global;
|
13
|
+
|
14
|
+
// general pure free functions
|
15
|
+
|
16
|
+
function PROTOCOL() pure returns (ObjectType) {
|
17
|
+
return toObjectType(10);
|
18
|
+
}
|
19
|
+
|
20
|
+
function REGISTRY() pure returns (ObjectType) {
|
21
|
+
return toObjectType(20);
|
22
|
+
}
|
23
|
+
|
24
|
+
function TOKEN() pure returns (ObjectType) {
|
25
|
+
return toObjectType(30);
|
26
|
+
}
|
27
|
+
|
28
|
+
function SERVICE() pure returns (ObjectType) {
|
29
|
+
return toObjectType(40);
|
30
|
+
}
|
31
|
+
|
32
|
+
function INSTANCE() pure returns (ObjectType) {
|
33
|
+
return toObjectType(50);
|
34
|
+
}
|
35
|
+
|
36
|
+
function STAKE() pure returns (ObjectType) {
|
37
|
+
return toObjectType(60);
|
38
|
+
}
|
39
|
+
|
40
|
+
function PRODUCT() pure returns (ObjectType) {
|
41
|
+
return toObjectType(100);
|
42
|
+
}
|
43
|
+
|
44
|
+
function DISTRIBUTOR() pure returns (ObjectType) {
|
45
|
+
return toObjectType(110);
|
46
|
+
}
|
47
|
+
|
48
|
+
function ORACLE() pure returns (ObjectType) {
|
49
|
+
return toObjectType(120);
|
50
|
+
}
|
51
|
+
|
52
|
+
function POOL() pure returns (ObjectType) {
|
53
|
+
return toObjectType(130);
|
54
|
+
}
|
55
|
+
|
56
|
+
function POLICY() pure returns (ObjectType) {
|
57
|
+
return toObjectType(200);
|
58
|
+
}
|
59
|
+
|
60
|
+
function BUNDLE() pure returns (ObjectType) {
|
61
|
+
return toObjectType(210);
|
62
|
+
}
|
63
|
+
|
64
|
+
function CLAIM() pure returns (ObjectType) {
|
65
|
+
return toObjectType(201);
|
66
|
+
}
|
67
|
+
|
68
|
+
function PAYOUT() pure returns (ObjectType) {
|
69
|
+
return toObjectType(202);
|
70
|
+
}
|
71
|
+
|
72
|
+
/// @dev Converts the uint8 to a ObjectType.
|
73
|
+
function toObjectType(uint256 objectType) pure returns (ObjectType) {
|
74
|
+
return ObjectType.wrap(uint8(objectType));
|
75
|
+
}
|
76
|
+
|
77
|
+
/// @dev Return the ObjectType zero (0)
|
78
|
+
function zeroObjectType() pure returns (ObjectType) {
|
79
|
+
return ObjectType.wrap(0);
|
80
|
+
}
|
81
|
+
|
82
|
+
// pure free functions for operators
|
83
|
+
function eqObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
|
84
|
+
return ObjectType.unwrap(a) == ObjectType.unwrap(b);
|
85
|
+
}
|
86
|
+
|
87
|
+
function neObjectType(
|
88
|
+
ObjectType a,
|
89
|
+
ObjectType b
|
90
|
+
) pure returns (bool isDifferent) {
|
91
|
+
return ObjectType.unwrap(a) != ObjectType.unwrap(b);
|
92
|
+
}
|
93
|
+
|
94
|
+
// library functions that operate on user defined type
|
95
|
+
library ObjectTypeLib {
|
96
|
+
/// @dev Converts the NftId to a uint256.
|
97
|
+
function toInt(ObjectType objectType) public pure returns (uint96) {
|
98
|
+
return uint96(ObjectType.unwrap(objectType));
|
99
|
+
}
|
100
|
+
|
101
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
102
|
+
function gtz(ObjectType a) public pure returns (bool) {
|
103
|
+
return ObjectType.unwrap(a) > 0;
|
104
|
+
}
|
105
|
+
|
106
|
+
/// @dev Returns true if the value is zero (== 0).
|
107
|
+
function eqz(ObjectType a) public pure returns (bool) {
|
108
|
+
return ObjectType.unwrap(a) == 0;
|
109
|
+
}
|
110
|
+
|
111
|
+
/// @dev Returns true if the values are equal (==).
|
112
|
+
function eq(ObjectType a, ObjectType b) public pure returns (bool isSame) {
|
113
|
+
return eqObjectType(a, b);
|
114
|
+
}
|
115
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
type RoleId is bytes8;
|
5
|
+
|
6
|
+
// type bindings
|
7
|
+
using {
|
8
|
+
eqRoleId as ==,
|
9
|
+
neRoleId as !=
|
10
|
+
} for RoleId global;
|
11
|
+
|
12
|
+
// general pure free functions
|
13
|
+
function DISTRIBUTOR_OWNER_ROLE_NAME() pure returns (string memory) { return "DistributorOwnerRole"; }
|
14
|
+
function ORACLE_OWNER_ROLE_NAME() pure returns (string memory) { return "OracleOwnerRole"; }
|
15
|
+
function POOL_OWNER_ROLE_NAME() pure returns (string memory) { return "PoolOwnerRole"; }
|
16
|
+
function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "ProductOwnerRole"; }
|
17
|
+
|
18
|
+
function DISTRIBUTOR_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("DistributorOwnerRole"); }
|
19
|
+
function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("OracleOwnerRole"); }
|
20
|
+
function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("PoolOwnerRole"); }
|
21
|
+
function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("ProductOwnerRole"); }
|
22
|
+
|
23
|
+
// @dev Returns true iff role ids a and b are identical
|
24
|
+
function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
|
25
|
+
return RoleId.unwrap(a) == RoleId.unwrap(b);
|
26
|
+
}
|
27
|
+
|
28
|
+
// @dev Returns true iff role ids a and b are different
|
29
|
+
function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
|
30
|
+
return RoleId.unwrap(a) != RoleId.unwrap(b);
|
31
|
+
}
|
32
|
+
|
33
|
+
library RoleIdLib {
|
34
|
+
// @dev Converts a role string into a role id.
|
35
|
+
function toRoleId(string memory role) public pure returns (RoleId) {
|
36
|
+
return RoleId.wrap(bytes8(keccak256(abi.encode(role))));
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
// uint96 allows for chain ids up to 13 digits
|
5
|
+
type StateId is uint8;
|
6
|
+
|
7
|
+
// type bindings
|
8
|
+
using {
|
9
|
+
eqStateId as ==,
|
10
|
+
neStateId as !=,
|
11
|
+
StateIdLib.eqz,
|
12
|
+
StateIdLib.gtz,
|
13
|
+
StateIdLib.toInt
|
14
|
+
} for StateId global;
|
15
|
+
|
16
|
+
// general pure free functions
|
17
|
+
function APPLIED() pure returns (StateId) {
|
18
|
+
return toStateId(10);
|
19
|
+
}
|
20
|
+
|
21
|
+
function REVOKED() pure returns (StateId) {
|
22
|
+
return toStateId(20);
|
23
|
+
}
|
24
|
+
|
25
|
+
function DECLINED() pure returns (StateId) {
|
26
|
+
return toStateId(30);
|
27
|
+
}
|
28
|
+
|
29
|
+
function UNDERWRITTEN() pure returns (StateId) {
|
30
|
+
return toStateId(40);
|
31
|
+
}
|
32
|
+
|
33
|
+
function CONFIRMED() pure returns (StateId) {
|
34
|
+
return toStateId(50);
|
35
|
+
}
|
36
|
+
|
37
|
+
function EXPECTED() pure returns (StateId) {
|
38
|
+
return toStateId(60);
|
39
|
+
}
|
40
|
+
|
41
|
+
function ACTIVE() pure returns (StateId) {
|
42
|
+
return toStateId(100);
|
43
|
+
}
|
44
|
+
|
45
|
+
function PAUSED() pure returns (StateId) {
|
46
|
+
return toStateId(110);
|
47
|
+
}
|
48
|
+
|
49
|
+
function CLOSED() pure returns (StateId) {
|
50
|
+
return toStateId(200);
|
51
|
+
}
|
52
|
+
|
53
|
+
function ARCHIVED() pure returns (StateId) {
|
54
|
+
return toStateId(210);
|
55
|
+
}
|
56
|
+
|
57
|
+
function PAID() pure returns (StateId) {
|
58
|
+
return toStateId(220);
|
59
|
+
}
|
60
|
+
|
61
|
+
/// @dev Converts the uint8 to a StateId.
|
62
|
+
function toStateId(uint256 id) pure returns (StateId) {
|
63
|
+
return StateId.wrap(uint8(id));
|
64
|
+
}
|
65
|
+
|
66
|
+
/// @dev Return the StateId zero (0)
|
67
|
+
function zeroStateId() pure returns (StateId) {
|
68
|
+
return StateId.wrap(0);
|
69
|
+
}
|
70
|
+
|
71
|
+
// pure free functions for operators
|
72
|
+
function eqStateId(StateId a, StateId b) pure returns (bool isSame) {
|
73
|
+
return StateId.unwrap(a) == StateId.unwrap(b);
|
74
|
+
}
|
75
|
+
|
76
|
+
function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
|
77
|
+
return StateId.unwrap(a) != StateId.unwrap(b);
|
78
|
+
}
|
79
|
+
|
80
|
+
// library functions that operate on user defined type
|
81
|
+
library StateIdLib {
|
82
|
+
/// @dev Converts the NftId to a uint256.
|
83
|
+
function toInt(StateId stateId) public pure returns (uint96) {
|
84
|
+
return uint96(StateId.unwrap(stateId));
|
85
|
+
}
|
86
|
+
|
87
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
88
|
+
function gtz(StateId a) public pure returns (bool) {
|
89
|
+
return StateId.unwrap(a) > 0;
|
90
|
+
}
|
91
|
+
|
92
|
+
/// @dev Returns true if the value is zero (== 0).
|
93
|
+
function eqz(StateId a) public pure returns (bool) {
|
94
|
+
return StateId.unwrap(a) == 0;
|
95
|
+
}
|
96
|
+
|
97
|
+
/// @dev Returns true if the values are equal (==).
|
98
|
+
function eq(StateId a, StateId b) public pure returns (bool isSame) {
|
99
|
+
return eqStateId(a, b);
|
100
|
+
}
|
101
|
+
}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
type Timestamp is uint40;
|
5
|
+
|
6
|
+
using {
|
7
|
+
gtTimestamp as >,
|
8
|
+
gteTimestamp as >=,
|
9
|
+
ltTimestamp as <,
|
10
|
+
lteTimestamp as <=,
|
11
|
+
eqTimestamp as ==,
|
12
|
+
neTimestamp as !=,
|
13
|
+
TimestampLib.gtz,
|
14
|
+
TimestampLib.eqz,
|
15
|
+
TimestampLib.addSeconds
|
16
|
+
} for Timestamp global;
|
17
|
+
|
18
|
+
/// @dev return true if Timestamp a is after Timestamp b
|
19
|
+
function gtTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
20
|
+
return Timestamp.unwrap(a) > Timestamp.unwrap(b);
|
21
|
+
}
|
22
|
+
|
23
|
+
/// @dev return true if Timestamp a is after or equal to Timestamp b
|
24
|
+
function gteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
25
|
+
return Timestamp.unwrap(a) >= Timestamp.unwrap(b);
|
26
|
+
}
|
27
|
+
|
28
|
+
/// @dev return true if Timestamp a is before Timestamp b
|
29
|
+
function ltTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
30
|
+
return Timestamp.unwrap(a) < Timestamp.unwrap(b);
|
31
|
+
}
|
32
|
+
|
33
|
+
/// @dev return true if Timestamp a is before or equal to Timestamp b
|
34
|
+
function lteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
35
|
+
return Timestamp.unwrap(a) <= Timestamp.unwrap(b);
|
36
|
+
}
|
37
|
+
|
38
|
+
/// @dev return true if Timestamp a is equal to Timestamp b
|
39
|
+
function eqTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
40
|
+
return Timestamp.unwrap(a) == Timestamp.unwrap(b);
|
41
|
+
}
|
42
|
+
|
43
|
+
/// @dev return true if Timestamp a is not equal to Timestamp b
|
44
|
+
function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
|
45
|
+
return Timestamp.unwrap(a) != Timestamp.unwrap(b);
|
46
|
+
}
|
47
|
+
|
48
|
+
/// @dev Converts the uint256 to a Timestamp.
|
49
|
+
function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
|
50
|
+
return Timestamp.wrap(uint40(timestamp));
|
51
|
+
}
|
52
|
+
|
53
|
+
function blockTimestamp() view returns (Timestamp) {
|
54
|
+
return toTimestamp(block.timestamp);
|
55
|
+
}
|
56
|
+
|
57
|
+
/// @dev Return the Timestamp zero (0)
|
58
|
+
function zeroTimestamp() pure returns (Timestamp) {
|
59
|
+
return toTimestamp(0);
|
60
|
+
}
|
61
|
+
|
62
|
+
library TimestampLib {
|
63
|
+
/// @dev return true if Timestamp a is after Timestamp b
|
64
|
+
function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {
|
65
|
+
return gtTimestamp(a, b);
|
66
|
+
}
|
67
|
+
|
68
|
+
/// @dev return true if Timestamp a is after or the same than Timestamp b
|
69
|
+
function gte(
|
70
|
+
Timestamp a,
|
71
|
+
Timestamp b
|
72
|
+
) public pure returns (bool isAfterOrSame) {
|
73
|
+
return gteTimestamp(a, b);
|
74
|
+
}
|
75
|
+
|
76
|
+
/// @dev return true if Timestamp a is before Timestamp b
|
77
|
+
function lt(Timestamp a, Timestamp b) public pure returns (bool isBefore) {
|
78
|
+
return ltTimestamp(a, b);
|
79
|
+
}
|
80
|
+
|
81
|
+
/// @dev return true if Timestamp a is before or the same than Timestamp b
|
82
|
+
function lte(
|
83
|
+
Timestamp a,
|
84
|
+
Timestamp b
|
85
|
+
) public pure returns (bool isBeforeOrSame) {
|
86
|
+
return lteTimestamp(a, b);
|
87
|
+
}
|
88
|
+
|
89
|
+
/// @dev return true if Timestamp a is equal to Timestamp b
|
90
|
+
function eq(Timestamp a, Timestamp b) public pure returns (bool isSame) {
|
91
|
+
return eqTimestamp(a, b);
|
92
|
+
}
|
93
|
+
|
94
|
+
/// @dev return true if Timestamp a is not equal to Timestamp b
|
95
|
+
function ne(
|
96
|
+
Timestamp a,
|
97
|
+
Timestamp b
|
98
|
+
) public pure returns (bool isDifferent) {
|
99
|
+
return neTimestamp(a, b);
|
100
|
+
}
|
101
|
+
|
102
|
+
/// @dev return true if Timestamp is larger than 0
|
103
|
+
function gtz(Timestamp timestamp) public pure returns (bool) {
|
104
|
+
return Timestamp.unwrap(timestamp) > 0;
|
105
|
+
}
|
106
|
+
|
107
|
+
/// @dev return true if Timestamp equals 0
|
108
|
+
function eqz(Timestamp timestamp) public pure returns (bool) {
|
109
|
+
return Timestamp.unwrap(timestamp) == 0;
|
110
|
+
}
|
111
|
+
|
112
|
+
/// @dev return true if Timestamp a is not equal to Timestamp b
|
113
|
+
function addSeconds(
|
114
|
+
Timestamp timestamp,
|
115
|
+
uint256 timeDelta
|
116
|
+
) public pure returns (Timestamp) {
|
117
|
+
return toTimestamp(Timestamp.unwrap(timestamp) + uint40(timeDelta));
|
118
|
+
}
|
119
|
+
|
120
|
+
function toInt(Timestamp timestamp) public pure returns (uint256) {
|
121
|
+
return uint256(uint40(Timestamp.unwrap(timestamp)));
|
122
|
+
}
|
123
|
+
}
|