@etherisc/gif-next 0.0.2-f99f1d2-109 → 0.0.2-fc8b370-882
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 +90 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +26 -57
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +26 -57
- 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/{IPool.sol/IPoolComponent.json → IProductComponent.sol/IProductComponent.json} +89 -65
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +134 -75
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +72 -113
- 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/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- 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 +719 -332
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +998 -527
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +133 -132
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{product/ProductService.sol/ProductModule.json → base/IInstanceBase.sol/IInstanceBase.json} +18 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +511 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +326 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +692 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +296 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +296 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +33 -62
- 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 +132 -125
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +132 -125
- 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 +67 -47
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +51 -57
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasuryModule.json +100 -57
- 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/{treasury → module/treasury}/TreasuryModule.sol/TreasuryModule.json +100 -57
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +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 +147 -30
- 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 +241 -25
- 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 +16 -61
- 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 +16 -61
- 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 +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -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/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- 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 +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- 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 +88 -62
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +88 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IPoolComponent.sol +57 -0
- package/contracts/components/{IProduct.sol → IProductComponent.sol} +9 -6
- package/contracts/components/Pool.sol +140 -18
- package/contracts/components/Product.sol +53 -25
- package/contracts/instance/IInstance.sol +38 -11
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +44 -48
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +14 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/{lifecycle → base}/ILifecycle.sol +4 -21
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +80 -0
- package/contracts/instance/base/KeyValueStore.sol +156 -0
- package/contracts/instance/{lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +36 -29
- package/contracts/instance/base/ModuleBase.sol +52 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +136 -0
- package/contracts/instance/module/bundle/IBundle.sol +58 -0
- package/contracts/instance/module/compensation/CompensationModule.sol +8 -0
- package/contracts/instance/module/compensation/ICompensation.sol +10 -0
- package/contracts/instance/module/component/ComponentModule.sol +95 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +76 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/risk/IRisk.sol +10 -0
- package/contracts/instance/module/risk/RiskModule.sol +8 -0
- package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +27 -15
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +43 -59
- package/contracts/instance/service/ComponentOwnerService.sol +170 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +58 -0
- package/contracts/instance/service/PoolService.sol +123 -0
- package/contracts/instance/service/ProductService.sol +354 -0
- package/contracts/registry/ChainNft.sol +61 -37
- package/contracts/registry/IRegistry.sol +24 -34
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +284 -85
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +52 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +89 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +22 -0
- package/contracts/test/TestProduct.sol +44 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Fee.sol +39 -20
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +22 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +22 -14
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +13 -3
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +26 -23
- package/contracts/types/Version.sol +95 -0
- package/package.json +9 -3
- 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/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- 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 -141
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- 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 -127
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- 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 -77
- package/contracts/components/IPool.sol +0 -15
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
@@ -1,72 +1,68 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {RoleId} from "../types/RoleId.sol";
|
6
|
+
|
7
|
+
import {InstanceBase} from "./base/InstanceBase.sol";
|
8
|
+
import {AccessModule} from "./module/access/Access.sol";
|
9
|
+
import {CompensationModule} from "./module/compensation/CompensationModule.sol";
|
10
|
+
import {ComponentModule} from "./module/component/ComponentModule.sol";
|
11
|
+
import {PolicyModule} from "./module/policy/PolicyModule.sol";
|
12
|
+
import {PoolModule} from "./module/pool/PoolModule.sol";
|
13
|
+
import {RiskModule} from "./module/risk/RiskModule.sol";
|
14
|
+
import {BundleModule} from "./module/bundle/BundleModule.sol";
|
15
|
+
import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
|
16
|
+
|
5
17
|
import {IRegistry} from "../registry/IRegistry.sol";
|
18
|
+
import {Registerable} from "../shared/Registerable.sol";
|
19
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
20
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
21
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
22
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
23
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
24
|
+
import {IInstanceBase} from "./base/IInstanceBase.sol";
|
6
25
|
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {ProductModule} from "./product/ProductService.sol";
|
11
|
-
import {PolicyModule} from "./policy/PolicyModule.sol";
|
12
|
-
import {PoolModule} from "./pool/PoolModule.sol";
|
13
|
-
import {TreasuryModule} from "./treasury/TreasuryModule.sol";
|
26
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
27
|
+
import {IProductService} from "./service/IProductService.sol";
|
28
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
14
29
|
|
15
|
-
import {
|
16
|
-
import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
|
17
|
-
import {NftId, toNftId} from "../types/NftId.sol";
|
30
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
18
31
|
|
19
32
|
contract Instance is
|
20
|
-
|
33
|
+
InstanceBase,
|
21
34
|
AccessModule,
|
22
|
-
|
35
|
+
BundleModule,
|
23
36
|
ComponentModule,
|
37
|
+
CompensationModule,
|
24
38
|
PolicyModule,
|
25
39
|
PoolModule,
|
26
|
-
|
27
|
-
TreasuryModule
|
28
|
-
IInstance
|
40
|
+
RiskModule,
|
41
|
+
TreasuryModule
|
29
42
|
{
|
30
43
|
constructor(
|
31
44
|
address registry,
|
32
|
-
|
33
|
-
address productService
|
45
|
+
NftId registryNftId
|
34
46
|
)
|
35
|
-
|
47
|
+
InstanceBase(registry, registryNftId)
|
36
48
|
AccessModule()
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
PoolModule(
|
41
|
-
|
49
|
+
BundleModule()
|
50
|
+
ComponentModule()
|
51
|
+
PolicyModule()
|
52
|
+
PoolModule()
|
53
|
+
TreasuryModule()
|
42
54
|
{
|
43
|
-
|
55
|
+
initializeBundleModule(_keyValueStore);
|
44
56
|
}
|
45
57
|
|
46
|
-
|
47
|
-
function
|
48
|
-
require(
|
49
|
-
address(_registry) != address(0),
|
50
|
-
"ERROR:PRD-001:REGISTRY_ZERO"
|
51
|
-
);
|
52
|
-
return _registry.register(address(this));
|
53
|
-
}
|
58
|
+
function getRegistry() public view override (Registerable, IBundleModule, IComponentModule, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
|
59
|
+
function getKeyValueStore() public view override (InstanceBase, IBundleModule) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
|
54
60
|
|
55
|
-
|
56
|
-
function getParentNftId() public pure override returns (NftId) {
|
57
|
-
// TODO add self registry and exchange 0 for_registry.getNftId();
|
58
|
-
// define parent tree for all registerables
|
59
|
-
// eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
|
60
|
-
return toNftId(0);
|
61
|
-
}
|
61
|
+
function hasRole(RoleId role, address member) public view override (AccessModule, IComponentModule) returns (bool) { return super.hasRole(role, member); }
|
62
62
|
|
63
|
-
|
64
|
-
function
|
65
|
-
|
66
|
-
}
|
63
|
+
function getComponentOwnerService() external view override (IComponentModule, IInstanceBase) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
64
|
+
function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
|
65
|
+
function getPoolService() external view override (IBundleModule, IPoolModule, IInstanceBase) returns(IPoolService service) { return _poolService; }
|
67
66
|
|
68
|
-
|
69
|
-
function getData() external pure override returns (bytes memory data) {
|
70
|
-
return bytes(abi.encode(0));
|
71
|
-
}
|
67
|
+
function getOwner() public view override (IAccessModule, Registerable) returns(address owner) { return super.getOwner(); }
|
72
68
|
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
|
7
|
+
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
8
|
+
|
9
|
+
import {ServiceBase} from "./ServiceBase.sol";
|
10
|
+
|
11
|
+
abstract contract ComponentServiceBase is ServiceBase {
|
12
|
+
|
13
|
+
constructor(
|
14
|
+
address registry,
|
15
|
+
NftId registryNftId
|
16
|
+
)
|
17
|
+
ServiceBase(registry, registryNftId)
|
18
|
+
// solhint-disable-next-line no-empty-blocks
|
19
|
+
{
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
function _getAndVerifyComponentInfoAndInstance(
|
24
|
+
ObjectType objectType
|
25
|
+
)
|
26
|
+
internal
|
27
|
+
view
|
28
|
+
returns(
|
29
|
+
IRegistry.ObjectInfo memory info,
|
30
|
+
IInstance instance
|
31
|
+
)
|
32
|
+
{
|
33
|
+
NftId componentNftId = _registry.getNftId(msg.sender);
|
34
|
+
require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
35
|
+
|
36
|
+
info = _registry.getObjectInfo(componentNftId);
|
37
|
+
require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
|
38
|
+
|
39
|
+
address instanceAddress = _registry.getObjectInfo(info.parentNftId).objectAddress;
|
40
|
+
instance = IInstance(instanceAddress);
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
5
|
+
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
6
|
+
import {IProductService} from "../service/IProductService.sol";
|
7
|
+
import {IPoolService} from "../service/IPoolService.sol";
|
8
|
+
|
9
|
+
interface IInstanceBase {
|
10
|
+
function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
|
11
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
12
|
+
function getProductService() external view returns(IProductService service);
|
13
|
+
function getPoolService() external view returns(IPoolService service);
|
14
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
|
5
|
+
import {Key32, KeyId} from "../../types/Key32.sol";
|
6
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
8
|
+
import {StateId} from "../../types/StateId.sol";
|
9
|
+
|
10
|
+
import {ILifecycle} from "./ILifecycle.sol";
|
11
|
+
|
12
|
+
interface IKeyValueStore is ILifecycle {
|
13
|
+
|
14
|
+
struct Key {
|
15
|
+
ObjectType objectType;
|
16
|
+
KeyId id;
|
17
|
+
}
|
18
|
+
|
19
|
+
struct Value {
|
20
|
+
Metadata metadata;
|
21
|
+
bytes data;
|
22
|
+
}
|
23
|
+
|
24
|
+
struct Metadata {
|
25
|
+
ObjectType objectType;
|
26
|
+
StateId state;
|
27
|
+
address updatedBy;
|
28
|
+
Blocknumber updatedIn;
|
29
|
+
Blocknumber createdIn;
|
30
|
+
}
|
31
|
+
|
32
|
+
event LogInfoCreated(Key key, StateId state, address createdBy);
|
33
|
+
event LogInfoUpdated(Key key, StateId state, address updatedBy, Blocknumber lastUpdatedIn);
|
34
|
+
event LogStateUpdated(Key key, StateId stateOld, StateId stateNew, address updatedBy, Blocknumber lastUpdatedIn);
|
35
|
+
|
36
|
+
// generic state changing functions
|
37
|
+
function create(Key32 key, ObjectType objectType, bytes memory data) external;
|
38
|
+
function update(Key32 key, StateId state, bytes memory data) external;
|
39
|
+
function updateData(Key32 key, bytes memory data) external;
|
40
|
+
function updateState(Key32 key, StateId state) external;
|
41
|
+
|
42
|
+
function exists(Key32 key) external view returns (bool);
|
43
|
+
function get(Key32 key) external view returns (Value memory value);
|
44
|
+
function getData(Key32 key) external view returns (bytes memory data);
|
45
|
+
function getMetadata(Key32 key) external view returns (Metadata memory metadata);
|
46
|
+
function getState(Key32 key) external view returns (StateId state);
|
47
|
+
|
48
|
+
function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
|
49
|
+
}
|
@@ -6,35 +6,18 @@ import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
|
|
6
6
|
import {NftId} from "../../types/NftId.sol";
|
7
7
|
|
8
8
|
interface ILifecycle {
|
9
|
-
event LogComponentStateChanged(
|
10
|
-
NftId nftId,
|
11
|
-
ObjectType objectType,
|
12
|
-
StateId fromStateId,
|
13
|
-
StateId toStateId
|
14
|
-
);
|
15
|
-
event LogBundleStateChanged(
|
16
|
-
NftId nftId,
|
17
|
-
StateId fromStateId,
|
18
|
-
StateId toStateId
|
19
|
-
);
|
20
|
-
event LogPolicyStateChanged(
|
21
|
-
NftId nftId,
|
22
|
-
StateId fromStateId,
|
23
|
-
StateId toStateId
|
24
|
-
);
|
25
|
-
// event LogClaimStateChanged(NftId nftId, ClaimId claimId, StateId fromStateId, StateId toStateId);
|
26
|
-
// event LogPayoutStateChanged(NftId nftId, ClaimId claimId, PayoutId payoutId, StateId fromStateId, StateId toStateId);
|
27
9
|
|
28
10
|
error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
|
29
11
|
error ErrorInvalidStateTransition(
|
30
|
-
NftId nftId,
|
31
12
|
ObjectType objectType,
|
32
13
|
StateId fromStateId,
|
33
14
|
StateId toStateId
|
34
15
|
);
|
35
|
-
}
|
36
16
|
|
37
|
-
|
17
|
+
function hasLifecycle(
|
18
|
+
ObjectType objectType
|
19
|
+
) external view returns (bool);
|
20
|
+
|
38
21
|
function getInitialState(
|
39
22
|
ObjectType objectType
|
40
23
|
) external view returns (StateId);
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {VersionPart} from "../../types/Version.sol";
|
5
|
+
|
6
|
+
import {IRegisterable} from "../../shared/IRegisterable.sol";
|
7
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
8
|
+
|
9
|
+
interface IService is
|
10
|
+
IRegisterable,
|
11
|
+
IVersionable
|
12
|
+
{
|
13
|
+
function getName() external pure returns(string memory name);
|
14
|
+
function getMajorVersion() external view returns(VersionPart majorVersion);
|
15
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
5
|
+
import {Registerable} from "../../shared/Registerable.sol";
|
6
|
+
// import {IRegistry} from "../registry/IRegistry.sol";
|
7
|
+
|
8
|
+
// import {IInstance} from "./IInstance.sol";
|
9
|
+
import {ObjectType, INSTANCE} from "../../types/ObjectType.sol";
|
10
|
+
import {NftId} from "../../types/NftId.sol";
|
11
|
+
import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
|
12
|
+
|
13
|
+
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
14
|
+
import {IProductService} from "../service/IProductService.sol";
|
15
|
+
import {IPoolService} from "../service/IPoolService.sol";
|
16
|
+
|
17
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
18
|
+
import {IInstance} from "../IInstance.sol";
|
19
|
+
import {IInstanceBase} from "./IInstanceBase.sol";
|
20
|
+
|
21
|
+
import {KeyValueStore} from "./KeyValueStore.sol";
|
22
|
+
|
23
|
+
abstract contract InstanceBase is
|
24
|
+
Versionable,
|
25
|
+
Registerable,
|
26
|
+
IInstanceBase
|
27
|
+
{
|
28
|
+
IKeyValueStore internal _keyValueStore;
|
29
|
+
|
30
|
+
IComponentOwnerService internal _componentOwnerService;
|
31
|
+
IProductService internal _productService;
|
32
|
+
IPoolService internal _poolService;
|
33
|
+
|
34
|
+
constructor(
|
35
|
+
address registry,
|
36
|
+
NftId registryNftId
|
37
|
+
)
|
38
|
+
Registerable(registry, registryNftId)
|
39
|
+
Versionable()
|
40
|
+
{
|
41
|
+
_keyValueStore = new KeyValueStore();
|
42
|
+
|
43
|
+
_registerInterface(type(IInstance).interfaceId);
|
44
|
+
_linkToServicesInRegistry();
|
45
|
+
}
|
46
|
+
|
47
|
+
function getKeyValueStore() public view virtual override returns (IKeyValueStore keyValueStore) { return _keyValueStore; }
|
48
|
+
|
49
|
+
// from versionable
|
50
|
+
function getVersion()
|
51
|
+
public
|
52
|
+
pure
|
53
|
+
virtual override
|
54
|
+
returns(Version)
|
55
|
+
{
|
56
|
+
return VersionLib.toVersion(3,0,0);
|
57
|
+
}
|
58
|
+
|
59
|
+
// from registerable
|
60
|
+
function getType() external pure override returns (ObjectType objectType) {
|
61
|
+
return INSTANCE();
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
// internal / private functions
|
66
|
+
function _linkToServicesInRegistry() internal {
|
67
|
+
VersionPart majorVersion = getVersion().toMajorPart();
|
68
|
+
_componentOwnerService = IComponentOwnerService(_getAndCheck("ComponentOwnerService", majorVersion));
|
69
|
+
_productService = IProductService(_getAndCheck("ProductService", majorVersion));
|
70
|
+
_poolService = IPoolService(_getAndCheck("PoolService", majorVersion));
|
71
|
+
}
|
72
|
+
|
73
|
+
function _getAndCheck(string memory serviceName, VersionPart majorVersion) internal view returns (address serviceAddress) {
|
74
|
+
serviceAddress = _registry.getServiceAddress(serviceName, majorVersion);
|
75
|
+
require(
|
76
|
+
serviceAddress != address(0),
|
77
|
+
"ERROR:INS-001:NOT_REGISTERED"
|
78
|
+
);
|
79
|
+
}
|
80
|
+
}
|
@@ -0,0 +1,156 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
|
5
|
+
import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
|
6
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
8
|
+
import {StateId, ACTIVE} from "../../types/StateId.sol";
|
9
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
10
|
+
|
11
|
+
import {Lifecycle} from "./Lifecycle.sol";
|
12
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
13
|
+
|
14
|
+
contract KeyValueStore is Lifecycle, IKeyValueStore {
|
15
|
+
|
16
|
+
mapping(Key32 key32 => Value value) private _value;
|
17
|
+
address private _owner;
|
18
|
+
|
19
|
+
modifier onlyOwner() {
|
20
|
+
require(
|
21
|
+
msg.sender == _owner,
|
22
|
+
"ERROR:KVS-001:NOT_OWNER");
|
23
|
+
_;
|
24
|
+
}
|
25
|
+
|
26
|
+
constructor() {
|
27
|
+
_owner = msg.sender;
|
28
|
+
}
|
29
|
+
|
30
|
+
function create(
|
31
|
+
Key32 key32,
|
32
|
+
ObjectType objectType,
|
33
|
+
bytes memory data
|
34
|
+
)
|
35
|
+
public
|
36
|
+
onlyOwner
|
37
|
+
{
|
38
|
+
require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
|
39
|
+
|
40
|
+
Metadata storage metadata = _value[key32].metadata;
|
41
|
+
require(metadata.state.eqz(), "ERROR:KVS-012:ALREADY_CREATED");
|
42
|
+
|
43
|
+
address createdBy = msg.sender;
|
44
|
+
Blocknumber blocknumber = blockBlocknumber();
|
45
|
+
StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
|
46
|
+
|
47
|
+
// set metadata
|
48
|
+
metadata.objectType = objectType;
|
49
|
+
metadata.state = initialState;
|
50
|
+
metadata.updatedBy = createdBy;
|
51
|
+
metadata.updatedIn = blocknumber;
|
52
|
+
metadata.createdIn = blocknumber;
|
53
|
+
|
54
|
+
// set data
|
55
|
+
_value[key32].data = data;
|
56
|
+
|
57
|
+
emit LogInfoCreated(toKey(key32), initialState, createdBy);
|
58
|
+
}
|
59
|
+
|
60
|
+
function update(Key32 key32, StateId state, bytes memory data)
|
61
|
+
public
|
62
|
+
onlyOwner
|
63
|
+
{
|
64
|
+
require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
|
65
|
+
Metadata storage metadata = _value[key32].metadata;
|
66
|
+
StateId stateOld = metadata.state;
|
67
|
+
require(stateOld.gtz(), "ERROR:KVS-021:NOT_EXISTING");
|
68
|
+
|
69
|
+
// update data
|
70
|
+
_value[key32].data = data;
|
71
|
+
|
72
|
+
// update metadata (and state)
|
73
|
+
address updatedBy = msg.sender;
|
74
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
75
|
+
metadata.state = state;
|
76
|
+
metadata.updatedBy = updatedBy;
|
77
|
+
metadata.updatedIn = blockBlocknumber();
|
78
|
+
|
79
|
+
// create log entries
|
80
|
+
Key memory key = toKey(key32);
|
81
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, lastUpdatedIn);
|
82
|
+
emit LogInfoUpdated(key, state, updatedBy, lastUpdatedIn);
|
83
|
+
}
|
84
|
+
|
85
|
+
function updateData(Key32 key32, bytes memory data)
|
86
|
+
public
|
87
|
+
onlyOwner
|
88
|
+
{
|
89
|
+
Metadata storage metadata = _value[key32].metadata;
|
90
|
+
StateId state = metadata.state;
|
91
|
+
require(state.gtz(), "ERROR:KVS-030:NOT_EXISTING");
|
92
|
+
|
93
|
+
// update data
|
94
|
+
_value[key32].data = data;
|
95
|
+
|
96
|
+
// update metadata
|
97
|
+
address updatedBy = msg.sender;
|
98
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
99
|
+
metadata.updatedBy = updatedBy;
|
100
|
+
metadata.updatedIn = blockBlocknumber();
|
101
|
+
|
102
|
+
// create log entry
|
103
|
+
Key memory key = toKey(key32);
|
104
|
+
emit LogInfoUpdated(key, state, updatedBy, lastUpdatedIn);
|
105
|
+
}
|
106
|
+
|
107
|
+
function updateState(Key32 key32, StateId state)
|
108
|
+
public
|
109
|
+
onlyOwner
|
110
|
+
{
|
111
|
+
require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
|
112
|
+
Metadata storage metadata = _value[key32].metadata;
|
113
|
+
StateId stateOld = metadata.state;
|
114
|
+
require(stateOld.gtz(), "ERROR:KVS-041:NOT_EXISTING");
|
115
|
+
|
116
|
+
// update metadata (and state)
|
117
|
+
address updatedBy = msg.sender;
|
118
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
119
|
+
metadata.state = state;
|
120
|
+
metadata.updatedBy = updatedBy;
|
121
|
+
metadata.updatedIn = blockBlocknumber();
|
122
|
+
|
123
|
+
// create log entry
|
124
|
+
Key memory key = toKey(key32);
|
125
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, lastUpdatedIn);
|
126
|
+
}
|
127
|
+
|
128
|
+
function exists(Key32 key32) public view returns (bool) {
|
129
|
+
return _value[key32].metadata.state.gtz();
|
130
|
+
}
|
131
|
+
|
132
|
+
function get(Key32 key32) public view returns (Value memory value) {
|
133
|
+
return _value[key32];
|
134
|
+
}
|
135
|
+
|
136
|
+
function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
|
137
|
+
return _value[key32].metadata;
|
138
|
+
}
|
139
|
+
|
140
|
+
function getData(Key32 key32) public view returns (bytes memory data) {
|
141
|
+
return _value[key32].data;
|
142
|
+
}
|
143
|
+
|
144
|
+
function getState(Key32 key32) public view returns (StateId state) {
|
145
|
+
return _value[key32].metadata.state;
|
146
|
+
}
|
147
|
+
|
148
|
+
function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32) {
|
149
|
+
return Key32Lib.toKey32(objectType, id);
|
150
|
+
}
|
151
|
+
|
152
|
+
function toKey(Key32 key32) public pure returns (Key memory key) {
|
153
|
+
(ObjectType objectType, KeyId id) = key32.toKey();
|
154
|
+
return Key(objectType, id);
|
155
|
+
}
|
156
|
+
}
|
@@ -3,10 +3,10 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
5
|
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
6
|
-
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
|
-
import {
|
6
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
|
+
import {ILifecycle} from "./ILifecycle.sol";
|
8
8
|
|
9
|
-
contract
|
9
|
+
contract Lifecycle is ILifecycle {
|
10
10
|
mapping(ObjectType objectType => StateId initialState)
|
11
11
|
private _initialState;
|
12
12
|
|
@@ -22,38 +22,44 @@ contract LifecycleModule is ILifecycleModule {
|
|
22
22
|
_setupPolicyLifecycle();
|
23
23
|
}
|
24
24
|
|
25
|
-
function
|
26
|
-
|
25
|
+
function hasLifecycle(
|
26
|
+
ObjectType objectType
|
27
|
+
)
|
28
|
+
public
|
29
|
+
view
|
30
|
+
override
|
31
|
+
returns (bool)
|
32
|
+
{
|
33
|
+
return _initialState[objectType].gtz();
|
34
|
+
}
|
35
|
+
|
36
|
+
function getInitialState(
|
37
|
+
ObjectType objectType
|
38
|
+
)
|
39
|
+
public
|
40
|
+
view
|
41
|
+
returns (StateId)
|
42
|
+
{
|
43
|
+
return _initialState[objectType];
|
44
|
+
}
|
45
|
+
|
46
|
+
function checkTransition(
|
27
47
|
ObjectType objectType,
|
28
48
|
StateId fromId,
|
29
49
|
StateId toId
|
30
|
-
)
|
50
|
+
)
|
51
|
+
public
|
52
|
+
view
|
31
53
|
{
|
32
|
-
if
|
33
|
-
|
54
|
+
// return if no life cycle support
|
55
|
+
if (_initialState[objectType].eqz()) {
|
56
|
+
return;
|
34
57
|
}
|
35
58
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
emit LogBundleStateChanged(nftId, fromId, toId);
|
40
|
-
} else if (
|
41
|
-
objectType == PRODUCT() ||
|
42
|
-
objectType == ORACLE() ||
|
43
|
-
objectType == POOL()
|
44
|
-
) {
|
45
|
-
emit LogComponentStateChanged(nftId, objectType, fromId, toId);
|
46
|
-
} else {
|
47
|
-
revert ErrorNoLifecycle(nftId, objectType);
|
59
|
+
// enforce valid state transition
|
60
|
+
if (!_isValidTransition[objectType][fromId][toId]) {
|
61
|
+
revert ErrorInvalidStateTransition(objectType, fromId, toId);
|
48
62
|
}
|
49
|
-
|
50
|
-
return toId;
|
51
|
-
}
|
52
|
-
|
53
|
-
function getInitialState(
|
54
|
-
ObjectType objectType
|
55
|
-
) public view returns (StateId) {
|
56
|
-
return _initialState[objectType];
|
57
63
|
}
|
58
64
|
|
59
65
|
function isValidTransition(
|
@@ -82,7 +88,8 @@ contract LifecycleModule is ILifecycleModule {
|
|
82
88
|
_initialState[POLICY()] = APPLIED();
|
83
89
|
_isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
|
84
90
|
_isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
|
85
|
-
_isValidTransition[POLICY()][APPLIED()][
|
91
|
+
_isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
|
92
|
+
_isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
|
86
93
|
_isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
|
87
94
|
}
|
88
95
|
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
|
6
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
7
|
+
import {Key32, KeyId} from "../../types/Key32.sol";
|
8
|
+
import {LibNftIdSet} from "../../types/NftIdSet.sol";
|
9
|
+
import {NftId} from "../../types/NftId.sol";
|
10
|
+
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
11
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
|
12
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
13
|
+
|
14
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
15
|
+
|
16
|
+
abstract contract ModuleBase {
|
17
|
+
|
18
|
+
IKeyValueStore private _store;
|
19
|
+
ObjectType private _type;
|
20
|
+
|
21
|
+
function _initialize(IKeyValueStore keyValueStore, ObjectType objectType) internal {
|
22
|
+
_store = keyValueStore;
|
23
|
+
_type = objectType;
|
24
|
+
}
|
25
|
+
|
26
|
+
function _create(NftId nftId, bytes memory data) internal {
|
27
|
+
_store.create(
|
28
|
+
_toKey32(nftId),
|
29
|
+
_type,
|
30
|
+
data);
|
31
|
+
}
|
32
|
+
|
33
|
+
function _updateData(NftId nftId, bytes memory data) internal {
|
34
|
+
_store.updateData(_toKey32(nftId), data);
|
35
|
+
}
|
36
|
+
|
37
|
+
function _updateState(NftId nftId, StateId state) internal {
|
38
|
+
_store.updateState(_toKey32(nftId), state);
|
39
|
+
}
|
40
|
+
|
41
|
+
function _getData(NftId nftId) internal view returns(bytes memory data) {
|
42
|
+
return _store.getData(_toKey32(nftId));
|
43
|
+
}
|
44
|
+
|
45
|
+
function _getState(NftId nftId) internal view returns(StateId) {
|
46
|
+
return _store.getState(_toKey32(nftId));
|
47
|
+
}
|
48
|
+
|
49
|
+
function _toKey32(NftId nftId) internal view returns (Key32 key32) {
|
50
|
+
return nftId.toKey32(_type);
|
51
|
+
}
|
52
|
+
}
|