@etherisc/gif-next 0.0.2-f9905e1 → 0.0.2-f9bc4c7-556
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → BaseComponent.sol/BaseComponent.json} +55 -60
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +54 -59
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +279 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +225 -33
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +154 -62
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1249 -275
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1560 -373
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{product/ProductService.sol/ProductModule.json → base/IInstanceBase.sol/IInstanceBase.json} +18 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +511 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/InstanceBase.sol/InstanceBase.json} +140 -141
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +692 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +296 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +296 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +54 -111
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +146 -116
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +146 -116
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +63 -63
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +149 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +533 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +533 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +597 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +452 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +115 -81
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +265 -82
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +22 -67
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +23 -68
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/Versionable.sol/Versionable.json} +72 -70
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +153 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +88 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IPoolComponent.sol +57 -0
- package/contracts/components/IProductComponent.sol +19 -0
- package/contracts/components/Pool.sol +161 -16
- package/contracts/components/Product.sol +79 -27
- package/contracts/experiment/errors/Require.sol +38 -0
- package/contracts/experiment/errors/Revert.sol +44 -0
- package/contracts/experiment/inheritance/A.sol +8 -11
- package/contracts/experiment/inheritance/B.sol +10 -5
- package/contracts/experiment/inheritance/C.sol +11 -5
- package/contracts/experiment/inheritance/IA.sol +2 -7
- package/contracts/experiment/inheritance/IB.sol +3 -2
- package/contracts/experiment/inheritance/IC.sol +4 -3
- package/contracts/experiment/statemachine/Dummy.sol +27 -0
- package/contracts/experiment/statemachine/ISM.sol +25 -0
- package/contracts/experiment/statemachine/README.md +112 -0
- package/contracts/experiment/statemachine/SM.sol +57 -0
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
- package/contracts/experiment/types/TypeA.sol +14 -9
- package/contracts/experiment/types/TypeB.sol +14 -9
- package/contracts/instance/IInstance.sol +42 -10
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +47 -42
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +14 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +80 -0
- package/contracts/instance/base/KeyValueStore.sol +156 -0
- package/contracts/instance/base/Lifecycle.sol +95 -0
- package/contracts/instance/base/ModuleBase.sol +52 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +136 -0
- package/contracts/instance/module/bundle/IBundle.sol +58 -0
- package/contracts/instance/module/compensation/CompensationModule.sol +8 -0
- package/contracts/instance/module/compensation/ICompensation.sol +10 -0
- package/contracts/instance/module/component/ComponentModule.sol +95 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +76 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/risk/IRisk.sol +10 -0
- package/contracts/instance/module/risk/RiskModule.sol +8 -0
- package/contracts/instance/module/treasury/ITreasury.sol +103 -0
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/module/treasury/TreasuryModule.sol +152 -0
- package/contracts/instance/service/ComponentOwnerService.sol +170 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +58 -0
- package/contracts/instance/service/PoolService.sol +123 -0
- package/contracts/instance/service/ProductService.sol +354 -0
- package/contracts/registry/ChainNft.sol +159 -0
- package/contracts/registry/IChainNft.sol +21 -0
- package/contracts/registry/IRegistry.sol +41 -50
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +307 -123
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +52 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +89 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +22 -0
- package/contracts/test/TestProduct.sol +44 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +118 -0
- package/contracts/types/ChainId.sol +24 -10
- package/contracts/types/Fee.sol +51 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +72 -0
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +115 -0
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +101 -0
- package/contracts/types/Timestamp.sol +123 -0
- package/contracts/types/UFixed.sol +209 -0
- package/contracts/types/Version.sol +95 -0
- package/package.json +19 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -62
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -11
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -259
- package/contracts/instance/component/IComponent.sol +0 -94
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -106
- package/contracts/instance/pool/IPoolModule.sol +0 -40
- package/contracts/instance/pool/PoolModule.sol +0 -83
- package/contracts/instance/product/IProductService.sol +0 -45
- package/contracts/instance/product/ProductService.sol +0 -105
@@ -0,0 +1,30 @@
|
|
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
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
|
8
|
+
interface ILifecycle {
|
9
|
+
|
10
|
+
error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
|
11
|
+
error ErrorInvalidStateTransition(
|
12
|
+
ObjectType objectType,
|
13
|
+
StateId fromStateId,
|
14
|
+
StateId toStateId
|
15
|
+
);
|
16
|
+
|
17
|
+
function hasLifecycle(
|
18
|
+
ObjectType objectType
|
19
|
+
) external view returns (bool);
|
20
|
+
|
21
|
+
function getInitialState(
|
22
|
+
ObjectType objectType
|
23
|
+
) external view returns (StateId);
|
24
|
+
|
25
|
+
function isValidTransition(
|
26
|
+
ObjectType objectType,
|
27
|
+
StateId fromId,
|
28
|
+
StateId toId
|
29
|
+
) external view returns (bool);
|
30
|
+
}
|
@@ -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
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
6
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
|
+
import {ILifecycle} from "./ILifecycle.sol";
|
8
|
+
|
9
|
+
contract Lifecycle is ILifecycle {
|
10
|
+
mapping(ObjectType objectType => StateId initialState)
|
11
|
+
private _initialState;
|
12
|
+
|
13
|
+
mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
|
14
|
+
private _isValidTransition;
|
15
|
+
|
16
|
+
constructor() {
|
17
|
+
_setupComponentLifecycle(PRODUCT());
|
18
|
+
_setupComponentLifecycle(ORACLE());
|
19
|
+
_setupComponentLifecycle(POOL());
|
20
|
+
|
21
|
+
_setupBundleLifecycle();
|
22
|
+
_setupPolicyLifecycle();
|
23
|
+
}
|
24
|
+
|
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(
|
47
|
+
ObjectType objectType,
|
48
|
+
StateId fromId,
|
49
|
+
StateId toId
|
50
|
+
)
|
51
|
+
public
|
52
|
+
view
|
53
|
+
{
|
54
|
+
// return if no life cycle support
|
55
|
+
if (_initialState[objectType].eqz()) {
|
56
|
+
return;
|
57
|
+
}
|
58
|
+
|
59
|
+
// enforce valid state transition
|
60
|
+
if (!_isValidTransition[objectType][fromId][toId]) {
|
61
|
+
revert ErrorInvalidStateTransition(objectType, fromId, toId);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
function isValidTransition(
|
66
|
+
ObjectType objectType,
|
67
|
+
StateId fromId,
|
68
|
+
StateId toId
|
69
|
+
) public view returns (bool) {
|
70
|
+
return _isValidTransition[objectType][fromId][toId];
|
71
|
+
}
|
72
|
+
|
73
|
+
function _setupComponentLifecycle(ObjectType objectType) internal {
|
74
|
+
_initialState[objectType] = ACTIVE();
|
75
|
+
_isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
|
76
|
+
_isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
|
77
|
+
_isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
|
78
|
+
}
|
79
|
+
|
80
|
+
function _setupBundleLifecycle() internal {
|
81
|
+
_initialState[BUNDLE()] = ACTIVE();
|
82
|
+
_isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
|
83
|
+
_isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
|
84
|
+
_isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
|
85
|
+
}
|
86
|
+
|
87
|
+
function _setupPolicyLifecycle() internal {
|
88
|
+
_initialState[POLICY()] = APPLIED();
|
89
|
+
_isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
|
90
|
+
_isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
|
91
|
+
_isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
|
92
|
+
_isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
|
93
|
+
_isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
|
94
|
+
}
|
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
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId, zeroNftId} from "../../types/NftId.sol";
|
5
|
+
import {ObjectType, SERVICE} from "../../types/ObjectType.sol";
|
6
|
+
import {Version, VersionPart} from "../../types/Version.sol";
|
7
|
+
|
8
|
+
import {Registerable} from "../../shared/Registerable.sol";
|
9
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
10
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
11
|
+
|
12
|
+
import {IService} from "./IService.sol";
|
13
|
+
|
14
|
+
abstract contract ServiceBase is
|
15
|
+
Registerable,
|
16
|
+
Versionable,
|
17
|
+
IService
|
18
|
+
{
|
19
|
+
|
20
|
+
constructor(
|
21
|
+
address registry,
|
22
|
+
NftId registryNftId
|
23
|
+
)
|
24
|
+
Registerable(registry, registryNftId)
|
25
|
+
Versionable()
|
26
|
+
{
|
27
|
+
_registerInterface(type(IService).interfaceId);
|
28
|
+
}
|
29
|
+
|
30
|
+
function getMajorVersion() external view override returns(VersionPart majorVersion) {
|
31
|
+
return this.getVersion().toMajorPart();
|
32
|
+
}
|
33
|
+
|
34
|
+
function getType() external pure override returns (ObjectType) {
|
35
|
+
return SERVICE();
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,149 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
// role admin handling of oz doesn't fit nft ownability
|
5
|
+
// import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
|
6
|
+
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
7
|
+
|
8
|
+
import {RoleId, RoleIdLib} from "../../../types/RoleId.sol";
|
9
|
+
import {DISTRIBUTOR_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
|
10
|
+
import {DISTRIBUTOR_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
|
11
|
+
import {IAccessModule} from "./IAccess.sol";
|
12
|
+
|
13
|
+
abstract contract AccessModule is IAccessModule {
|
14
|
+
|
15
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
16
|
+
|
17
|
+
mapping(RoleId role => RoleInfo info) private _info;
|
18
|
+
RoleId[] private _roles;
|
19
|
+
|
20
|
+
mapping(RoleId role => mapping(address member => bool isMember))
|
21
|
+
private _isRoleMember;
|
22
|
+
mapping(RoleId role => EnumerableSet.AddressSet members) private _roleMembers;
|
23
|
+
|
24
|
+
modifier onlyAccessOwner() {
|
25
|
+
require(
|
26
|
+
msg.sender == this.getOwner(),
|
27
|
+
"ERROR:ACS-001:NOT_OWNER");
|
28
|
+
_;
|
29
|
+
}
|
30
|
+
|
31
|
+
modifier onlyExistingRole(RoleId role) {
|
32
|
+
require(
|
33
|
+
_info[role].id == role,
|
34
|
+
"ERROR:ACS-002:ROLE_NOT_EXISTING");
|
35
|
+
_;
|
36
|
+
}
|
37
|
+
|
38
|
+
constructor() {
|
39
|
+
_createRole(DISTRIBUTOR_OWNER_ROLE(), DISTRIBUTOR_OWNER_ROLE_NAME());
|
40
|
+
_createRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME());
|
41
|
+
_createRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME());
|
42
|
+
_createRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME());
|
43
|
+
}
|
44
|
+
|
45
|
+
function createRole(
|
46
|
+
string memory roleName
|
47
|
+
) public override onlyAccessOwner returns (RoleId role) {
|
48
|
+
role = RoleIdLib.toRoleId(roleName);
|
49
|
+
require(
|
50
|
+
!roleExists(role),
|
51
|
+
"ERROR:ACS-010:ROLE_ALREADY_EXISTS");
|
52
|
+
|
53
|
+
_createRole(role, roleName);
|
54
|
+
}
|
55
|
+
|
56
|
+
function setRoleState(RoleId role, bool active) external override onlyExistingRole(role) onlyAccessOwner {
|
57
|
+
RoleInfo memory info = _info[role];
|
58
|
+
info.isActive = active;
|
59
|
+
_setRoleInfo(info);
|
60
|
+
|
61
|
+
emit LogAccessRoleStateSet(role, active);
|
62
|
+
}
|
63
|
+
|
64
|
+
function grantRole(
|
65
|
+
RoleId role,
|
66
|
+
address member
|
67
|
+
) external override onlyExistingRole(role) onlyAccessOwner {
|
68
|
+
require(_info[role].isActive, "ERROR:ACS-040:ROLE_NOT_ACTIVE");
|
69
|
+
|
70
|
+
_isRoleMember[role][member] = true;
|
71
|
+
_roleMembers[role].add(member);
|
72
|
+
|
73
|
+
emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
|
74
|
+
}
|
75
|
+
|
76
|
+
function revokeRole(
|
77
|
+
RoleId role,
|
78
|
+
address member
|
79
|
+
) external override onlyExistingRole(role) onlyAccessOwner {
|
80
|
+
delete _isRoleMember[role][member];
|
81
|
+
_roleMembers[role].remove(member);
|
82
|
+
|
83
|
+
emit LogAccessRoleGranted(role, member, false);
|
84
|
+
}
|
85
|
+
|
86
|
+
function roleExists(RoleId role) public view virtual override returns (bool) {
|
87
|
+
return _info[role].id == role;
|
88
|
+
}
|
89
|
+
|
90
|
+
function hasRole(
|
91
|
+
RoleId role,
|
92
|
+
address member
|
93
|
+
) public view virtual override returns (bool) {
|
94
|
+
return _isRoleMember[role][member];
|
95
|
+
}
|
96
|
+
|
97
|
+
function getRoleId(string memory roleName) external pure override returns (RoleId role) {
|
98
|
+
return RoleIdLib.toRoleId(roleName);
|
99
|
+
}
|
100
|
+
|
101
|
+
function getRoleInfo(
|
102
|
+
RoleId role
|
103
|
+
) external view override returns (RoleInfo memory info) {
|
104
|
+
return _info[role];
|
105
|
+
}
|
106
|
+
|
107
|
+
function getRole(
|
108
|
+
uint256 idx
|
109
|
+
) external view override returns (RoleId role) {
|
110
|
+
return _roles[idx];
|
111
|
+
}
|
112
|
+
|
113
|
+
function getRoleCount() external view override returns (uint256 roles) {
|
114
|
+
return _roles.length;
|
115
|
+
}
|
116
|
+
|
117
|
+
function getRoleMemberCount(
|
118
|
+
RoleId role
|
119
|
+
) public view override returns (uint256 roleMembers) {
|
120
|
+
return _roleMembers[role].length();
|
121
|
+
}
|
122
|
+
|
123
|
+
function getRoleMember(
|
124
|
+
RoleId role,
|
125
|
+
uint256 idx
|
126
|
+
) public view override returns (address roleMembers) {
|
127
|
+
return _roleMembers[role].at(idx);
|
128
|
+
}
|
129
|
+
|
130
|
+
function _createRole(
|
131
|
+
RoleId role,
|
132
|
+
string memory roleName
|
133
|
+
) internal {
|
134
|
+
RoleInfo memory info = RoleInfo(role, roleName, true);
|
135
|
+
_setRoleInfo(info);
|
136
|
+
|
137
|
+
emit LogAccessRoleCreated(role, roleName);
|
138
|
+
}
|
139
|
+
|
140
|
+
function _setRoleInfo(
|
141
|
+
RoleInfo memory info
|
142
|
+
) internal {
|
143
|
+
RoleId role = info.id;
|
144
|
+
_info[role] = info;
|
145
|
+
if(!roleExists(role)) {
|
146
|
+
_roles.push(role);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {RoleId} from "../../../types/RoleId.sol";
|
5
|
+
|
6
|
+
interface IAccess {
|
7
|
+
struct RoleInfo {
|
8
|
+
RoleId id;
|
9
|
+
string name;
|
10
|
+
bool isActive;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
interface IAccessModule is
|
15
|
+
IAccess
|
16
|
+
{
|
17
|
+
event LogAccessRoleCreated(RoleId role, string roleName);
|
18
|
+
event LogAccessRoleStateSet(RoleId role, bool active);
|
19
|
+
event LogAccessRoleGranted(RoleId role, address member, bool isMember);
|
20
|
+
|
21
|
+
function createRole(string memory roleName) external returns (RoleId role);
|
22
|
+
|
23
|
+
function setRoleState(RoleId role, bool active) external;
|
24
|
+
|
25
|
+
function grantRole(RoleId role, address member) external;
|
26
|
+
|
27
|
+
function revokeRole(RoleId role, address member) external;
|
28
|
+
|
29
|
+
function roleExists(RoleId role) external view returns (bool);
|
30
|
+
|
31
|
+
function hasRole(RoleId role, address member) external view returns (bool);
|
32
|
+
|
33
|
+
function getRoleCount() external view returns (uint256 roles);
|
34
|
+
|
35
|
+
function getRole(uint256 idx) external view returns (RoleId role);
|
36
|
+
|
37
|
+
function getRoleId(string memory roleName) external pure returns (RoleId role);
|
38
|
+
|
39
|
+
function getRoleInfo(
|
40
|
+
RoleId role
|
41
|
+
) external view returns (RoleInfo memory info);
|
42
|
+
|
43
|
+
function getRoleMemberCount(
|
44
|
+
RoleId role
|
45
|
+
) external view returns (uint256 roleMembers);
|
46
|
+
|
47
|
+
function getRoleMember(
|
48
|
+
RoleId role,
|
49
|
+
uint256 idx
|
50
|
+
) external view returns (address roleMember);
|
51
|
+
|
52
|
+
function getOwner() external view returns (address owner);
|
53
|
+
}
|