@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
@@ -0,0 +1,27 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../../types/NftId.sol";
|
5
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
6
|
+
import {StateId} from "../../../types/StateId.sol";
|
7
|
+
|
8
|
+
interface IRisk {
|
9
|
+
struct RiskInfo {
|
10
|
+
NftId productNftId;
|
11
|
+
bytes data;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
interface IRiskModule is IRisk {
|
16
|
+
function createRisk(
|
17
|
+
RiskId riskId,
|
18
|
+
NftId productNftId,
|
19
|
+
bytes memory data
|
20
|
+
) external;
|
21
|
+
|
22
|
+
function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
|
23
|
+
function updateRiskState(RiskId riskId, StateId state) external;
|
24
|
+
|
25
|
+
function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
|
26
|
+
function getRiskState(RiskId riskId) external view returns (StateId state);
|
27
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../../types/NftId.sol";
|
5
|
+
import {RISK} from "../../../types/ObjectType.sol";
|
6
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
7
|
+
import {StateId} from "../../../types/StateId.sol";
|
8
|
+
|
9
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
10
|
+
import {IRiskModule} from "./IRisk.sol";
|
11
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
12
|
+
|
13
|
+
contract RiskModule is
|
14
|
+
ModuleBase,
|
15
|
+
IRiskModule
|
16
|
+
{
|
17
|
+
function initializeRiskModule(IKeyValueStore keyValueStore) internal {
|
18
|
+
_initialize(keyValueStore);
|
19
|
+
}
|
20
|
+
|
21
|
+
function createRisk(
|
22
|
+
RiskId riskId,
|
23
|
+
NftId productNftId,
|
24
|
+
bytes memory data
|
25
|
+
) external override {
|
26
|
+
RiskInfo memory info = RiskInfo(
|
27
|
+
productNftId,
|
28
|
+
data
|
29
|
+
);
|
30
|
+
|
31
|
+
_create(RISK(), riskId.toKey32(), abi.encode(info));
|
32
|
+
}
|
33
|
+
|
34
|
+
function setRiskInfo(
|
35
|
+
RiskId riskId,
|
36
|
+
RiskInfo memory info
|
37
|
+
)
|
38
|
+
external
|
39
|
+
override
|
40
|
+
{
|
41
|
+
|
42
|
+
}
|
43
|
+
|
44
|
+
function updateRiskState(
|
45
|
+
RiskId riskId,
|
46
|
+
StateId state
|
47
|
+
)
|
48
|
+
external
|
49
|
+
override
|
50
|
+
{
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
function getRiskInfo(RiskId riskId)
|
55
|
+
external
|
56
|
+
view
|
57
|
+
override
|
58
|
+
returns (RiskInfo memory info)
|
59
|
+
{
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
function getRiskState(RiskId riskId)
|
64
|
+
external
|
65
|
+
view
|
66
|
+
returns (StateId state)
|
67
|
+
{
|
68
|
+
|
69
|
+
}
|
70
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
import {UFixed} from "../../../types/UFixed.sol";
|
8
|
+
import {Fee} from "../../../types/Fee.sol";
|
9
|
+
|
10
|
+
import {TokenHandler} from "./TokenHandler.sol";
|
11
|
+
|
12
|
+
interface ITreasury {
|
13
|
+
// TODO add events
|
14
|
+
// TODO add errors
|
15
|
+
|
16
|
+
// treasury info is linked to product nft id
|
17
|
+
struct TreasuryInfo {
|
18
|
+
NftId compensationNftId;
|
19
|
+
NftId poolNftId;
|
20
|
+
IERC20Metadata token;
|
21
|
+
Fee commissionFee;
|
22
|
+
Fee policyFee;
|
23
|
+
Fee processingFee;
|
24
|
+
Fee stakingFee;
|
25
|
+
Fee performanceFee;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
interface ITreasuryModule is ITreasury {
|
30
|
+
|
31
|
+
function registerProductSetup(
|
32
|
+
NftId productNftId,
|
33
|
+
NftId distributorNftId,
|
34
|
+
NftId poolNftId,
|
35
|
+
IERC20Metadata token,
|
36
|
+
Fee memory policyFee,
|
37
|
+
Fee memory processingFee,
|
38
|
+
Fee memory stakingFee,
|
39
|
+
Fee memory performanceFee
|
40
|
+
) external;
|
41
|
+
|
42
|
+
function setTreasuryInfo(
|
43
|
+
NftId productNftId,
|
44
|
+
TreasuryInfo memory info
|
45
|
+
) external;
|
46
|
+
|
47
|
+
function getTreasuryInfo(
|
48
|
+
NftId productNftId
|
49
|
+
) external view returns (TreasuryInfo memory info);
|
50
|
+
|
51
|
+
// function setProductFees(
|
52
|
+
// NftId productNftId,
|
53
|
+
// Fee memory policyFee,
|
54
|
+
// Fee memory processingFee
|
55
|
+
// ) external;
|
56
|
+
|
57
|
+
// function setCompensationFees(
|
58
|
+
// NftId poolNftId,
|
59
|
+
// Fee memory distributionFee
|
60
|
+
// ) external;
|
61
|
+
|
62
|
+
// function setPoolFees(
|
63
|
+
// NftId poolNftId,
|
64
|
+
// Fee memory stakingFee,
|
65
|
+
// Fee memory performanceFee
|
66
|
+
// ) external;
|
67
|
+
|
68
|
+
function getProductNftId(
|
69
|
+
NftId componentNftId
|
70
|
+
) external view returns (NftId productNftId);
|
71
|
+
|
72
|
+
function getTokenHandler(
|
73
|
+
NftId componentNftId
|
74
|
+
) external view returns (TokenHandler tokenHandler);
|
75
|
+
|
76
|
+
function calculateFeeAmount(
|
77
|
+
uint256 amount,
|
78
|
+
Fee memory fee
|
79
|
+
) external pure returns (uint256 feeAmount, uint256 netAmount);
|
80
|
+
|
81
|
+
function getFee(
|
82
|
+
UFixed fractionalFee,
|
83
|
+
uint256 fixedFee
|
84
|
+
) external pure returns (Fee memory fee);
|
85
|
+
|
86
|
+
function getZeroFee() external view returns (Fee memory fee);
|
87
|
+
|
88
|
+
function getUFixed(
|
89
|
+
uint256 a
|
90
|
+
) external pure returns (UFixed);
|
91
|
+
|
92
|
+
function getUFixed(
|
93
|
+
uint256 a,
|
94
|
+
int8 exp
|
95
|
+
) external pure returns (UFixed);
|
96
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
|
8
|
+
contract TokenHandler {
|
9
|
+
NftId private _productNftId;
|
10
|
+
IERC20Metadata private _token;
|
11
|
+
|
12
|
+
constructor(
|
13
|
+
NftId productNftId,
|
14
|
+
address token
|
15
|
+
)
|
16
|
+
{
|
17
|
+
_productNftId = productNftId;
|
18
|
+
_token = IERC20Metadata(token);
|
19
|
+
}
|
20
|
+
|
21
|
+
// TODO add logging
|
22
|
+
function transfer(
|
23
|
+
address from,
|
24
|
+
address to,
|
25
|
+
uint256 amount
|
26
|
+
)
|
27
|
+
external // TODO add authz (only treasury/instance/product/pool/ service)
|
28
|
+
{
|
29
|
+
// TODO switch to oz safeTransferFrom
|
30
|
+
_token.transferFrom(from, to, amount);
|
31
|
+
}
|
32
|
+
|
33
|
+
function getProductNftId()
|
34
|
+
external
|
35
|
+
view
|
36
|
+
returns(NftId)
|
37
|
+
{
|
38
|
+
return _productNftId;
|
39
|
+
}
|
40
|
+
|
41
|
+
function getToken()
|
42
|
+
external
|
43
|
+
view
|
44
|
+
returns(IERC20Metadata)
|
45
|
+
{
|
46
|
+
return _token;
|
47
|
+
}
|
48
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
import {TREASURY} from "../../../types/ObjectType.sol";
|
8
|
+
import {Fee, FeeLib} from "../../../types/Fee.sol";
|
9
|
+
import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
|
10
|
+
import {TokenHandler} from "./TokenHandler.sol";
|
11
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
12
|
+
import {ITreasuryModule} from "./ITreasury.sol";
|
13
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
14
|
+
|
15
|
+
abstract contract TreasuryModule is
|
16
|
+
ModuleBase,
|
17
|
+
ITreasuryModule
|
18
|
+
{
|
19
|
+
// relation of distributor and pool nft map to product nft
|
20
|
+
mapping(NftId componentNftId => NftId productNftId) internal _productNft;
|
21
|
+
// relation of component nft to token hanlder
|
22
|
+
mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
|
23
|
+
Fee internal _zeroFee;
|
24
|
+
|
25
|
+
|
26
|
+
function initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
|
27
|
+
_initialize(keyValueStore);
|
28
|
+
_zeroFee = FeeLib.zeroFee();
|
29
|
+
}
|
30
|
+
|
31
|
+
function registerProductSetup(
|
32
|
+
NftId productNftId,
|
33
|
+
NftId compensationNftId,
|
34
|
+
NftId poolNftId,
|
35
|
+
IERC20Metadata token,
|
36
|
+
Fee memory policyFee,
|
37
|
+
Fee memory processingFee,
|
38
|
+
Fee memory stakingFee,
|
39
|
+
Fee memory performanceFee
|
40
|
+
) external override // TODO add authz (only component module)
|
41
|
+
{
|
42
|
+
require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-010:TOKEN_HANDLER_ALREADY_REGISTERED");
|
43
|
+
require(_productNft[compensationNftId].eqz(), "ERROR:TRS-011:COMPENSATION_ALREADY_LINKED");
|
44
|
+
require(_productNft[poolNftId].eqz(), "ERROR:TRS-012:POOL_ALREADY_LINKED");
|
45
|
+
|
46
|
+
// deploy product specific handler contract
|
47
|
+
TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
|
48
|
+
_tokenHandler[productNftId] = tokenHandler;
|
49
|
+
_productNft[compensationNftId] = productNftId;
|
50
|
+
_productNft[poolNftId] = productNftId;
|
51
|
+
|
52
|
+
TreasuryInfo memory info = TreasuryInfo(
|
53
|
+
compensationNftId,
|
54
|
+
poolNftId,
|
55
|
+
token,
|
56
|
+
_zeroFee,
|
57
|
+
policyFee,
|
58
|
+
processingFee,
|
59
|
+
stakingFee,
|
60
|
+
performanceFee
|
61
|
+
);
|
62
|
+
|
63
|
+
_create(TREASURY(), productNftId, abi.encode(info));
|
64
|
+
}
|
65
|
+
|
66
|
+
function setTreasuryInfo(
|
67
|
+
NftId productNftId,
|
68
|
+
TreasuryInfo memory info
|
69
|
+
)
|
70
|
+
external
|
71
|
+
// TODO add authz (only component module)
|
72
|
+
override
|
73
|
+
{
|
74
|
+
_updateData(TREASURY(), productNftId, abi.encode(info));
|
75
|
+
}
|
76
|
+
|
77
|
+
// function setProductFees(
|
78
|
+
// NftId productNftId,
|
79
|
+
// Fee memory policyFee,
|
80
|
+
// Fee memory processingFee
|
81
|
+
// ) external override // TODO add authz (only component owner service)
|
82
|
+
// {
|
83
|
+
// TreasuryInfo memory info = getTreasuryInfo(productNftId);
|
84
|
+
// require(address(info.token) != address(0), "ERROR:TRS-020:NOT_FOUND");
|
85
|
+
|
86
|
+
// info.policyFee = policyFee;
|
87
|
+
// info.processingFee = processingFee;
|
88
|
+
|
89
|
+
// _updateData(TREASURY(), productNftId, abi.encode(info));
|
90
|
+
// }
|
91
|
+
|
92
|
+
// function setCompensationFees(
|
93
|
+
// NftId compensationNftId,
|
94
|
+
// Fee memory distributionFee
|
95
|
+
// ) external override // TODO add authz (only component owner service)
|
96
|
+
// {
|
97
|
+
// NftId productNftId = _productNft[compensationNftId];
|
98
|
+
// TreasuryInfo memory info = getTreasuryInfo(productNftId);
|
99
|
+
// require(address(info.token) != address(0), "ERROR:TRS-030:NOT_FOUND");
|
100
|
+
|
101
|
+
// info.commissionFee = distributionFee;
|
102
|
+
|
103
|
+
// _updateData(TREASURY(), productNftId, abi.encode(info));
|
104
|
+
// }
|
105
|
+
|
106
|
+
// function setPoolFees(
|
107
|
+
// NftId poolNftId,
|
108
|
+
// Fee memory stakingFee,
|
109
|
+
// Fee memory performanceFee
|
110
|
+
// ) external override // TODO add authz (only component owner service)
|
111
|
+
// {
|
112
|
+
// NftId productNftId = _productNft[poolNftId];
|
113
|
+
// TreasuryInfo memory info = getTreasuryInfo(productNftId);
|
114
|
+
// require(address(info.token) != address(0), "ERROR:TRS-040:NOT_FOUND");
|
115
|
+
|
116
|
+
// info.stakingFee = stakingFee;
|
117
|
+
// info.performanceFee = performanceFee;
|
118
|
+
|
119
|
+
// _updateData(TREASURY(), productNftId, abi.encode(info));
|
120
|
+
// }
|
121
|
+
|
122
|
+
function getProductNftId(
|
123
|
+
NftId componentNftId
|
124
|
+
) external view returns (NftId productNftId) {
|
125
|
+
return _productNft[componentNftId];
|
126
|
+
}
|
127
|
+
|
128
|
+
function getTokenHandler(
|
129
|
+
NftId componentNftId
|
130
|
+
) external view override returns (TokenHandler tokenHandler) {
|
131
|
+
return _tokenHandler[componentNftId];
|
132
|
+
}
|
133
|
+
|
134
|
+
function getTreasuryInfo(
|
135
|
+
NftId productNftId
|
136
|
+
) public view override returns (TreasuryInfo memory info) {
|
137
|
+
return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
|
138
|
+
}
|
139
|
+
|
140
|
+
function calculateFeeAmount(
|
141
|
+
uint256 amount,
|
142
|
+
Fee memory fee
|
143
|
+
) public pure override returns (uint256 feeAmount, uint256 netAmount) {
|
144
|
+
return FeeLib.calculateFee(amount, fee);
|
145
|
+
}
|
146
|
+
|
147
|
+
function getFee(
|
148
|
+
UFixed fractionalFee,
|
149
|
+
uint256 fixedFee
|
150
|
+
) external pure override returns (Fee memory fee) {
|
151
|
+
return FeeLib.toFee(fractionalFee, fixedFee);
|
152
|
+
}
|
153
|
+
|
154
|
+
function getZeroFee() external view override returns (Fee memory fee) {
|
155
|
+
return _zeroFee;
|
156
|
+
}
|
157
|
+
|
158
|
+
function getUFixed(
|
159
|
+
uint256 a
|
160
|
+
) external pure override returns (UFixed) {
|
161
|
+
return UFixedMathLib.toUFixed(a);
|
162
|
+
}
|
163
|
+
|
164
|
+
function getUFixed(
|
165
|
+
uint256 a,
|
166
|
+
int8 exp
|
167
|
+
) external pure returns (UFixed)
|
168
|
+
{
|
169
|
+
return UFixedMathLib.toUFixed(a, exp);
|
170
|
+
}
|
171
|
+
}
|
@@ -0,0 +1,155 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
7
|
+
import {IInstance} from "../IInstance.sol";
|
8
|
+
|
9
|
+
import {ITreasuryModule} from "../module/treasury/ITreasury.sol";
|
10
|
+
import {TreasuryModule} from "../module/treasury/TreasuryModule.sol";
|
11
|
+
import {IComponent, IComponentModule} from "../module/component/IComponent.sol";
|
12
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
13
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
14
|
+
import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
|
15
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
16
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
17
|
+
|
18
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
|
19
|
+
import {ObjectType, COMPONENT, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
|
20
|
+
import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
|
21
|
+
import {Key32} from "../../types/Key32.sol";
|
22
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
23
|
+
import {Fee} from "../../types/Fee.sol";
|
24
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
25
|
+
|
26
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
27
|
+
import {ServiceBase} from "../base/ServiceBase.sol";
|
28
|
+
import {IComponentOwnerService} from "./IComponentOwnerService.sol";
|
29
|
+
|
30
|
+
contract ComponentOwnerService is
|
31
|
+
ServiceBase,
|
32
|
+
IComponentOwnerService
|
33
|
+
{
|
34
|
+
using NftIdLib for NftId;
|
35
|
+
|
36
|
+
string public constant NAME = "ComponentOwnerService";
|
37
|
+
|
38
|
+
modifier onlyRegisteredComponent(IBaseComponent component) {
|
39
|
+
NftId nftId = _registry.getNftId(address(component));
|
40
|
+
require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
|
41
|
+
_;
|
42
|
+
}
|
43
|
+
|
44
|
+
constructor(
|
45
|
+
address registry,
|
46
|
+
NftId registryNftId
|
47
|
+
) ServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
|
48
|
+
{
|
49
|
+
|
50
|
+
}
|
51
|
+
|
52
|
+
function getVersion()
|
53
|
+
public
|
54
|
+
pure
|
55
|
+
virtual override (IVersionable, Versionable)
|
56
|
+
returns(Version)
|
57
|
+
{
|
58
|
+
return VersionLib.toVersion(3,0,0);
|
59
|
+
}
|
60
|
+
|
61
|
+
function getName() external pure override returns(string memory name) {
|
62
|
+
return NAME;
|
63
|
+
}
|
64
|
+
|
65
|
+
function getRoleForType(
|
66
|
+
ObjectType cType
|
67
|
+
) public pure override returns (RoleId role) {
|
68
|
+
if (cType == PRODUCT()) {
|
69
|
+
return PRODUCT_OWNER_ROLE();
|
70
|
+
}
|
71
|
+
if (cType == POOL()) {
|
72
|
+
return POOL_OWNER_ROLE();
|
73
|
+
}
|
74
|
+
if (cType == ORACLE()) {
|
75
|
+
return ORACLE_OWNER_ROLE();
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
function register(
|
80
|
+
IBaseComponent component
|
81
|
+
) external override returns (NftId nftId) {
|
82
|
+
address initialOwner = component.getOwner();
|
83
|
+
require(
|
84
|
+
msg.sender == address(component),
|
85
|
+
"ERROR:COS-003:NOT_COMPONENT"
|
86
|
+
);
|
87
|
+
|
88
|
+
IInstance instance = component.getInstance();
|
89
|
+
ObjectType objectType = component.getType();
|
90
|
+
RoleId typeRole = getRoleForType(objectType);
|
91
|
+
require(
|
92
|
+
instance.hasRole(typeRole, initialOwner),
|
93
|
+
"ERROR:CMP-004:TYPE_ROLE_MISSING"
|
94
|
+
);
|
95
|
+
|
96
|
+
nftId = _registry.register(address(component));
|
97
|
+
IERC20Metadata token = component.getToken();
|
98
|
+
|
99
|
+
instance.registerComponent(
|
100
|
+
nftId,
|
101
|
+
token,
|
102
|
+
component.getWallet());
|
103
|
+
|
104
|
+
// component type specific registration actions
|
105
|
+
if (component.getType() == PRODUCT()) {
|
106
|
+
IProductComponent product = IProductComponent(address(component));
|
107
|
+
NftId poolNftId = product.getPoolNftId();
|
108
|
+
require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
|
109
|
+
IPoolComponent pool = IPoolComponent(_registry.getObjectInfo(poolNftId).objectAddress);
|
110
|
+
|
111
|
+
// register with tresury
|
112
|
+
// implement and add validation
|
113
|
+
NftId distributorNftId = zeroNftId();
|
114
|
+
instance.registerProductSetup(
|
115
|
+
nftId,
|
116
|
+
distributorNftId,
|
117
|
+
poolNftId,
|
118
|
+
token,
|
119
|
+
product.getPolicyFee(),
|
120
|
+
product.getProcessingFee(),
|
121
|
+
pool.getStakingFee(),
|
122
|
+
pool.getPerformanceFee()
|
123
|
+
);
|
124
|
+
} else if (component.getType() == POOL()) {
|
125
|
+
IPoolComponent pool = IPoolComponent(address(component));
|
126
|
+
|
127
|
+
// register with pool
|
128
|
+
instance.registerPool(
|
129
|
+
nftId,
|
130
|
+
pool.isVerifying(),
|
131
|
+
pool.getCollateralizationLevel());
|
132
|
+
}
|
133
|
+
// TODO add compensation
|
134
|
+
}
|
135
|
+
|
136
|
+
function lock(
|
137
|
+
IBaseComponent component
|
138
|
+
) external override onlyRegisteredComponent(component) {
|
139
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
140
|
+
IInstance instance = component.getInstance();
|
141
|
+
NftId nftId = component.getNftId();
|
142
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
143
|
+
instance.updateState(key, PAUSED());
|
144
|
+
}
|
145
|
+
|
146
|
+
function unlock(
|
147
|
+
IBaseComponent component
|
148
|
+
) external override onlyRegisteredComponent(component) {
|
149
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
150
|
+
IInstance instance = component.getInstance();
|
151
|
+
NftId nftId = component.getNftId();
|
152
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
153
|
+
instance.updateState(key, ACTIVE());
|
154
|
+
}
|
155
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
6
|
+
import {RoleId} from "../../types/RoleId.sol";
|
7
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
|
+
import {IService} from "../base/IService.sol";
|
9
|
+
|
10
|
+
// TODO rename to registry service
|
11
|
+
interface IComponentOwnerService is IService {
|
12
|
+
|
13
|
+
function register(IBaseComponent component) external returns(NftId componentNftId);
|
14
|
+
|
15
|
+
// TODO move to product/pool services
|
16
|
+
function lock(IBaseComponent component) external;
|
17
|
+
|
18
|
+
// TODO move to product/pool services
|
19
|
+
function unlock(IBaseComponent component) external;
|
20
|
+
|
21
|
+
function getRoleForType(ObjectType cType) external pure returns (RoleId role);
|
22
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {Fee} from "../../types/Fee.sol";
|
6
|
+
import {IService} from "../base/IService.sol";
|
7
|
+
|
8
|
+
interface IPoolService is IService {
|
9
|
+
function setFees(
|
10
|
+
Fee memory stakingFee,
|
11
|
+
Fee memory performanceFee
|
12
|
+
) external;
|
13
|
+
|
14
|
+
function createBundle(
|
15
|
+
address owner,
|
16
|
+
uint256 amount,
|
17
|
+
uint256 lifetime,
|
18
|
+
bytes calldata filter
|
19
|
+
) external returns(NftId bundleNftId);
|
20
|
+
|
21
|
+
// function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
22
|
+
|
23
|
+
// function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
24
|
+
|
25
|
+
// function lockBundle(NftId bundleNftId) external;
|
26
|
+
|
27
|
+
// function unlockBundle(NftId bundleNftId) external;
|
28
|
+
|
29
|
+
// function closeBundle(NftId bundleNftId) external;
|
30
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRisk} from "../module/risk/IRisk.sol";
|
5
|
+
import {IService} from "../base/IService.sol";
|
6
|
+
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {RiskId} from "../../types/RiskId.sol";
|
9
|
+
import {StateId} from "../../types/StateId.sol";
|
10
|
+
import {Timestamp} from "../../types/Timestamp.sol";
|
11
|
+
import {UFixed} from "../../types/UFixed.sol";
|
12
|
+
import {Fee} from "../../types/Fee.sol";
|
13
|
+
|
14
|
+
interface IProductService is IService {
|
15
|
+
function setFees(
|
16
|
+
Fee memory policyFee,
|
17
|
+
Fee memory processingFee
|
18
|
+
) external;
|
19
|
+
|
20
|
+
function createRisk(
|
21
|
+
RiskId riskId,
|
22
|
+
bytes memory data
|
23
|
+
) external;
|
24
|
+
|
25
|
+
function setRiskInfo(
|
26
|
+
RiskId riskId,
|
27
|
+
IRisk.RiskInfo memory data
|
28
|
+
) external;
|
29
|
+
|
30
|
+
function updateRiskState(
|
31
|
+
RiskId riskId,
|
32
|
+
StateId state
|
33
|
+
) external;
|
34
|
+
|
35
|
+
function createApplication(
|
36
|
+
address applicationOwner,
|
37
|
+
RiskId riskId,
|
38
|
+
uint256 sumInsuredAmount,
|
39
|
+
uint256 premiumAmount,
|
40
|
+
uint256 lifetime,
|
41
|
+
NftId bundleNftId
|
42
|
+
) external returns (NftId nftId);
|
43
|
+
|
44
|
+
// function revoke(unit256 nftId) external;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @dev underwrites the policy represented by {policyNftId}.
|
48
|
+
* optionally collects premiums and activates the policy.
|
49
|
+
* - premium payment is only attempted if requirePremiumPayment is set to true
|
50
|
+
* - activation is only done if activateAt is a non-zero timestamp
|
51
|
+
*/
|
52
|
+
function underwrite(
|
53
|
+
NftId policyNftId,
|
54
|
+
bool requirePremiumPayment,
|
55
|
+
Timestamp activateAt
|
56
|
+
) external;
|
57
|
+
|
58
|
+
// function decline(uint256 nftId) external;
|
59
|
+
// function expire(uint256 nftId) external;
|
60
|
+
|
61
|
+
function collectPremium(NftId nftId, Timestamp activateAt) external;
|
62
|
+
|
63
|
+
function activate(NftId nftId, Timestamp activateAt) external;
|
64
|
+
|
65
|
+
|
66
|
+
function close(NftId nftId) external;
|
67
|
+
|
68
|
+
// function createClaim(uint256 nftId, uint256 claimAmount) external;
|
69
|
+
// function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
|
70
|
+
// function declineClaim(uint256 nftId, uint256 claimId) external;
|
71
|
+
// function closeClaim(uint256 nftId, uint256 claimId) external;
|
72
|
+
|
73
|
+
function calculateRequiredCollateral(
|
74
|
+
UFixed collateralizationLevel,
|
75
|
+
uint256 sumInsuredAmount
|
76
|
+
) external pure returns(uint256 collateralAmount);
|
77
|
+
|
78
|
+
}
|