@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,195 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
/*
|
5
|
+
fa = {'from': accounts[0]}
|
6
|
+
tl = TimestampLib.deploy(fa)
|
7
|
+
kv = KvStore.deploy(fa)
|
8
|
+
r1 = kv.createRiskInfo(kv.s2b('risk spec 1'))
|
9
|
+
b1 = kv.createBundleInfo(123456, 10000000, kv.s2b('bundle filter 1'))
|
10
|
+
|
11
|
+
(r1k, r1v) = kv.riskInfoToKeyValue(3, r1)
|
12
|
+
|
13
|
+
kv.toKey(r1k)
|
14
|
+
|
15
|
+
*/
|
16
|
+
|
17
|
+
import {NftId, toNftId} from "../../types/NftId.sol";
|
18
|
+
import {RiskId, toRiskId} from "../../types/RiskId.sol";
|
19
|
+
import {ObjectType, BUNDLE, RISK} from "../../types/ObjectType.sol";
|
20
|
+
import {VersionPart} from "../../types/Version.sol";
|
21
|
+
import {StateId, ACTIVE} from "../../types/StateId.sol";
|
22
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
24
|
+
import {IBundle} from "./IBundle.sol";
|
25
|
+
import {IRisk} from "../../instance/module/risk/IRisk.sol";
|
26
|
+
|
27
|
+
type KeyId is bytes31;
|
28
|
+
|
29
|
+
contract KvStore {
|
30
|
+
|
31
|
+
uint8 public constant TYPE_SHIFT = 31 * 8;
|
32
|
+
bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
|
33
|
+
bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
|
34
|
+
|
35
|
+
struct Key {
|
36
|
+
ObjectType objectType;
|
37
|
+
KeyId id;
|
38
|
+
}
|
39
|
+
|
40
|
+
struct Value {
|
41
|
+
VersionPart majorVersion;
|
42
|
+
bytes data;
|
43
|
+
}
|
44
|
+
|
45
|
+
mapping(bytes32 key => Value value) private _store;
|
46
|
+
bytes32[] private _keys;
|
47
|
+
|
48
|
+
function toKey32(RiskId riskId) public pure returns (bytes32 key) {
|
49
|
+
uint256 objectType = uint256(ObjectType.unwrap(RISK()));
|
50
|
+
uint256 id = uint96(RiskId.unwrap(riskId));
|
51
|
+
return bytes32(objectType << TYPE_SHIFT + id);
|
52
|
+
}
|
53
|
+
|
54
|
+
function toKey(bytes32 key32) public pure returns (Key memory key) {
|
55
|
+
ObjectType objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
|
56
|
+
KeyId id = KeyId.wrap(bytes31(key32 & ID_MASK));
|
57
|
+
return Key(objectType, id);
|
58
|
+
}
|
59
|
+
|
60
|
+
function toBytes32(uint256 value) public pure returns(bytes32) { return bytes32(value); }
|
61
|
+
|
62
|
+
// key store functions
|
63
|
+
function create(bytes32 key, Value memory value) public {
|
64
|
+
// add only store
|
65
|
+
require(VersionPart.unwrap(_store[key].majorVersion) == 0, "ERROR_KEY_USED");
|
66
|
+
_store[key] = value;
|
67
|
+
_keys.push(key);
|
68
|
+
}
|
69
|
+
|
70
|
+
function update(bytes32 key, Value memory value) public {
|
71
|
+
// add only store
|
72
|
+
require(VersionPart.unwrap(_store[key].majorVersion) > 0, "ERROR_KEY_UNKNOWN");
|
73
|
+
_store[key] = value;
|
74
|
+
}
|
75
|
+
|
76
|
+
function getIdMask() public pure returns (bytes32) { return ID_MASK; }
|
77
|
+
function getTypeMask() public pure returns (bytes32) { return TYPE_MASK; }
|
78
|
+
|
79
|
+
function get(bytes32 key) public view returns (Value memory value) {
|
80
|
+
return _store[key];
|
81
|
+
}
|
82
|
+
|
83
|
+
function exists(bytes32 key) public view returns (bool) {
|
84
|
+
return VersionPart.unwrap(_store[key].majorVersion) > 0;
|
85
|
+
}
|
86
|
+
|
87
|
+
function getKeyCount() public view returns (uint256 keyCount) {
|
88
|
+
return _keys.length;
|
89
|
+
}
|
90
|
+
|
91
|
+
function getKey(uint256 index) public view returns (bytes32 key) {
|
92
|
+
return _keys[index];
|
93
|
+
}
|
94
|
+
|
95
|
+
function s2b(string memory s) public pure returns (bytes memory b) {
|
96
|
+
return abi.encodePacked(s);
|
97
|
+
}
|
98
|
+
|
99
|
+
function b2s(bytes memory b) public pure returns (string memory s) {
|
100
|
+
return abi.decode(b, (string));
|
101
|
+
}
|
102
|
+
|
103
|
+
// risk related functions
|
104
|
+
|
105
|
+
function keyToRiskId(Key memory key) public pure returns (RiskId id) {
|
106
|
+
require(key.objectType == RISK(), "ERROR_NOT_RISK_KEY");
|
107
|
+
return RiskId.wrap(bytes12(KeyId.unwrap(key.id)));
|
108
|
+
}
|
109
|
+
|
110
|
+
function createRiskInfo(
|
111
|
+
bytes memory specification
|
112
|
+
)
|
113
|
+
public
|
114
|
+
view
|
115
|
+
returns(IRisk.RiskInfo memory info)
|
116
|
+
{
|
117
|
+
RiskId riskId = toRiskId(specification);
|
118
|
+
return IRisk.RiskInfo(
|
119
|
+
riskId,
|
120
|
+
ACTIVE(),
|
121
|
+
specification,
|
122
|
+
blockTimestamp(), // createdAt
|
123
|
+
blockNumber()); // updatedIn
|
124
|
+
}
|
125
|
+
|
126
|
+
function riskIdToKey(RiskId riskId) public pure returns(bytes32 key) {
|
127
|
+
return keccak256(abi.encode(RISK(), riskId));
|
128
|
+
}
|
129
|
+
|
130
|
+
function encodeRiskInfo(IRisk.RiskInfo memory info) public pure returns (bytes memory data) {
|
131
|
+
return abi.encode(info);
|
132
|
+
}
|
133
|
+
|
134
|
+
function decodeRiskInfo(bytes memory data) public pure returns (IRisk.RiskInfo memory info) {
|
135
|
+
return abi.decode(data, (IRisk.RiskInfo));
|
136
|
+
}
|
137
|
+
|
138
|
+
function riskInfoToKeyValue(VersionPart majorVersion, IRisk.RiskInfo memory info) public pure returns (bytes32 key, Value memory value) {
|
139
|
+
return (
|
140
|
+
toKey32(info.id),
|
141
|
+
Value(majorVersion, abi.encode(info))
|
142
|
+
);
|
143
|
+
}
|
144
|
+
|
145
|
+
function valueToRiskInfo(Value memory value) public pure returns (IRisk.RiskInfo memory info) {
|
146
|
+
return abi.decode(value.data, (IRisk.RiskInfo));
|
147
|
+
}
|
148
|
+
|
149
|
+
// bundle related functions
|
150
|
+
function createBundleInfo(
|
151
|
+
NftId bundleNftId,
|
152
|
+
uint256 amount,
|
153
|
+
bytes calldata filter
|
154
|
+
)
|
155
|
+
public
|
156
|
+
view
|
157
|
+
returns(IBundle.BundleInfo memory info)
|
158
|
+
{
|
159
|
+
uint256 lifetime = 30 * 24 * 3600;
|
160
|
+
return IBundle.BundleInfo(
|
161
|
+
bundleNftId,
|
162
|
+
toNftId(123456),
|
163
|
+
ACTIVE(),
|
164
|
+
filter,
|
165
|
+
amount,
|
166
|
+
0,
|
167
|
+
amount,
|
168
|
+
blockTimestamp().addSeconds(lifetime), // expiredAt
|
169
|
+
zeroTimestamp()); // closedAt
|
170
|
+
}
|
171
|
+
|
172
|
+
function nftIdToKey(NftId nftId) public pure returns(bytes32 key) {
|
173
|
+
return keccak256(abi.encode(BUNDLE(), nftId));
|
174
|
+
}
|
175
|
+
|
176
|
+
function nftIdToKeyPacked(NftId nftId) public pure returns(bytes32 key) {
|
177
|
+
return keccak256(abi.encodePacked(BUNDLE(), nftId));
|
178
|
+
}
|
179
|
+
|
180
|
+
function bundleInfoToValue(VersionPart majorVersion, IBundle.BundleInfo memory info) public pure returns (Value memory value) {
|
181
|
+
return Value(majorVersion, abi.encode(info));
|
182
|
+
}
|
183
|
+
|
184
|
+
function valueToBundleInfo(Value memory value) public pure returns (IBundle.BundleInfo memory info) {
|
185
|
+
return abi.decode(value.data, (IBundle.BundleInfo));
|
186
|
+
}
|
187
|
+
|
188
|
+
function encodeBundleInfo(IBundle.BundleInfo memory info) public pure returns (bytes memory data) {
|
189
|
+
return abi.encode(info);
|
190
|
+
}
|
191
|
+
|
192
|
+
function decodeBundleInfo(bytes memory data) public pure returns (IBundle.BundleInfo memory info) {
|
193
|
+
return abi.decode(data, (IBundle.BundleInfo));
|
194
|
+
}
|
195
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
5
|
+
import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
|
6
|
+
|
7
|
+
contract LifeCycleModule {
|
8
|
+
mapping(ObjectType objectType => StateId initialState)
|
9
|
+
private _initialState;
|
10
|
+
|
11
|
+
mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
|
12
|
+
private _isValidTransition;
|
13
|
+
|
14
|
+
function getInitialState(
|
15
|
+
ObjectType objectType
|
16
|
+
) external view returns (StateId) {
|
17
|
+
return _initialState[objectType];
|
18
|
+
}
|
19
|
+
|
20
|
+
function isValidTransition(
|
21
|
+
ObjectType objectType,
|
22
|
+
StateId fromId,
|
23
|
+
StateId toId
|
24
|
+
) external view returns (bool) {
|
25
|
+
return _isValidTransition[objectType][fromId][toId];
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {StateId} from "../../types/StateId.sol";
|
5
|
+
|
6
|
+
interface ISMEE {
|
7
|
+
error ErrorInitialStateUndefined();
|
8
|
+
error ErrorStartStateUndefined();
|
9
|
+
error ErrorNextStateUndefined();
|
10
|
+
error ErrorStateChangeInvalid(StateId currentStateId, StateId newStateId);
|
11
|
+
|
12
|
+
event LogInitialStateSet(StateId initialStateId);
|
13
|
+
event LogStateChanged(StateId oldStateId, StateId newStateId);
|
14
|
+
}
|
15
|
+
|
16
|
+
interface ISM is ISMEE {
|
17
|
+
function changeToState(StateId newStateId) external;
|
18
|
+
|
19
|
+
function isValidTransition(
|
20
|
+
StateId currentStateId,
|
21
|
+
StateId newStateId
|
22
|
+
) external view returns (bool isValid);
|
23
|
+
|
24
|
+
function getState() external view returns (StateId currentStateId);
|
25
|
+
}
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# State Machines
|
2
|
+
|
3
|
+
Most GIF objects have a life cycle defined by a state machine.
|
4
|
+
|
5
|
+
For each object type the set of possible states is defined together with its initial state and the set of valid state transitions.
|
6
|
+
|
7
|
+
## Object Types without States
|
8
|
+
|
9
|
+
* Protocol
|
10
|
+
* Chains
|
11
|
+
* Registries (both chain and main registry)
|
12
|
+
|
13
|
+
## Object Types with States
|
14
|
+
|
15
|
+
* Tokens
|
16
|
+
* Instances
|
17
|
+
* Products
|
18
|
+
* Oracles
|
19
|
+
* Pools
|
20
|
+
* Bundles
|
21
|
+
* Policies
|
22
|
+
* Claim (non-NFT)
|
23
|
+
* Payout (non-NFT)
|
24
|
+
|
25
|
+
### Simple State Machine
|
26
|
+
|
27
|
+
Valid states
|
28
|
+
|
29
|
+
* Active (initial state)
|
30
|
+
* Paused
|
31
|
+
* Archived (final state)
|
32
|
+
|
33
|
+
Valid state transitions:
|
34
|
+
|
35
|
+
* Active -> Paused
|
36
|
+
* Paused -> Active
|
37
|
+
* Paused -> Archived
|
38
|
+
|
39
|
+
|
40
|
+
Candidate object types for simple state machine
|
41
|
+
|
42
|
+
* Token
|
43
|
+
* Instance
|
44
|
+
* Product
|
45
|
+
* Oracle
|
46
|
+
* Pool
|
47
|
+
|
48
|
+
To discuss:
|
49
|
+
|
50
|
+
* Archived is final state
|
51
|
+
* What mechanism should exist to revert an unintended transition to 'Archived' state. Should there be such a mechanism?
|
52
|
+
* What mechanism should exist when the NFT of such an object is burned prematurely. Should there be such a mechanism
|
53
|
+
|
54
|
+
### Bundle State Machine
|
55
|
+
|
56
|
+
Valid states
|
57
|
+
|
58
|
+
* Active (initial state)
|
59
|
+
* Paused
|
60
|
+
* Expired (implicit state)
|
61
|
+
* Closed (final state)
|
62
|
+
|
63
|
+
Expired is not an explicit state.
|
64
|
+
A bundle is expired for block.timestamp >= expiredAt
|
65
|
+
|
66
|
+
### Policy State Machine
|
67
|
+
|
68
|
+
Valid states
|
69
|
+
|
70
|
+
* Applied (initial state)
|
71
|
+
* Revoked (final state)
|
72
|
+
* Declined (final state)
|
73
|
+
* Active
|
74
|
+
* Expired (implicit state)
|
75
|
+
* Closed (final state)
|
76
|
+
|
77
|
+
Expired is not an explicit state.
|
78
|
+
A policy is expired for block.timestamp >= expiredAt
|
79
|
+
|
80
|
+
To discuss:
|
81
|
+
|
82
|
+
* Should 'Closed' be less explicit using a closedAt state variable?
|
83
|
+
* Or even more lighweight? ie. block.timestamp >= expiredAt and no open claims
|
84
|
+
|
85
|
+
Valid state transitions:
|
86
|
+
|
87
|
+
* Applied -> Revoked
|
88
|
+
* Applied -> Declined
|
89
|
+
* Applied -> Active
|
90
|
+
* Active -> Closed (needs to be expired)
|
91
|
+
|
92
|
+
### Claim State Machine
|
93
|
+
|
94
|
+
Valid states
|
95
|
+
* Applied (initial state)
|
96
|
+
* Confirmed
|
97
|
+
* Declined (final state)
|
98
|
+
* Closed (final state)
|
99
|
+
|
100
|
+
Valid state transitions:
|
101
|
+
* Applied -> Confirmed
|
102
|
+
* Applied -> Declined
|
103
|
+
* Confirmed -> Closed
|
104
|
+
|
105
|
+
### Payout State Machine
|
106
|
+
|
107
|
+
Valid states
|
108
|
+
* Expected
|
109
|
+
* PaidOut
|
110
|
+
|
111
|
+
Valid state transitions:
|
112
|
+
* Expected -> PaidOut
|
@@ -0,0 +1,57 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
|
5
|
+
import {ISM} from "./ISM.sol";
|
6
|
+
|
7
|
+
contract SM is ISM {
|
8
|
+
mapping(StateId currentState => mapping(StateId newState => bool isValid))
|
9
|
+
private _isValidTransition;
|
10
|
+
|
11
|
+
StateId internal _state;
|
12
|
+
|
13
|
+
function setInitialState(StateId initialStateId) internal {
|
14
|
+
if (initialStateId == zeroStateId()) {
|
15
|
+
revert ErrorInitialStateUndefined();
|
16
|
+
}
|
17
|
+
|
18
|
+
_state = initialStateId;
|
19
|
+
}
|
20
|
+
|
21
|
+
function addTransition(
|
22
|
+
StateId currentStateId,
|
23
|
+
StateId nextStateId
|
24
|
+
) internal {
|
25
|
+
if (currentStateId == zeroStateId()) {
|
26
|
+
revert ErrorStartStateUndefined();
|
27
|
+
}
|
28
|
+
|
29
|
+
if (nextStateId == zeroStateId()) {
|
30
|
+
revert ErrorNextStateUndefined();
|
31
|
+
}
|
32
|
+
|
33
|
+
_isValidTransition[currentStateId][nextStateId] = true;
|
34
|
+
}
|
35
|
+
|
36
|
+
function changeToState(StateId newStateId) external override {
|
37
|
+
if (!_isValidTransition[_state][newStateId]) {
|
38
|
+
revert ErrorStateChangeInvalid(_state, newStateId);
|
39
|
+
}
|
40
|
+
|
41
|
+
StateId stateOld = _state;
|
42
|
+
_state = newStateId;
|
43
|
+
|
44
|
+
emit LogStateChanged(stateOld, _state);
|
45
|
+
}
|
46
|
+
|
47
|
+
function isValidTransition(
|
48
|
+
StateId currentStateId,
|
49
|
+
StateId newStateId
|
50
|
+
) external view override returns (bool isValid) {
|
51
|
+
return _isValidTransition[currentStateId][newStateId];
|
52
|
+
}
|
53
|
+
|
54
|
+
function getState() external view override returns (StateId state) {
|
55
|
+
return _state;
|
56
|
+
}
|
57
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {StateId, toStateId} from "../../types/StateId.sol";
|
5
|
+
import {SM} from "./SM.sol";
|
6
|
+
|
7
|
+
contract SimpleStateMachine is SM {
|
8
|
+
uint8 public constant STATE_ACTIVE = 10;
|
9
|
+
uint8 public constant STATE_PAUSED = 20;
|
10
|
+
uint8 public constant STATE_ARCHIVED = 30;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
addTransition(ACTIVE(), PAUSED());
|
14
|
+
addTransition(PAUSED(), ACTIVE());
|
15
|
+
addTransition(PAUSED(), ARCHIVED());
|
16
|
+
|
17
|
+
setInitialState(ACTIVE());
|
18
|
+
}
|
19
|
+
|
20
|
+
function ACTIVE() public pure returns (StateId stateId) {
|
21
|
+
return toStateId(STATE_ACTIVE);
|
22
|
+
}
|
23
|
+
|
24
|
+
function PAUSED() public pure returns (StateId stateId) {
|
25
|
+
return toStateId(STATE_PAUSED);
|
26
|
+
}
|
27
|
+
|
28
|
+
function ARCHIVED() public pure returns (StateId stateId) {
|
29
|
+
return toStateId(STATE_ARCHIVED);
|
30
|
+
}
|
31
|
+
}
|
@@ -1,18 +1,53 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IAccessModule} from "./access/IAccess.sol";
|
6
|
-
import {IComponentModule} from "./component/IComponent.sol";
|
7
|
-
import {IProductModule} from "./product/IProductService.sol";
|
8
|
-
import {IPolicyModule} from "./policy/IPolicy.sol";
|
9
|
-
import {IPoolModule} from "./pool/IPoolModule.sol";
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
10
5
|
|
6
|
+
|
7
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
8
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
9
|
+
import {IOwnable} from "../shared/IOwnable.sol";
|
10
|
+
import {RoleId} from "../types/RoleId.sol";
|
11
|
+
|
12
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
13
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
14
|
+
import {ICompensationModule} from "./module/compensation/ICompensation.sol";
|
15
|
+
import {ILifecycleModule} from "./module/lifecycle/ILifecycle.sol";
|
16
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
17
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
18
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
19
|
+
import {IRiskModule} from "./module/risk/IRisk.sol";
|
20
|
+
import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
|
21
|
+
|
22
|
+
import {IRegistry, IRegistryLinked} from "../registry/IRegistryLinked.sol";
|
23
|
+
import {IServiceLinked} from "./IServiceLinked.sol";
|
24
|
+
|
25
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
26
|
+
import {IProductService} from "./service/IProductService.sol";
|
27
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
28
|
+
|
29
|
+
|
30
|
+
// solhint-disable-next-line no-empty-blocks
|
11
31
|
interface IInstance is
|
32
|
+
IERC165,
|
33
|
+
IVersionable,
|
12
34
|
IRegisterable,
|
13
35
|
IAccessModule,
|
36
|
+
ILifecycleModule,
|
14
37
|
IPolicyModule,
|
15
38
|
IPoolModule,
|
39
|
+
IBundleModule,
|
16
40
|
IComponentModule,
|
17
|
-
|
18
|
-
|
41
|
+
ITreasuryModule,
|
42
|
+
ICompensationModule,
|
43
|
+
IServiceLinked
|
44
|
+
{
|
45
|
+
function getRegistry() external view override (IBundleModule, IComponentModule, IPolicyModule, IRegisterable) returns (IRegistry registry);
|
46
|
+
function hasRole(RoleId role, address member) external view override (IAccessModule, IComponentModule) returns (bool hasRole);
|
47
|
+
|
48
|
+
function getComponentOwnerService() external view override (IServiceLinked, IComponentModule) returns(IComponentOwnerService);
|
49
|
+
function getProductService() external view override (IServiceLinked, IBundleModule, IPolicyModule) returns(IProductService);
|
50
|
+
function getPoolService() external view override (IServiceLinked, IBundleModule, IPoolModule) returns(IPoolService);
|
51
|
+
|
52
|
+
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
53
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
5
|
+
import {IProductService} from "./service/IProductService.sol";
|
6
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
7
|
+
|
8
|
+
interface IServiceLinked {
|
9
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
10
|
+
function getProductService() external view returns(IProductService service);
|
11
|
+
function getPoolService() external view returns(IPoolService service);
|
12
|
+
}
|
@@ -1,64 +1,66 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {RoleId} from "../types/RoleId.sol";
|
6
|
+
|
7
|
+
import {InstanceBase} from "./InstanceBase.sol";
|
8
|
+
import {AccessModule} from "./module/access/Access.sol";
|
9
|
+
import {CompensationModule} from "./module/compensation/CompensationModule.sol";
|
10
|
+
import {LifecycleModule} from "./module/lifecycle/LifecycleModule.sol";
|
11
|
+
import {ComponentModule} from "./module/component/ComponentModule.sol";
|
12
|
+
import {PolicyModule} from "./module/policy/PolicyModule.sol";
|
13
|
+
import {PoolModule} from "./module/pool/PoolModule.sol";
|
14
|
+
import {RiskModule} from "./module/risk/RiskModule.sol";
|
15
|
+
import {BundleModule} from "./module/bundle/BundleModule.sol";
|
16
|
+
import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
|
6
17
|
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
19
|
+
import {Registerable} from "../shared/Registerable.sol";
|
20
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
21
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
22
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
23
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
24
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
25
|
+
import {IServiceLinked} from "./IServiceLinked.sol";
|
12
26
|
|
13
|
-
import {
|
14
|
-
import {
|
27
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
28
|
+
import {IProductService} from "./service/IProductService.sol";
|
29
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
15
30
|
|
16
31
|
contract Instance is
|
17
|
-
|
32
|
+
InstanceBase,
|
18
33
|
AccessModule,
|
34
|
+
BundleModule,
|
19
35
|
ComponentModule,
|
36
|
+
CompensationModule,
|
37
|
+
LifecycleModule,
|
20
38
|
PolicyModule,
|
21
39
|
PoolModule,
|
22
|
-
|
23
|
-
|
40
|
+
RiskModule,
|
41
|
+
TreasuryModule
|
24
42
|
{
|
25
43
|
constructor(
|
26
44
|
address registry,
|
27
|
-
|
28
|
-
address productService
|
45
|
+
NftId registryNftId
|
29
46
|
)
|
30
|
-
|
47
|
+
InstanceBase(registry, registryNftId)
|
31
48
|
AccessModule()
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
PoolModule(
|
36
|
-
|
37
|
-
|
38
|
-
// from registerable
|
39
|
-
function register() external override returns (NftId nftId) {
|
40
|
-
require(
|
41
|
-
address(_registry) != address(0),
|
42
|
-
"ERROR:PRD-001:REGISTRY_ZERO"
|
43
|
-
);
|
44
|
-
return _registry.register(address(this));
|
49
|
+
BundleModule()
|
50
|
+
ComponentModule()
|
51
|
+
PolicyModule()
|
52
|
+
PoolModule()
|
53
|
+
TreasuryModule()
|
54
|
+
{
|
45
55
|
}
|
46
56
|
|
47
|
-
|
48
|
-
function getParentNftId() public view override returns (NftId) {
|
49
|
-
// TODO add self registry and exchange 0 for_registry.getNftId();
|
50
|
-
// define parent tree for all registerables
|
51
|
-
// eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
|
52
|
-
return toNftId(0);
|
53
|
-
}
|
57
|
+
function getRegistry() public view override (Registerable, IBundleModule, IComponentModule, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
|
54
58
|
|
55
|
-
|
56
|
-
function getType() external view override returns (uint256 objectType) {
|
57
|
-
return _registry.INSTANCE();
|
58
|
-
}
|
59
|
+
function hasRole(RoleId role, address member) public view override (AccessModule, IComponentModule) returns (bool) { return super.hasRole(role, member); }
|
59
60
|
|
60
|
-
|
61
|
-
function
|
62
|
-
|
63
|
-
|
61
|
+
function getComponentOwnerService() external view override (IComponentModule, IServiceLinked) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
62
|
+
function getProductService() external view override (IBundleModule, IPolicyModule, IServiceLinked) returns(IProductService service) { return _productService; }
|
63
|
+
function getPoolService() external view override (IBundleModule, IPoolModule, IServiceLinked) returns(IPoolService service) { return _poolService; }
|
64
|
+
|
65
|
+
function getOwner() public view override (IAccessModule, Registerable) returns(address owner) { return super.getOwner(); }
|
64
66
|
}
|