@etherisc/gif-next 0.0.2-d3543ee-217 → 0.0.2-da77c50-824
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 +92 -0
- 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 +790 -247
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccessComponentTypeRoles.json → IServiceLinked.sol/IServiceLinked.json} +14 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +926 -363
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → InstanceBase.sol/InstanceBase.json} +143 -129
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +276 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +276 -0
- package/artifacts/contracts/instance/module/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/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycleModule.json +1 -1
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +221 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +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/product/IProductModule.sol/IProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +10 -0
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.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 -52
- 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 -52
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +519 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +499 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +685 -0
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +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 +95 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +82 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +407 -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 +222 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +230 -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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- 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 +58 -58
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +78 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +89 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IPoolComponent.sol +57 -0
- package/contracts/components/{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 +35 -10
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/IServiceLinked.sol +12 -0
- package/contracts/instance/Instance.sol +40 -50
- package/contracts/instance/InstanceBase.sol +74 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +228 -0
- package/contracts/instance/module/bundle/IBundle.sol +53 -0
- package/contracts/instance/module/component/ComponentModule.sol +104 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol +3 -3
- package/contracts/instance/{lifecycle → module/lifecycle}/LifecycleModule.sol +5 -4
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +84 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/product/IProductModule.sol +6 -0
- package/contracts/instance/module/product/ProductModule.sol +8 -0
- package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +25 -12
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +33 -53
- package/contracts/instance/service/ComponentOwnerService.sol +174 -0
- package/contracts/instance/service/ComponentServiceBase.sol +41 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +58 -0
- package/contracts/instance/service/IService.sol +15 -0
- package/contracts/instance/service/PoolService.sol +98 -0
- package/contracts/instance/service/ProductService.sol +358 -0
- package/contracts/instance/service/ServiceBase.sol +39 -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 +92 -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 +35 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +47 -0
- package/contracts/test/TestVersionable.sol +20 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/NftId.sol +7 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +22 -14
- package/contracts/types/RoleId.sol +36 -0
- package/contracts/types/StateId.sol +6 -2
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +15 -15
- package/contracts/types/Version.sol +91 -0
- package/package.json +12 -4
- 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/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/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/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -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
@@ -2,23 +2,150 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
6
|
+
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
5
8
|
import {Fee} from "../types/Fee.sol";
|
6
|
-
import {
|
7
|
-
import {
|
9
|
+
import {UFixed} from "../types/UFixed.sol";
|
10
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
8
12
|
|
9
|
-
contract Pool is
|
10
|
-
|
11
|
-
|
13
|
+
contract Pool is BaseComponent, IPoolComponent {
|
14
|
+
|
15
|
+
bool internal _isVerifying;
|
16
|
+
UFixed internal _collateralizationLevel;
|
17
|
+
|
18
|
+
// may be used to interact with instance by derived contracts
|
19
|
+
IPoolService internal _poolService;
|
20
|
+
|
21
|
+
// only relevant to protect callback functions for "active" pools
|
22
|
+
IProductService private _productService;
|
23
|
+
|
24
|
+
modifier onlyPoolService() {
|
25
|
+
require(
|
26
|
+
msg.sender == address(_poolService),
|
27
|
+
"ERROR:POL-001:NOT_POOL_SERVICE");
|
28
|
+
_;
|
29
|
+
}
|
30
|
+
|
31
|
+
modifier onlyProductService() {
|
32
|
+
require(
|
33
|
+
msg.sender == address(_productService),
|
34
|
+
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
35
|
+
_;
|
36
|
+
}
|
12
37
|
|
13
38
|
constructor(
|
14
39
|
address registry,
|
15
|
-
|
40
|
+
NftId instanceNftId,
|
41
|
+
// TODO refactor into tokenNftId
|
16
42
|
address token,
|
17
|
-
|
18
|
-
|
19
|
-
)
|
20
|
-
|
21
|
-
|
43
|
+
bool verifying,
|
44
|
+
UFixed collateralizationLevel
|
45
|
+
)
|
46
|
+
BaseComponent(registry, instanceNftId, token)
|
47
|
+
{
|
48
|
+
_isVerifying = verifying;
|
49
|
+
// TODO add validation
|
50
|
+
_collateralizationLevel = collateralizationLevel;
|
51
|
+
|
52
|
+
_poolService = _instance.getPoolService();
|
53
|
+
_productService = _instance.getProductService();
|
54
|
+
}
|
55
|
+
|
56
|
+
function createBundle(
|
57
|
+
uint256 initialAmount,
|
58
|
+
uint256 lifetime,
|
59
|
+
bytes memory filter
|
60
|
+
)
|
61
|
+
external
|
62
|
+
virtual override
|
63
|
+
returns(NftId bundleNftId)
|
64
|
+
{
|
65
|
+
address owner = msg.sender;
|
66
|
+
bundleNftId = _poolService.createBundle(
|
67
|
+
owner,
|
68
|
+
initialAmount,
|
69
|
+
lifetime,
|
70
|
+
filter
|
71
|
+
);
|
72
|
+
|
73
|
+
// TODO add logging
|
74
|
+
}
|
75
|
+
|
76
|
+
/**
|
77
|
+
* @dev see {IPool.underwrite}.
|
78
|
+
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
79
|
+
*/
|
80
|
+
function underwrite(
|
81
|
+
NftId policyNftId,
|
82
|
+
bytes memory policyData,
|
83
|
+
bytes memory bundleFilter,
|
84
|
+
uint256 collateralizationAmount
|
85
|
+
)
|
86
|
+
external
|
87
|
+
onlyProductService
|
88
|
+
virtual override
|
89
|
+
{
|
90
|
+
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
91
|
+
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* @dev see {IPoolComponent.policyMatchesBundle}.
|
95
|
+
* Default implementation always returns true
|
96
|
+
*/
|
97
|
+
function policyMatchesBundle(
|
98
|
+
bytes memory, // policyData
|
99
|
+
bytes memory // bundleFilter
|
100
|
+
)
|
101
|
+
public
|
102
|
+
view
|
103
|
+
virtual override
|
104
|
+
returns (bool isMatching)
|
105
|
+
{
|
106
|
+
return true;
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
function isVerifying() external view override returns (bool verifying) {
|
111
|
+
return _isVerifying;
|
112
|
+
}
|
113
|
+
|
114
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
115
|
+
return _collateralizationLevel;
|
116
|
+
}
|
117
|
+
|
118
|
+
function _underwrite(
|
119
|
+
NftId policyNftId,
|
120
|
+
bytes memory policyData,
|
121
|
+
bytes memory bundleFilter,
|
122
|
+
uint256 collateralizationAmount
|
123
|
+
)
|
124
|
+
internal
|
125
|
+
{
|
126
|
+
require(
|
127
|
+
policyMatchesBundle(policyData, bundleFilter),
|
128
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
129
|
+
);
|
130
|
+
|
131
|
+
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
132
|
+
}
|
133
|
+
|
134
|
+
function _createBundle(
|
135
|
+
address bundleOwner,
|
136
|
+
uint256 amount,
|
137
|
+
uint256 lifetime,
|
138
|
+
bytes calldata filter
|
139
|
+
)
|
140
|
+
internal
|
141
|
+
returns(NftId bundleNftId)
|
142
|
+
{
|
143
|
+
bundleNftId = _poolService.createBundle(
|
144
|
+
bundleOwner,
|
145
|
+
amount,
|
146
|
+
lifetime,
|
147
|
+
filter
|
148
|
+
);
|
22
149
|
}
|
23
150
|
|
24
151
|
// from pool component
|
@@ -28,7 +155,7 @@ contract Pool is Component, IPoolComponent {
|
|
28
155
|
override
|
29
156
|
returns (Fee memory stakingFee)
|
30
157
|
{
|
31
|
-
return
|
158
|
+
return _instance.getPoolSetup(getNftId()).stakingFee;
|
32
159
|
}
|
33
160
|
|
34
161
|
function getPerformanceFee()
|
@@ -37,16 +164,11 @@ contract Pool is Component, IPoolComponent {
|
|
37
164
|
override
|
38
165
|
returns (Fee memory performanceFee)
|
39
166
|
{
|
40
|
-
return
|
167
|
+
return _instance.getPoolSetup(getNftId()).performanceFee;
|
41
168
|
}
|
42
169
|
|
43
170
|
// from registerable
|
44
171
|
function getType() public pure override returns (ObjectType) {
|
45
172
|
return POOL();
|
46
173
|
}
|
47
|
-
|
48
|
-
// from registerable
|
49
|
-
function getData() external view override returns (bytes memory data) {
|
50
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
51
|
-
}
|
52
174
|
}
|
@@ -1,33 +1,27 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IProductService} from "../instance/
|
5
|
-
import {
|
6
|
-
import {IProductComponent} from "./IProduct.sol";
|
4
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
5
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
7
6
|
import {NftId} from "../types/NftId.sol";
|
8
7
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
8
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
9
9
|
import {Fee} from "../types/Fee.sol";
|
10
|
-
import {
|
10
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
11
11
|
|
12
|
-
contract Product is
|
12
|
+
contract Product is BaseComponent, IProductComponent {
|
13
13
|
IProductService private _productService;
|
14
14
|
address private _pool;
|
15
|
-
Fee private _policyFee;
|
16
|
-
Fee private _processingFee;
|
17
15
|
|
18
16
|
constructor(
|
19
17
|
address registry,
|
20
|
-
|
18
|
+
NftId instanceNftid,
|
21
19
|
address token,
|
22
|
-
address pool
|
23
|
-
|
24
|
-
Fee memory processingFee
|
25
|
-
) Component(registry, instance, token) {
|
20
|
+
address pool
|
21
|
+
) BaseComponent(registry, instanceNftid, token) {
|
26
22
|
// TODO add validation
|
27
23
|
_productService = _instance.getProductService();
|
28
24
|
_pool = pool;
|
29
|
-
_policyFee = policyFee;
|
30
|
-
_processingFee = processingFee;
|
31
25
|
}
|
32
26
|
|
33
27
|
function _createApplication(
|
@@ -46,12 +40,39 @@ contract Product is Component, IProductComponent {
|
|
46
40
|
);
|
47
41
|
}
|
48
42
|
|
49
|
-
function _underwrite(
|
50
|
-
|
43
|
+
function _underwrite(
|
44
|
+
NftId policyNftId,
|
45
|
+
bool requirePremiumPayment,
|
46
|
+
Timestamp activateAt
|
47
|
+
)
|
48
|
+
internal
|
49
|
+
{
|
50
|
+
_productService.underwrite(
|
51
|
+
policyNftId,
|
52
|
+
requirePremiumPayment,
|
53
|
+
activateAt);
|
51
54
|
}
|
52
55
|
|
53
|
-
function _collectPremium(
|
54
|
-
|
56
|
+
function _collectPremium(
|
57
|
+
NftId policyNftId,
|
58
|
+
Timestamp activateAt
|
59
|
+
)
|
60
|
+
internal
|
61
|
+
{
|
62
|
+
_productService.collectPremium(
|
63
|
+
policyNftId,
|
64
|
+
activateAt);
|
65
|
+
}
|
66
|
+
|
67
|
+
function _activate(
|
68
|
+
NftId policyNftId,
|
69
|
+
Timestamp activateAt
|
70
|
+
)
|
71
|
+
internal
|
72
|
+
{
|
73
|
+
_productService.activate(
|
74
|
+
policyNftId,
|
75
|
+
activateAt);
|
55
76
|
}
|
56
77
|
|
57
78
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
@@ -59,13 +80,25 @@ contract Product is Component, IProductComponent {
|
|
59
80
|
}
|
60
81
|
|
61
82
|
// from product component
|
83
|
+
function setFees(
|
84
|
+
Fee memory policyFee,
|
85
|
+
Fee memory processingFee
|
86
|
+
)
|
87
|
+
external
|
88
|
+
onlyOwner
|
89
|
+
override
|
90
|
+
{
|
91
|
+
_productService.setFees(policyFee, processingFee);
|
92
|
+
}
|
93
|
+
|
94
|
+
|
62
95
|
function getPolicyFee()
|
63
96
|
external
|
64
97
|
view
|
65
98
|
override
|
66
99
|
returns (Fee memory policyFee)
|
67
100
|
{
|
68
|
-
return
|
101
|
+
return _instance.getProductSetup(getNftId()).policyFee;
|
69
102
|
}
|
70
103
|
|
71
104
|
function getProcessingFee()
|
@@ -74,16 +107,11 @@ contract Product is Component, IProductComponent {
|
|
74
107
|
override
|
75
108
|
returns (Fee memory processingFee)
|
76
109
|
{
|
77
|
-
return
|
110
|
+
return _instance.getProductSetup(getNftId()).processingFee;
|
78
111
|
}
|
79
112
|
|
80
113
|
// from registerable
|
81
114
|
function getType() public pure override returns (ObjectType) {
|
82
115
|
return PRODUCT();
|
83
116
|
}
|
84
|
-
|
85
|
-
// from registerable
|
86
|
-
function getData() external view override returns (bytes memory data) {
|
87
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
88
|
-
}
|
89
117
|
}
|
@@ -1,25 +1,50 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
|
6
|
+
|
7
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
8
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
9
|
+
import {IOwnable} from "../shared/IOwnable.sol";
|
10
|
+
import {RoleId} from "../types/RoleId.sol";
|
11
|
+
|
12
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
13
|
+
import {ILifecycleModule} from "./module/lifecycle/ILifecycle.sol";
|
14
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
15
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
16
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
17
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
18
|
+
import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
|
19
|
+
|
20
|
+
import {IRegistry, IRegistryLinked} from "../registry/IRegistryLinked.sol";
|
21
|
+
import {IServiceLinked} from "./IServiceLinked.sol";
|
22
|
+
|
23
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
24
|
+
import {IProductService} from "./service/IProductService.sol";
|
25
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
26
|
+
|
12
27
|
|
13
28
|
// solhint-disable-next-line no-empty-blocks
|
14
29
|
interface IInstance is
|
30
|
+
IERC165,
|
31
|
+
IVersionable,
|
15
32
|
IRegisterable,
|
16
33
|
IAccessModule,
|
17
34
|
ILifecycleModule,
|
18
35
|
IPolicyModule,
|
19
36
|
IPoolModule,
|
37
|
+
IBundleModule,
|
20
38
|
IComponentModule,
|
21
|
-
|
22
|
-
|
39
|
+
ITreasuryModule,
|
40
|
+
IServiceLinked
|
23
41
|
{
|
42
|
+
function getRegistry() external view override (IBundleModule, IComponentModule, IPolicyModule, IRegisterable) returns (IRegistry registry);
|
43
|
+
function hasRole(RoleId role, address member) external view override (IAccessModule, IComponentModule) returns (bool hasRole);
|
44
|
+
|
45
|
+
function getComponentOwnerService() external view override (IServiceLinked, IComponentModule) returns(IComponentOwnerService);
|
46
|
+
function getProductService() external view override (IServiceLinked, IBundleModule, IPolicyModule) returns(IProductService);
|
47
|
+
function getPoolService() external view override (IServiceLinked, IBundleModule, IPoolModule) returns(IPoolService);
|
24
48
|
|
49
|
+
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
25
50
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
5
|
+
import {IProductService} from "./service/IProductService.sol";
|
6
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
7
|
+
|
8
|
+
interface IServiceLinked {
|
9
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
10
|
+
function getProductService() external view returns(IProductService service);
|
11
|
+
function getPoolService() external view returns(IPoolService service);
|
12
|
+
}
|
@@ -1,72 +1,62 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {PolicyModule} from "./policy/PolicyModule.sol";
|
12
|
-
import {PoolModule} from "./pool/PoolModule.sol";
|
13
|
-
import {
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {RoleId} from "../types/RoleId.sol";
|
6
|
+
|
7
|
+
import {InstanceBase} from "./InstanceBase.sol";
|
8
|
+
import {AccessModule} from "./module/access/Access.sol";
|
9
|
+
import {LifecycleModule} from "./module/lifecycle/LifecycleModule.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 {BundleModule} from "./module/bundle/BundleModule.sol";
|
14
|
+
import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
|
14
15
|
|
15
|
-
import {
|
16
|
-
import {
|
17
|
-
import {
|
16
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
17
|
+
import {Registerable} from "../shared/Registerable.sol";
|
18
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
19
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
20
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
21
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
22
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
23
|
+
import {IServiceLinked} from "./IServiceLinked.sol";
|
24
|
+
|
25
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
26
|
+
import {IProductService} from "./service/IProductService.sol";
|
27
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
18
28
|
|
19
29
|
contract Instance is
|
20
|
-
|
30
|
+
InstanceBase,
|
21
31
|
AccessModule,
|
22
|
-
|
32
|
+
BundleModule,
|
23
33
|
ComponentModule,
|
34
|
+
LifecycleModule,
|
24
35
|
PolicyModule,
|
25
36
|
PoolModule,
|
26
|
-
|
27
|
-
TreasuryModule,
|
28
|
-
IInstance
|
37
|
+
TreasuryModule
|
29
38
|
{
|
30
39
|
constructor(
|
31
40
|
address registry,
|
32
|
-
|
33
|
-
address productService
|
41
|
+
NftId registryNftId
|
34
42
|
)
|
35
|
-
|
43
|
+
InstanceBase(registry, registryNftId)
|
36
44
|
AccessModule()
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
PoolModule(
|
41
|
-
|
45
|
+
BundleModule()
|
46
|
+
ComponentModule()
|
47
|
+
PolicyModule()
|
48
|
+
PoolModule()
|
49
|
+
TreasuryModule()
|
42
50
|
{
|
43
|
-
|
44
51
|
}
|
45
52
|
|
46
|
-
|
47
|
-
function register() external override returns (NftId nftId) {
|
48
|
-
require(
|
49
|
-
address(_registry) != address(0),
|
50
|
-
"ERROR:PRD-001:REGISTRY_ZERO"
|
51
|
-
);
|
52
|
-
return _registry.register(address(this));
|
53
|
-
}
|
53
|
+
function getRegistry() public view override (Registerable, IBundleModule, IComponentModule, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
|
54
54
|
|
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
|
-
}
|
55
|
+
function hasRole(RoleId role, address member) public view override (AccessModule, IComponentModule) returns (bool) { return super.hasRole(role, member); }
|
62
56
|
|
63
|
-
|
64
|
-
function
|
65
|
-
|
66
|
-
}
|
57
|
+
function getComponentOwnerService() external view override (IComponentModule, IServiceLinked) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
58
|
+
function getProductService() external view override (IBundleModule, IPolicyModule, IServiceLinked) returns(IProductService service) { return _productService; }
|
59
|
+
function getPoolService() external view override (IBundleModule, IPoolModule, IServiceLinked) returns(IPoolService service) { return _poolService; }
|
67
60
|
|
68
|
-
|
69
|
-
function getData() external pure override returns (bytes memory data) {
|
70
|
-
return bytes(abi.encode(0));
|
71
|
-
}
|
61
|
+
function getOwner() public view override (IAccessModule, Registerable) returns(address owner) { return super.getOwner(); }
|
72
62
|
}
|
@@ -0,0 +1,74 @@
|
|
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, toVersion, toVersionPart} 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 {IServiceLinked} from "./IServiceLinked.sol";
|
18
|
+
import {IInstance} from "./IInstance.sol";
|
19
|
+
|
20
|
+
abstract contract InstanceBase is
|
21
|
+
Versionable,
|
22
|
+
Registerable,
|
23
|
+
IServiceLinked
|
24
|
+
{
|
25
|
+
IComponentOwnerService internal _componentOwnerService;
|
26
|
+
IProductService internal _productService;
|
27
|
+
IPoolService internal _poolService;
|
28
|
+
|
29
|
+
constructor(
|
30
|
+
address registry,
|
31
|
+
NftId registryNftId
|
32
|
+
)
|
33
|
+
Registerable(registry, registryNftId)
|
34
|
+
Versionable()
|
35
|
+
{
|
36
|
+
_registerInterface(type(IInstance).interfaceId);
|
37
|
+
_linkToServicesInRegistry();
|
38
|
+
}
|
39
|
+
|
40
|
+
// from versionable
|
41
|
+
function getVersion()
|
42
|
+
public
|
43
|
+
pure
|
44
|
+
virtual override
|
45
|
+
returns(Version)
|
46
|
+
{
|
47
|
+
return toVersion(
|
48
|
+
toVersionPart(3),
|
49
|
+
toVersionPart(0),
|
50
|
+
toVersionPart(0));
|
51
|
+
}
|
52
|
+
|
53
|
+
// from registerable
|
54
|
+
function getType() external pure override returns (ObjectType objectType) {
|
55
|
+
return INSTANCE();
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
// internal / private functions
|
60
|
+
function _linkToServicesInRegistry() internal {
|
61
|
+
VersionPart majorVersion = getVersion().toMajorPart();
|
62
|
+
_componentOwnerService = IComponentOwnerService(_getAndCheck("ComponentOwnerService", majorVersion));
|
63
|
+
_productService = IProductService(_getAndCheck("ProductService", majorVersion));
|
64
|
+
_poolService = IPoolService(_getAndCheck("PoolService", majorVersion));
|
65
|
+
}
|
66
|
+
|
67
|
+
function _getAndCheck(string memory serviceName, VersionPart majorVersion) internal view returns (address serviceAddress) {
|
68
|
+
serviceAddress = _registry.getServiceAddress(serviceName, majorVersion);
|
69
|
+
require(
|
70
|
+
serviceAddress != address(0),
|
71
|
+
"ERROR:INS-001:NOT_REGISTERED"
|
72
|
+
);
|
73
|
+
}
|
74
|
+
}
|