@etherisc/gif-next 0.0.2-f619be3-760 → 0.0.2-f72939c-683
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 +114 -11
- 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 +156 -29
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +74 -72
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- 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/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1124 -598
- 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 +1424 -782
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +133 -132
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +81 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +344 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -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 +265 -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 +265 -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 +136 -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/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +66 -57
- 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 +145 -111
- 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 -112
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +67 -52
- 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 -62
- 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 +132 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +150 -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 +231 -190
- 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 +232 -191
- 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 +548 -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 +744 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +147 -30
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +241 -25
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +16 -61
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +16 -61
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +455 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +479 -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/{mock → test}/Usdc.sol/USDC.json +3 -3
- 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/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -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 +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 +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 +94 -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 +155 -16
- package/contracts/components/Product.sol +116 -24
- package/contracts/instance/IInstance.sol +37 -11
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +48 -49
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +19 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/{lifecycle → base}/ILifecycle.sol +4 -21
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +84 -0
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/base/ModuleBase.sol +53 -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 +135 -0
- package/contracts/instance/module/bundle/IBundle.sol +51 -0
- package/contracts/instance/module/compensation/CompensationModule.sol +17 -0
- package/contracts/instance/module/compensation/ICompensation.sol +10 -0
- package/contracts/instance/module/component/ComponentModule.sol +81 -0
- package/contracts/instance/module/component/IComponent.sol +29 -0
- package/contracts/instance/module/policy/IPolicy.sol +62 -0
- package/contracts/instance/module/policy/PolicyModule.sol +92 -0
- package/contracts/instance/module/pool/IPoolModule.sol +40 -0
- package/contracts/instance/module/pool/PoolModule.sol +90 -0
- package/contracts/instance/module/risk/IRisk.sol +27 -0
- package/contracts/instance/module/risk/RiskModule.sol +70 -0
- package/contracts/instance/module/treasury/ITreasury.sol +96 -0
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/module/treasury/TreasuryModule.sol +171 -0
- package/contracts/instance/service/ComponentOwnerService.sol +155 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +78 -0
- package/contracts/instance/service/PoolService.sol +129 -0
- package/contracts/instance/service/ProductService.sol +406 -0
- package/contracts/registry/ChainNft.sol +61 -37
- package/contracts/registry/IRegistry.sol +24 -34
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +284 -85
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +52 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +89 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +24 -0
- package/contracts/test/TestProduct.sol +66 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/{mock → test}/Usdc.sol +1 -1
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Fee.sol +39 -20
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +22 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +33 -13
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +13 -3
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +12 -13
- package/contracts/types/Version.sol +95 -0
- package/package.json +8 -3
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/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/mock/Dip.sol/DIP.dbg.json +0 -4
- package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
- package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
- package/artifacts/contracts/mock/Usdc.sol/USDC.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/lifecycle/LifecycleModule.sol +0 -88
- 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/ITreasury.sol +0 -91
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
- package/contracts/instance/treasury/TreasuryModule.sol +0 -168
- package/contracts/mock/TestPool.sol +0 -16
- package/contracts/mock/TestProduct.sol +0 -39
@@ -2,23 +2,157 @@
|
|
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
|
+
Fee internal _initialStakingFee;
|
19
|
+
Fee internal _initialPerformanceFee;
|
20
|
+
|
21
|
+
// may be used to interact with instance by derived contracts
|
22
|
+
IPoolService internal _poolService;
|
23
|
+
|
24
|
+
// only relevant to protect callback functions for "active" pools
|
25
|
+
IProductService private _productService;
|
26
|
+
|
27
|
+
modifier onlyPoolService() {
|
28
|
+
require(
|
29
|
+
msg.sender == address(_poolService),
|
30
|
+
"ERROR:POL-001:NOT_POOL_SERVICE");
|
31
|
+
_;
|
32
|
+
}
|
33
|
+
|
34
|
+
modifier onlyProductService() {
|
35
|
+
require(
|
36
|
+
msg.sender == address(_productService),
|
37
|
+
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
38
|
+
_;
|
39
|
+
}
|
12
40
|
|
13
41
|
constructor(
|
14
42
|
address registry,
|
15
|
-
|
43
|
+
NftId instanceNftId,
|
44
|
+
// TODO refactor into tokenNftId
|
16
45
|
address token,
|
46
|
+
bool verifying,
|
47
|
+
UFixed collateralizationLevel,
|
17
48
|
Fee memory stakingFee,
|
18
49
|
Fee memory performanceFee
|
19
|
-
)
|
20
|
-
|
21
|
-
|
50
|
+
)
|
51
|
+
BaseComponent(registry, instanceNftId, token)
|
52
|
+
{
|
53
|
+
_isVerifying = verifying;
|
54
|
+
// TODO add validation
|
55
|
+
_collateralizationLevel = collateralizationLevel;
|
56
|
+
_initialStakingFee = stakingFee;
|
57
|
+
_initialPerformanceFee = performanceFee;
|
58
|
+
|
59
|
+
_poolService = _instance.getPoolService();
|
60
|
+
_productService = _instance.getProductService();
|
61
|
+
}
|
62
|
+
|
63
|
+
function createBundle(
|
64
|
+
uint256 initialAmount,
|
65
|
+
uint256 lifetime,
|
66
|
+
bytes memory filter
|
67
|
+
)
|
68
|
+
external
|
69
|
+
virtual override
|
70
|
+
returns(NftId bundleNftId)
|
71
|
+
{
|
72
|
+
address owner = msg.sender;
|
73
|
+
bundleNftId = _poolService.createBundle(
|
74
|
+
owner,
|
75
|
+
initialAmount,
|
76
|
+
lifetime,
|
77
|
+
filter
|
78
|
+
);
|
79
|
+
|
80
|
+
// TODO add logging
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* @dev see {IPool.underwrite}.
|
85
|
+
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
86
|
+
*/
|
87
|
+
function underwrite(
|
88
|
+
NftId policyNftId,
|
89
|
+
bytes memory policyData,
|
90
|
+
bytes memory bundleFilter,
|
91
|
+
uint256 collateralizationAmount
|
92
|
+
)
|
93
|
+
external
|
94
|
+
onlyProductService
|
95
|
+
virtual override
|
96
|
+
{
|
97
|
+
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
98
|
+
}
|
99
|
+
|
100
|
+
/**
|
101
|
+
* @dev see {IPoolComponent.policyMatchesBundle}.
|
102
|
+
* Default implementation always returns true
|
103
|
+
*/
|
104
|
+
function policyMatchesBundle(
|
105
|
+
bytes memory, // policyData
|
106
|
+
bytes memory // bundleFilter
|
107
|
+
)
|
108
|
+
public
|
109
|
+
view
|
110
|
+
virtual override
|
111
|
+
returns (bool isMatching)
|
112
|
+
{
|
113
|
+
return true;
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
function isVerifying() external view override returns (bool verifying) {
|
118
|
+
return _isVerifying;
|
119
|
+
}
|
120
|
+
|
121
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
122
|
+
return _collateralizationLevel;
|
123
|
+
}
|
124
|
+
|
125
|
+
function _underwrite(
|
126
|
+
NftId policyNftId,
|
127
|
+
bytes memory policyData,
|
128
|
+
bytes memory bundleFilter,
|
129
|
+
uint256 collateralizationAmount
|
130
|
+
)
|
131
|
+
internal
|
132
|
+
{
|
133
|
+
require(
|
134
|
+
policyMatchesBundle(policyData, bundleFilter),
|
135
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
136
|
+
);
|
137
|
+
|
138
|
+
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
139
|
+
}
|
140
|
+
|
141
|
+
function _createBundle(
|
142
|
+
address bundleOwner,
|
143
|
+
uint256 amount,
|
144
|
+
uint256 lifetime,
|
145
|
+
bytes calldata filter
|
146
|
+
)
|
147
|
+
internal
|
148
|
+
returns(NftId bundleNftId)
|
149
|
+
{
|
150
|
+
bundleNftId = _poolService.createBundle(
|
151
|
+
bundleOwner,
|
152
|
+
amount,
|
153
|
+
lifetime,
|
154
|
+
filter
|
155
|
+
);
|
22
156
|
}
|
23
157
|
|
24
158
|
// from pool component
|
@@ -28,7 +162,12 @@ contract Pool is Component, IPoolComponent {
|
|
28
162
|
override
|
29
163
|
returns (Fee memory stakingFee)
|
30
164
|
{
|
31
|
-
|
165
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
166
|
+
if (productNftId.gtz()) {
|
167
|
+
return _instance.getTreasuryInfo(productNftId).stakingFee;
|
168
|
+
} else {
|
169
|
+
return _initialStakingFee;
|
170
|
+
}
|
32
171
|
}
|
33
172
|
|
34
173
|
function getPerformanceFee()
|
@@ -37,16 +176,16 @@ contract Pool is Component, IPoolComponent {
|
|
37
176
|
override
|
38
177
|
returns (Fee memory performanceFee)
|
39
178
|
{
|
40
|
-
|
179
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
180
|
+
if (productNftId.gtz()) {
|
181
|
+
return _instance.getTreasuryInfo(productNftId).performanceFee;
|
182
|
+
} else {
|
183
|
+
return _initialPerformanceFee;
|
184
|
+
}
|
41
185
|
}
|
42
186
|
|
43
187
|
// from registerable
|
44
188
|
function getType() public pure override returns (ObjectType) {
|
45
189
|
return POOL();
|
46
190
|
}
|
47
|
-
|
48
|
-
// from registerable
|
49
|
-
function getData() external view override returns (bytes memory data) {
|
50
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
51
|
-
}
|
52
191
|
}
|
@@ -1,37 +1,84 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import {IRisk} from "../instance/module/risk/IRisk.sol";
|
5
|
+
import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
|
6
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
7
8
|
import {NftId} from "../types/NftId.sol";
|
8
9
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
10
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
11
|
+
import {StateId} from "../types/StateId.sol";
|
12
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
9
13
|
import {Fee} from "../types/Fee.sol";
|
10
|
-
import {
|
14
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
11
15
|
|
12
|
-
contract Product is
|
13
|
-
IProductService
|
14
|
-
address
|
15
|
-
Fee
|
16
|
-
Fee
|
16
|
+
contract Product is BaseComponent, IProductComponent {
|
17
|
+
IProductService internal _productService;
|
18
|
+
address internal _pool;
|
19
|
+
Fee internal _initialPolicyFee;
|
20
|
+
Fee internal _initialProcessingFee;
|
17
21
|
|
18
22
|
constructor(
|
19
23
|
address registry,
|
20
|
-
|
24
|
+
NftId instanceNftid,
|
21
25
|
address token,
|
22
26
|
address pool,
|
23
27
|
Fee memory policyFee,
|
24
28
|
Fee memory processingFee
|
25
|
-
)
|
29
|
+
) BaseComponent(registry, instanceNftid, token) {
|
26
30
|
// TODO add validation
|
27
31
|
_productService = _instance.getProductService();
|
28
32
|
_pool = pool;
|
29
|
-
|
30
|
-
|
33
|
+
_initialPolicyFee = policyFee;
|
34
|
+
_initialProcessingFee = processingFee;
|
35
|
+
}
|
36
|
+
|
37
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
38
|
+
return RiskIdLib.toRiskId(riskName);
|
39
|
+
}
|
40
|
+
|
41
|
+
function _createRisk(
|
42
|
+
RiskId id,
|
43
|
+
bytes memory data
|
44
|
+
) internal {
|
45
|
+
_productService.createRisk(
|
46
|
+
id,
|
47
|
+
data
|
48
|
+
);
|
49
|
+
}
|
50
|
+
|
51
|
+
function _setRiskInfo(
|
52
|
+
RiskId id,
|
53
|
+
IRisk.RiskInfo memory info
|
54
|
+
) internal {
|
55
|
+
_productService.setRiskInfo(
|
56
|
+
id,
|
57
|
+
info
|
58
|
+
);
|
59
|
+
}
|
60
|
+
|
61
|
+
function _updateRiskState(
|
62
|
+
RiskId id,
|
63
|
+
StateId state
|
64
|
+
) internal {
|
65
|
+
_productService.updateRiskState(
|
66
|
+
id,
|
67
|
+
state
|
68
|
+
);
|
69
|
+
}
|
70
|
+
|
71
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
72
|
+
return _instance.getRiskInfo(id);
|
73
|
+
}
|
74
|
+
|
75
|
+
function _getRiskState(RiskId id) internal view returns (StateId state) {
|
76
|
+
return _instance.getRiskState(id);
|
31
77
|
}
|
32
78
|
|
33
79
|
function _createApplication(
|
34
80
|
address applicationOwner,
|
81
|
+
RiskId riskId,
|
35
82
|
uint256 sumInsuredAmount,
|
36
83
|
uint256 premiumAmount,
|
37
84
|
uint256 lifetime,
|
@@ -39,6 +86,7 @@ contract Product is Component, IProductComponent {
|
|
39
86
|
) internal returns (NftId nftId) {
|
40
87
|
nftId = _productService.createApplication(
|
41
88
|
applicationOwner,
|
89
|
+
riskId,
|
42
90
|
sumInsuredAmount,
|
43
91
|
premiumAmount,
|
44
92
|
lifetime,
|
@@ -46,12 +94,39 @@ contract Product is Component, IProductComponent {
|
|
46
94
|
);
|
47
95
|
}
|
48
96
|
|
49
|
-
function _underwrite(
|
50
|
-
|
97
|
+
function _underwrite(
|
98
|
+
NftId policyNftId,
|
99
|
+
bool requirePremiumPayment,
|
100
|
+
Timestamp activateAt
|
101
|
+
)
|
102
|
+
internal
|
103
|
+
{
|
104
|
+
_productService.underwrite(
|
105
|
+
policyNftId,
|
106
|
+
requirePremiumPayment,
|
107
|
+
activateAt);
|
51
108
|
}
|
52
109
|
|
53
|
-
function _collectPremium(
|
54
|
-
|
110
|
+
function _collectPremium(
|
111
|
+
NftId policyNftId,
|
112
|
+
Timestamp activateAt
|
113
|
+
)
|
114
|
+
internal
|
115
|
+
{
|
116
|
+
_productService.collectPremium(
|
117
|
+
policyNftId,
|
118
|
+
activateAt);
|
119
|
+
}
|
120
|
+
|
121
|
+
function _activate(
|
122
|
+
NftId policyNftId,
|
123
|
+
Timestamp activateAt
|
124
|
+
)
|
125
|
+
internal
|
126
|
+
{
|
127
|
+
_productService.activate(
|
128
|
+
policyNftId,
|
129
|
+
activateAt);
|
55
130
|
}
|
56
131
|
|
57
132
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
@@ -59,13 +134,30 @@ contract Product is Component, IProductComponent {
|
|
59
134
|
}
|
60
135
|
|
61
136
|
// from product component
|
137
|
+
function setFees(
|
138
|
+
Fee memory policyFee,
|
139
|
+
Fee memory processingFee
|
140
|
+
)
|
141
|
+
external
|
142
|
+
onlyOwner
|
143
|
+
override
|
144
|
+
{
|
145
|
+
_productService.setFees(policyFee, processingFee);
|
146
|
+
}
|
147
|
+
|
148
|
+
|
62
149
|
function getPolicyFee()
|
63
150
|
external
|
64
151
|
view
|
65
152
|
override
|
66
153
|
returns (Fee memory policyFee)
|
67
154
|
{
|
68
|
-
|
155
|
+
NftId productNftId = getNftId();
|
156
|
+
if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
|
157
|
+
return _instance.getTreasuryInfo(productNftId).policyFee;
|
158
|
+
} else {
|
159
|
+
return _initialPolicyFee;
|
160
|
+
}
|
69
161
|
}
|
70
162
|
|
71
163
|
function getProcessingFee()
|
@@ -74,16 +166,16 @@ contract Product is Component, IProductComponent {
|
|
74
166
|
override
|
75
167
|
returns (Fee memory processingFee)
|
76
168
|
{
|
77
|
-
|
169
|
+
NftId productNftId = getNftId();
|
170
|
+
if (address(_instance.getTokenHandler(productNftId)) != address(0)) {
|
171
|
+
return _instance.getTreasuryInfo(productNftId).processingFee;
|
172
|
+
} else {
|
173
|
+
return _initialProcessingFee;
|
174
|
+
}
|
78
175
|
}
|
79
176
|
|
80
177
|
// from registerable
|
81
178
|
function getType() public pure override returns (ObjectType) {
|
82
179
|
return PRODUCT();
|
83
180
|
}
|
84
|
-
|
85
|
-
// from registerable
|
86
|
-
function getData() external view override returns (bytes memory data) {
|
87
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
88
|
-
}
|
89
181
|
}
|
@@ -1,25 +1,51 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
|
11
|
-
import {
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
|
6
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
7
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
8
|
+
import {IOwnable} from "../shared/IOwnable.sol";
|
9
|
+
import {RoleId} from "../types/RoleId.sol";
|
10
|
+
|
11
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
12
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
13
|
+
import {ICompensationModule} from "./module/compensation/ICompensation.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 {IRiskModule} from "./module/risk/IRisk.sol";
|
18
|
+
import {ITreasuryModule} from "./module/treasury/ITreasury.sol";
|
19
|
+
|
20
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
21
|
+
import {IRegistry, IRegistryLinked} from "../registry/IRegistryLinked.sol";
|
22
|
+
|
23
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
24
|
+
import {IProductService} from "./service/IProductService.sol";
|
25
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
26
|
+
import {IInstanceBase} from "./base/IInstanceBase.sol";
|
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
|
-
ILifecycleModule,
|
18
34
|
IPolicyModule,
|
19
35
|
IPoolModule,
|
36
|
+
IRiskModule,
|
37
|
+
IBundleModule,
|
20
38
|
IComponentModule,
|
21
|
-
|
22
|
-
|
39
|
+
ITreasuryModule,
|
40
|
+
ICompensationModule,
|
41
|
+
IInstanceBase
|
23
42
|
{
|
43
|
+
function getRegistry() external view override (IPolicyModule, IRegisterable) returns (IRegistry registry);
|
44
|
+
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
45
|
+
|
46
|
+
function getKeyValueStore() external view override (IInstanceBase) returns (IKeyValueStore keyValueStore);
|
47
|
+
function getComponentOwnerService() external view override (IInstanceBase, IComponentModule) returns(IComponentOwnerService);
|
48
|
+
function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
|
49
|
+
function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
|
24
50
|
|
25
51
|
}
|
@@ -1,72 +1,71 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {NftId} from "../types/NftId.sol";
|
5
|
+
import {RoleId} from "../types/RoleId.sol";
|
6
|
+
|
7
|
+
import {InstanceBase} from "./base/InstanceBase.sol";
|
8
|
+
import {AccessModule} from "./module/access/Access.sol";
|
9
|
+
import {CompensationModule} from "./module/compensation/CompensationModule.sol";
|
10
|
+
import {ComponentModule} from "./module/component/ComponentModule.sol";
|
11
|
+
import {PolicyModule} from "./module/policy/PolicyModule.sol";
|
12
|
+
import {PoolModule} from "./module/pool/PoolModule.sol";
|
13
|
+
import {RiskModule} from "./module/risk/RiskModule.sol";
|
14
|
+
import {BundleModule} from "./module/bundle/BundleModule.sol";
|
15
|
+
import {TreasuryModule} from "./module/treasury/TreasuryModule.sol";
|
16
|
+
|
5
17
|
import {IRegistry} from "../registry/IRegistry.sol";
|
18
|
+
import {Registerable} from "../shared/Registerable.sol";
|
19
|
+
import {IAccessModule} from "./module/access/IAccess.sol";
|
20
|
+
import {IBundleModule} from "./module/bundle/IBundle.sol";
|
21
|
+
import {IComponentModule} from "./module/component/IComponent.sol";
|
22
|
+
import {IPoolModule} from "./module/pool/IPoolModule.sol";
|
23
|
+
import {IPolicyModule} from "./module/policy/IPolicy.sol";
|
24
|
+
import {IInstanceBase} from "./base/IInstanceBase.sol";
|
6
25
|
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {ProductModule} from "./product/ProductService.sol";
|
11
|
-
import {PolicyModule} from "./policy/PolicyModule.sol";
|
12
|
-
import {PoolModule} from "./pool/PoolModule.sol";
|
13
|
-
import {TreasuryModule} from "./treasury/TreasuryModule.sol";
|
26
|
+
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
27
|
+
import {IProductService} from "./service/IProductService.sol";
|
28
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
14
29
|
|
15
|
-
import {
|
16
|
-
import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
|
17
|
-
import {NftId, toNftId} from "../types/NftId.sol";
|
30
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
18
31
|
|
19
32
|
contract Instance is
|
20
|
-
|
33
|
+
InstanceBase,
|
21
34
|
AccessModule,
|
22
|
-
|
35
|
+
BundleModule,
|
23
36
|
ComponentModule,
|
37
|
+
CompensationModule,
|
24
38
|
PolicyModule,
|
25
39
|
PoolModule,
|
26
|
-
|
27
|
-
TreasuryModule
|
28
|
-
IInstance
|
40
|
+
RiskModule,
|
41
|
+
TreasuryModule
|
29
42
|
{
|
30
43
|
constructor(
|
31
44
|
address registry,
|
32
|
-
|
33
|
-
address productService
|
45
|
+
NftId registryNftId
|
34
46
|
)
|
35
|
-
|
47
|
+
InstanceBase(registry, registryNftId)
|
36
48
|
AccessModule()
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
PoolModule(
|
41
|
-
|
49
|
+
BundleModule()
|
50
|
+
ComponentModule()
|
51
|
+
PolicyModule()
|
52
|
+
PoolModule()
|
53
|
+
TreasuryModule()
|
42
54
|
{
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
address(_registry) != address(0),
|
50
|
-
"ERROR:PRD-001:REGISTRY_ZERO"
|
51
|
-
);
|
52
|
-
return _registry.register(address(this));
|
55
|
+
initializeBundleModule(_keyValueStore);
|
56
|
+
initializeCompensationModule(_keyValueStore);
|
57
|
+
initializeComponentModule(_keyValueStore);
|
58
|
+
initializePolicyModule(_keyValueStore);
|
59
|
+
initializePoolModule(_keyValueStore);
|
60
|
+
initializeRiskModule(_keyValueStore);
|
53
61
|
}
|
54
62
|
|
55
|
-
|
56
|
-
function
|
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
|
-
}
|
63
|
+
function getRegistry() public view override (Registerable, IPolicyModule) returns (IRegistry registry) { return super.getRegistry(); }
|
64
|
+
function getKeyValueStore() public view override (InstanceBase) returns (IKeyValueStore keyValueStore) { return super.getKeyValueStore(); }
|
62
65
|
|
63
|
-
|
64
|
-
function
|
65
|
-
|
66
|
-
}
|
66
|
+
function getComponentOwnerService() external view override (IComponentModule, IInstanceBase) returns(IComponentOwnerService service) { return _componentOwnerService; }
|
67
|
+
function getProductService() external view override (IBundleModule, IPolicyModule, IInstanceBase) returns(IProductService service) { return _productService; }
|
68
|
+
function getPoolService() external view override (IBundleModule, IPoolModule, IInstanceBase) returns(IPoolService service) { return _poolService; }
|
67
69
|
|
68
|
-
|
69
|
-
function getData() external pure override returns (bytes memory data) {
|
70
|
-
return bytes(abi.encode(0));
|
71
|
-
}
|
70
|
+
function getOwner() public view override (IAccessModule, Registerable) returns(address owner) { return super.getOwner(); }
|
72
71
|
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
|
7
|
+
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
8
|
+
|
9
|
+
import {ServiceBase} from "./ServiceBase.sol";
|
10
|
+
|
11
|
+
abstract contract ComponentServiceBase is ServiceBase {
|
12
|
+
|
13
|
+
constructor(
|
14
|
+
address registry,
|
15
|
+
NftId registryNftId
|
16
|
+
)
|
17
|
+
ServiceBase(registry, registryNftId)
|
18
|
+
// solhint-disable-next-line no-empty-blocks
|
19
|
+
{
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
function _getAndVerifyComponentInfoAndInstance(
|
24
|
+
ObjectType objectType
|
25
|
+
)
|
26
|
+
internal
|
27
|
+
view
|
28
|
+
returns(
|
29
|
+
IRegistry.ObjectInfo memory info,
|
30
|
+
IInstance instance
|
31
|
+
)
|
32
|
+
{
|
33
|
+
NftId componentNftId = _registry.getNftId(msg.sender);
|
34
|
+
require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
35
|
+
|
36
|
+
info = _registry.getObjectInfo(componentNftId);
|
37
|
+
require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
|
38
|
+
|
39
|
+
address instanceAddress = _registry.getObjectInfo(info.parentNftId).objectAddress;
|
40
|
+
instance = IInstance(instanceAddress);
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Key32} from "../../types/Key32.sol";
|
5
|
+
import {StateId} from "../../types/StateId.sol";
|
6
|
+
|
7
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
8
|
+
import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
|
9
|
+
import {IProductService} from "../service/IProductService.sol";
|
10
|
+
import {IPoolService} from "../service/IPoolService.sol";
|
11
|
+
|
12
|
+
interface IInstanceBase {
|
13
|
+
function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
|
14
|
+
function updateState(Key32 key, StateId state) external;
|
15
|
+
|
16
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService service);
|
17
|
+
function getProductService() external view returns(IProductService service);
|
18
|
+
function getPoolService() external view returns(IPoolService service);
|
19
|
+
}
|