@etherisc/gif-next 0.0.2-c4efd5e → 0.0.2-c576a00-897
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 +85 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +48 -53
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +48 -53
- 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/{IProduct.sol → IProductComponent.sol}/IProductComponent.json +139 -52
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +218 -44
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +144 -70
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- 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/kvstore/BundleModuleStore.sol/BundleModuleStore.dbg.json +4 -0
- package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.json +543 -0
- package/artifacts/contracts/experiment/kvstore/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/experiment/kvstore/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.dbg.json +4 -0
- package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.json +185 -0
- package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.json +383 -0
- package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.dbg.json +4 -0
- package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.json +1064 -0
- 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 +1414 -289
- 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/IServiceLinked.sol/IServiceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccessComponentTypeRoles.json → IServiceLinked.sol/IServiceLinked.json} +14 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1715 -345
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → InstanceBase.sol/InstanceBase.json} +128 -142
- 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 +276 -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 +276 -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 +40 -97
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +134 -0
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.json +182 -0
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +221 -0
- 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 +142 -112
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +142 -112
- 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 +57 -57
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +50 -63
- 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 +167 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +185 -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 +491 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +300 -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/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponentContract.json → service/IService.sol/IService.json} +148 -27
- 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/instance/service/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +103 -77
- 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 +194 -69
- 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 +18 -63
- 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 +18 -63
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
- 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 +82 -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/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 +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +40 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- 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/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 +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +58 -58
- 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 +89 -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 +162 -10
- package/contracts/components/Product.sol +75 -13
- package/contracts/experiment/kvstore/BundleModuleStore.sol +93 -0
- package/contracts/experiment/kvstore/IBundle.sol +22 -0
- package/contracts/experiment/kvstore/KeyMapper.sol +40 -0
- package/contracts/experiment/kvstore/KeyValueStore.sol +156 -0
- package/contracts/experiment/kvstore/KvStore.sol +195 -0
- 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/instance/IInstance.sol +43 -8
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/IServiceLinked.sol +12 -0
- package/contracts/instance/Instance.sol +45 -43
- package/contracts/instance/InstanceBase.sol +71 -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 +228 -0
- package/contracts/instance/module/bundle/IBundle.sol +53 -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 +103 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/module/lifecycle/ILifecycle.sol +47 -0
- package/contracts/instance/module/lifecycle/LifecycleModule.sol +89 -0
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +84 -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 +39 -0
- package/contracts/instance/module/risk/RiskModule.sol +55 -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 +171 -0
- package/contracts/instance/service/ComponentServiceBase.sol +41 -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/IService.sol +15 -0
- package/contracts/instance/service/PoolService.sol +123 -0
- package/contracts/instance/service/ProductService.sol +355 -0
- package/contracts/instance/service/ServiceBase.sol +39 -0
- package/contracts/registry/ChainNft.sol +61 -37
- package/contracts/registry/IRegistry.sol +27 -50
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +281 -109
- 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/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +16 -0
- package/contracts/types/Fee.sol +51 -0
- package/contracts/types/NftId.sol +7 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +119 -0
- package/contracts/types/RiskId.sol +26 -0
- package/contracts/types/RoleId.sol +36 -0
- package/contracts/types/StateId.sol +95 -0
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +15 -14
- package/contracts/types/Version.sol +95 -0
- package/package.json +13 -6
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- 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/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/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 -147
- 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/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
- 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 -60
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -9
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -213
- package/contracts/instance/component/IComponent.sol +0 -73
- package/contracts/instance/policy/IPolicy.sol +0 -51
- package/contracts/instance/policy/PolicyModule.sol +0 -91
- package/contracts/instance/pool/IPoolModule.sol +0 -29
- package/contracts/instance/pool/PoolModule.sol +0 -73
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -112
@@ -0,0 +1,89 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
|
5
|
+
import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
|
6
|
+
import {Version, VersionPart} from "../types/Version.sol";
|
7
|
+
|
8
|
+
import {IVersionable} from "./IVersionable.sol";
|
9
|
+
|
10
|
+
abstract contract Versionable is IVersionable {
|
11
|
+
|
12
|
+
mapping(Version version => VersionInfo info) private _versionHistory;
|
13
|
+
Version [] private _versions;
|
14
|
+
|
15
|
+
|
16
|
+
// controlled activation for controller contract
|
17
|
+
constructor() {
|
18
|
+
_activate(address(0), msg.sender);
|
19
|
+
}
|
20
|
+
|
21
|
+
// IMPORTANT this function needs to be implemented by each new version
|
22
|
+
// and needs to call internal function call _activate()
|
23
|
+
function activate(address implementation, address activatedBy)
|
24
|
+
external
|
25
|
+
override
|
26
|
+
{
|
27
|
+
_activate(implementation, activatedBy);
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
// can only be called once per contract
|
32
|
+
// needs bo be called inside the proxy upgrade tx
|
33
|
+
function _activate(
|
34
|
+
address implementation,
|
35
|
+
address activatedBy
|
36
|
+
)
|
37
|
+
internal
|
38
|
+
{
|
39
|
+
Version thisVersion = getVersion();
|
40
|
+
require(
|
41
|
+
!isActivated(thisVersion),
|
42
|
+
"ERROR:VRN-001:VERSION_ALREADY_ACTIVATED"
|
43
|
+
);
|
44
|
+
|
45
|
+
// require increasing version number
|
46
|
+
if(_versions.length > 0) {
|
47
|
+
Version lastVersion = _versions[_versions.length - 1];
|
48
|
+
require(
|
49
|
+
thisVersion > lastVersion,
|
50
|
+
"ERROR:VRN-002:VERSION_NOT_INCREASING"
|
51
|
+
);
|
52
|
+
}
|
53
|
+
|
54
|
+
// update version history
|
55
|
+
_versions.push(thisVersion);
|
56
|
+
_versionHistory[thisVersion] = VersionInfo(
|
57
|
+
thisVersion,
|
58
|
+
implementation,
|
59
|
+
activatedBy,
|
60
|
+
blockTimestamp(),
|
61
|
+
blockNumber()
|
62
|
+
);
|
63
|
+
|
64
|
+
emit LogVersionableActivated(thisVersion, implementation, activatedBy);
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
function isActivated(Version _version) public override view returns(bool) {
|
69
|
+
return _versionHistory[_version].activatedIn.toInt() > 0;
|
70
|
+
}
|
71
|
+
|
72
|
+
|
73
|
+
function getVersion() public pure virtual returns(Version);
|
74
|
+
|
75
|
+
|
76
|
+
function getVersionCount() external view override returns(uint256) {
|
77
|
+
return _versions.length;
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
function getVersion(uint256 idx) external view override returns(Version) {
|
82
|
+
return _versions[idx];
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
function getVersionInfo(Version _version) external override view returns(VersionInfo memory) {
|
87
|
+
return _versionHistory[_version];
|
88
|
+
}
|
89
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {UFixed, UFixedMathLib} from "../types/UFixed.sol";
|
5
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
6
|
+
|
7
|
+
contract TestFee {
|
8
|
+
|
9
|
+
function createFee(
|
10
|
+
uint256 fractionalValue,
|
11
|
+
int8 exponent,
|
12
|
+
uint256 fixedValue
|
13
|
+
)
|
14
|
+
external
|
15
|
+
pure
|
16
|
+
returns(Fee memory fee)
|
17
|
+
{
|
18
|
+
return FeeLib.toFee(UFixedMathLib.toUFixed(fractionalValue, exponent), fixedValue);
|
19
|
+
}
|
20
|
+
|
21
|
+
function getZeroFee() external pure returns(Fee memory fee) {
|
22
|
+
return FeeLib.zeroFee();
|
23
|
+
}
|
24
|
+
|
25
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {UFixed} from "../../contracts/types/UFixed.sol";
|
6
|
+
import {Fee} from "../../contracts/types/Fee.sol";
|
7
|
+
import {Pool} from "../../contracts/components/Pool.sol";
|
8
|
+
|
9
|
+
|
10
|
+
contract TestPool is Pool {
|
11
|
+
|
12
|
+
constructor(
|
13
|
+
address registry,
|
14
|
+
NftId instanceNftid,
|
15
|
+
address token,
|
16
|
+
bool isVerifying,
|
17
|
+
UFixed collateralizationLevel
|
18
|
+
)
|
19
|
+
Pool(registry, instanceNftid, token, isVerifying, collateralizationLevel)
|
20
|
+
// solhint-disable-next-line no-empty-blocks
|
21
|
+
{}
|
22
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Product} from "../../contracts/components/Product.sol";
|
5
|
+
import {NftId, toNftId} from "../../contracts/types/NftId.sol";
|
6
|
+
import {Timestamp, blockTimestamp} from "../../contracts/types/Timestamp.sol";
|
7
|
+
import {Fee} from "../../contracts/types/Fee.sol";
|
8
|
+
|
9
|
+
contract TestProduct is Product {
|
10
|
+
|
11
|
+
event LogTestProductSender(address sender);
|
12
|
+
|
13
|
+
constructor(address registry, NftId instanceNftid, address token, address pool)
|
14
|
+
Product(registry, instanceNftid, token, pool)
|
15
|
+
// solhint-disable-next-line no-empty-blocks
|
16
|
+
{}
|
17
|
+
|
18
|
+
function applyForPolicy(
|
19
|
+
uint256 sumInsuredAmount,
|
20
|
+
uint256 premiumAmount,
|
21
|
+
uint256 lifetime,
|
22
|
+
NftId bundleNftId
|
23
|
+
)
|
24
|
+
external
|
25
|
+
returns(NftId nftId)
|
26
|
+
{
|
27
|
+
nftId = _createApplication(
|
28
|
+
msg.sender, // policy holder
|
29
|
+
sumInsuredAmount,
|
30
|
+
premiumAmount,
|
31
|
+
lifetime,
|
32
|
+
bundleNftId
|
33
|
+
);
|
34
|
+
}
|
35
|
+
|
36
|
+
function underwrite(NftId nftId, bool requirePremiumPayment, Timestamp activateAt) external {
|
37
|
+
emit LogTestProductSender(msg.sender);
|
38
|
+
_underwrite(nftId, requirePremiumPayment, activateAt);
|
39
|
+
}
|
40
|
+
|
41
|
+
function collectPremium(NftId nftId, Timestamp activateAt) external {
|
42
|
+
_collectPremium(nftId, activateAt);
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {ObjectType, TOKEN} from "../../contracts/types/ObjectType.sol";
|
6
|
+
import {IRegistry} from "../../contracts/registry/IRegistry.sol";
|
7
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
8
|
+
|
9
|
+
contract TestRegisterable is Registerable {
|
10
|
+
|
11
|
+
constructor(address registry, NftId registryNftId)
|
12
|
+
Registerable(registry, registryNftId)
|
13
|
+
// solhint-disable-next-line no-empty-blocks
|
14
|
+
{}
|
15
|
+
|
16
|
+
function getType() external pure override returns (ObjectType) {
|
17
|
+
return TOKEN();
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {RoleId, toRoleId, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
5
|
+
|
6
|
+
contract TestRoleId {
|
7
|
+
function getRole(string memory roleName) external pure returns (RoleId) { return toRoleId(roleName); }
|
8
|
+
|
9
|
+
function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
|
10
|
+
function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
|
11
|
+
|
12
|
+
function getPoolOwnerRoleName() external pure returns (string memory) { return POOL_OWNER_ROLE_NAME(); }
|
13
|
+
function getPoolOwnerRole() external pure returns (RoleId) { return POOL_OWNER_ROLE(); }
|
14
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
5
|
+
import {Version, VersionLib} from "../../contracts/types/Version.sol";
|
6
|
+
import {ServiceBase} from "../../contracts/instance/service/ServiceBase.sol";
|
7
|
+
|
8
|
+
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
9
|
+
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
10
|
+
|
11
|
+
contract TestService is ServiceBase {
|
12
|
+
|
13
|
+
string public constant NAME = "TestService";
|
14
|
+
|
15
|
+
constructor(address registry, NftId registryNftId)
|
16
|
+
ServiceBase(registry, registryNftId)
|
17
|
+
// solhint-disable-next-line no-empty-blocks
|
18
|
+
{}
|
19
|
+
|
20
|
+
function getVersion()
|
21
|
+
public
|
22
|
+
pure
|
23
|
+
virtual override (IVersionable, Versionable)
|
24
|
+
returns(Version)
|
25
|
+
{
|
26
|
+
return VersionLib.toVersion(3,0,0);
|
27
|
+
}
|
28
|
+
|
29
|
+
function getName() external pure override returns(string memory name) {
|
30
|
+
return NAME;
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
5
|
+
|
6
|
+
contract TestUsdc is ERC20 {
|
7
|
+
|
8
|
+
// https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
|
9
|
+
string public constant NAME = "USDC - Test";
|
10
|
+
string public constant SYMBOL = "USDC";
|
11
|
+
uint8 public constant DECIMALS = 6;
|
12
|
+
uint256 public constant INITIAL_SUPPLY = 10**9 * 10**DECIMALS; // 1 Billion 1'000'000'000
|
13
|
+
// decimals == 18 (openzeppelin erc20 default)
|
14
|
+
constructor()
|
15
|
+
ERC20(NAME, SYMBOL)
|
16
|
+
{
|
17
|
+
_mint(
|
18
|
+
_msgSender(),
|
19
|
+
INITIAL_SUPPLY
|
20
|
+
);
|
21
|
+
}
|
22
|
+
|
23
|
+
function decimals() public pure override returns(uint8) {
|
24
|
+
return DECIMALS;
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Version, VersionPart, VersionLib} from "../types/Version.sol";
|
5
|
+
|
6
|
+
contract TestVersion {
|
7
|
+
|
8
|
+
function createVersion(uint major, uint minor, uint patch) external pure returns(Version) {
|
9
|
+
return VersionLib.toVersion(major, minor, patch);
|
10
|
+
}
|
11
|
+
|
12
|
+
function createVersionPart(uint versionPart) external pure returns(VersionPart) {
|
13
|
+
return VersionLib.toVersionPart(uint8(versionPart));
|
14
|
+
}
|
15
|
+
|
16
|
+
function getVersionParts(Version version)
|
17
|
+
external
|
18
|
+
pure
|
19
|
+
returns(
|
20
|
+
VersionPart major,
|
21
|
+
VersionPart minor,
|
22
|
+
VersionPart patch
|
23
|
+
)
|
24
|
+
{
|
25
|
+
return version.toVersionParts();
|
26
|
+
}
|
27
|
+
|
28
|
+
function getMajorPart(Version version) external pure returns(VersionPart major) {
|
29
|
+
return version.toMajorPart();
|
30
|
+
}
|
31
|
+
|
32
|
+
function getZeroVersion() external pure returns(Version) {
|
33
|
+
return VersionLib.zeroVersion();
|
34
|
+
}
|
35
|
+
|
36
|
+
function isSameVersion(Version a, Version b) external pure returns(bool) {
|
37
|
+
return a == b;
|
38
|
+
}
|
39
|
+
|
40
|
+
function isLargerVersion(Version a, Version b) external pure returns(bool) {
|
41
|
+
return a > b;
|
42
|
+
}
|
43
|
+
|
44
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Version, VersionLib} from "../../contracts/types/Version.sol";
|
5
|
+
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
6
|
+
|
7
|
+
contract TestVersionable is Versionable {
|
8
|
+
|
9
|
+
function getVersion()
|
10
|
+
public
|
11
|
+
pure
|
12
|
+
virtual override
|
13
|
+
returns(Version)
|
14
|
+
{
|
15
|
+
return VersionLib.toVersion(3,0,0);
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
// based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
|
5
|
+
library LibAddressSet {
|
6
|
+
|
7
|
+
struct Set {
|
8
|
+
address[] elements;
|
9
|
+
mapping(address element => uint256 index) at;
|
10
|
+
}
|
11
|
+
|
12
|
+
function add(Set storage set, address element) external returns(bool added) {
|
13
|
+
if (set.at[element] == 0) {
|
14
|
+
set.elements.push(element);
|
15
|
+
set.at[element] = set.elements.length;
|
16
|
+
return true;
|
17
|
+
} else {
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
function remove(Set storage set, address element) external returns(bool removed) {
|
23
|
+
uint256 elementIndex = set.at[element];
|
24
|
+
|
25
|
+
if (elementIndex > 0) {
|
26
|
+
uint256 toDeleteIndex = elementIndex - 1;
|
27
|
+
uint256 lastIndex = set.elements.length - 1;
|
28
|
+
|
29
|
+
if (lastIndex != toDeleteIndex) {
|
30
|
+
address lastElement = set.elements[lastIndex];
|
31
|
+
set.elements[toDeleteIndex] = lastElement;
|
32
|
+
set.at[lastElement] = elementIndex; // Replace lastValue's index to valueIndex
|
33
|
+
}
|
34
|
+
|
35
|
+
set.elements.pop();
|
36
|
+
delete set.at[element];
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
|
40
|
+
return false;
|
41
|
+
}
|
42
|
+
|
43
|
+
function isEmpty(Set storage set) external view returns(bool empty) {
|
44
|
+
return set.elements.length == 0;
|
45
|
+
}
|
46
|
+
|
47
|
+
function contains(Set storage set, address element) external view returns(bool inSet) {
|
48
|
+
return set.at[element] > 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
function getLength(Set storage set) external view returns(uint256 length) {
|
52
|
+
return set.elements.length;
|
53
|
+
}
|
54
|
+
|
55
|
+
function getElementAt(Set storage set, uint256 index) external view returns(address element) {
|
56
|
+
return set.elements[index];
|
57
|
+
}
|
58
|
+
}
|
@@ -10,6 +10,8 @@ using {
|
|
10
10
|
lteBlocknumber as <=,
|
11
11
|
eqBlocknumber as ==,
|
12
12
|
neBlocknumber as !=,
|
13
|
+
BlocknumberLib.eqz,
|
14
|
+
BlocknumberLib.eqz,
|
13
15
|
BlocknumberLib.toInt
|
14
16
|
} for Blocknumber global;
|
15
17
|
|
@@ -79,6 +81,13 @@ library BlocknumberLib {
|
|
79
81
|
return gteBlocknumber(a, b);
|
80
82
|
}
|
81
83
|
|
84
|
+
/// @dev return true if Blocknumber a > zeroBlocknumber
|
85
|
+
function gtz(
|
86
|
+
Blocknumber a
|
87
|
+
) public pure returns (bool) {
|
88
|
+
return Blocknumber.unwrap(a) > 0;
|
89
|
+
}
|
90
|
+
|
82
91
|
/// @dev return true if Blocknumber a is less than Blocknumber b
|
83
92
|
function lt(
|
84
93
|
Blocknumber a,
|
@@ -103,6 +112,13 @@ library BlocknumberLib {
|
|
103
112
|
return eqBlocknumber(a, b);
|
104
113
|
}
|
105
114
|
|
115
|
+
/// @dev return true if Blocknumber a is zeroBlocknumber
|
116
|
+
function eqz(
|
117
|
+
Blocknumber a
|
118
|
+
) public pure returns (bool) {
|
119
|
+
return Blocknumber.unwrap(a) == 0;
|
120
|
+
}
|
121
|
+
|
106
122
|
/// @dev return true if Blocknumber a is not equal to Blocknumber b
|
107
123
|
function ne(
|
108
124
|
Blocknumber a,
|
@@ -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
|
+
}
|
@@ -5,7 +5,13 @@ pragma solidity ^0.8.19;
|
|
5
5
|
type NftId is uint96;
|
6
6
|
|
7
7
|
// type bindings
|
8
|
-
using {
|
8
|
+
using {
|
9
|
+
eqNftId as ==,
|
10
|
+
neNftId as !=,
|
11
|
+
NftIdLib.toInt,
|
12
|
+
NftIdLib.gtz,
|
13
|
+
NftIdLib.eqz
|
14
|
+
} for NftId global;
|
9
15
|
|
10
16
|
// general pure free functions
|
11
17
|
/// @dev Converts the uint256 to a NftId.
|
@@ -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,119 @@
|
|
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 RISK() pure returns (ObjectType) {
|
45
|
+
return toObjectType(101);
|
46
|
+
}
|
47
|
+
|
48
|
+
function COMPENSATION() pure returns (ObjectType) {
|
49
|
+
return toObjectType(110);
|
50
|
+
}
|
51
|
+
|
52
|
+
function ORACLE() pure returns (ObjectType) {
|
53
|
+
return toObjectType(120);
|
54
|
+
}
|
55
|
+
|
56
|
+
function POOL() pure returns (ObjectType) {
|
57
|
+
return toObjectType(130);
|
58
|
+
}
|
59
|
+
|
60
|
+
function POLICY() pure returns (ObjectType) {
|
61
|
+
return toObjectType(200);
|
62
|
+
}
|
63
|
+
|
64
|
+
function BUNDLE() pure returns (ObjectType) {
|
65
|
+
return toObjectType(210);
|
66
|
+
}
|
67
|
+
|
68
|
+
function CLAIM() pure returns (ObjectType) {
|
69
|
+
return toObjectType(201);
|
70
|
+
}
|
71
|
+
|
72
|
+
function PAYOUT() pure returns (ObjectType) {
|
73
|
+
return toObjectType(202);
|
74
|
+
}
|
75
|
+
|
76
|
+
/// @dev Converts the uint8 to a ObjectType.
|
77
|
+
function toObjectType(uint256 objectType) pure returns (ObjectType) {
|
78
|
+
return ObjectType.wrap(uint8(objectType));
|
79
|
+
}
|
80
|
+
|
81
|
+
/// @dev Return the ObjectType zero (0)
|
82
|
+
function zeroObjectType() pure returns (ObjectType) {
|
83
|
+
return ObjectType.wrap(0);
|
84
|
+
}
|
85
|
+
|
86
|
+
// pure free functions for operators
|
87
|
+
function eqObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
|
88
|
+
return ObjectType.unwrap(a) == ObjectType.unwrap(b);
|
89
|
+
}
|
90
|
+
|
91
|
+
function neObjectType(
|
92
|
+
ObjectType a,
|
93
|
+
ObjectType b
|
94
|
+
) pure returns (bool isDifferent) {
|
95
|
+
return ObjectType.unwrap(a) != ObjectType.unwrap(b);
|
96
|
+
}
|
97
|
+
|
98
|
+
// library functions that operate on user defined type
|
99
|
+
library ObjectTypeLib {
|
100
|
+
/// @dev Converts the NftId to a uint256.
|
101
|
+
function toInt(ObjectType objectType) public pure returns (uint96) {
|
102
|
+
return uint96(ObjectType.unwrap(objectType));
|
103
|
+
}
|
104
|
+
|
105
|
+
/// @dev Returns true if the value is non-zero (> 0).
|
106
|
+
function gtz(ObjectType a) public pure returns (bool) {
|
107
|
+
return ObjectType.unwrap(a) > 0;
|
108
|
+
}
|
109
|
+
|
110
|
+
/// @dev Returns true if the value is zero (== 0).
|
111
|
+
function eqz(ObjectType a) public pure returns (bool) {
|
112
|
+
return ObjectType.unwrap(a) == 0;
|
113
|
+
}
|
114
|
+
|
115
|
+
/// @dev Returns true if the values are equal (==).
|
116
|
+
function eq(ObjectType a, ObjectType b) public pure returns (bool isSame) {
|
117
|
+
return eqObjectType(a, b);
|
118
|
+
}
|
119
|
+
}
|