@etherisc/gif-next 0.0.2-f99f1d2-109 → 0.0.2-fc8b370-882
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +26 -57
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +26 -57
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IProductComponent.sol/IProductComponent.json} +89 -65
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +134 -75
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +72 -113
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +719 -332
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +998 -527
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +133 -132
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{product/ProductService.sol/ProductModule.json → base/IInstanceBase.sol/IInstanceBase.json} +18 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +511 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +326 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +692 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +296 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +296 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +33 -62
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +132 -125
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +132 -125
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +67 -47
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +51 -57
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasuryModule.json +100 -57
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol/TreasuryModule.json +100 -57
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +523 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +147 -30
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +241 -25
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +16 -61
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +16 -61
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +88 -62
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +88 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IPoolComponent.sol +57 -0
- package/contracts/components/{IProduct.sol → IProductComponent.sol} +9 -6
- package/contracts/components/Pool.sol +140 -18
- package/contracts/components/Product.sol +53 -25
- package/contracts/instance/IInstance.sol +38 -11
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +44 -48
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +14 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/{lifecycle → base}/ILifecycle.sol +4 -21
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +80 -0
- package/contracts/instance/base/KeyValueStore.sol +156 -0
- package/contracts/instance/{lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +36 -29
- package/contracts/instance/base/ModuleBase.sol +52 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +136 -0
- package/contracts/instance/module/bundle/IBundle.sol +58 -0
- package/contracts/instance/module/compensation/CompensationModule.sol +8 -0
- package/contracts/instance/module/compensation/ICompensation.sol +10 -0
- package/contracts/instance/module/component/ComponentModule.sol +95 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +76 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/risk/IRisk.sol +10 -0
- package/contracts/instance/module/risk/RiskModule.sol +8 -0
- package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +27 -15
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +43 -59
- package/contracts/instance/service/ComponentOwnerService.sol +170 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IPoolService.sol +30 -0
- package/contracts/instance/service/IProductService.sol +58 -0
- package/contracts/instance/service/PoolService.sol +123 -0
- package/contracts/instance/service/ProductService.sol +354 -0
- package/contracts/registry/ChainNft.sol +61 -37
- package/contracts/registry/IRegistry.sol +24 -34
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +284 -85
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +52 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +89 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +22 -0
- package/contracts/test/TestProduct.sol +44 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Fee.sol +39 -20
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +22 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +22 -14
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +13 -3
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +26 -23
- package/contracts/types/Version.sol +95 -0
- package/package.json +9 -3
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -77
- package/contracts/components/IPool.sol +0 -15
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
@@ -0,0 +1,88 @@
|
|
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 {IRegisterable} from "../shared/IRegisterable.sol";
|
7
|
+
import {Registerable} from "../shared/Registerable.sol";
|
8
|
+
|
9
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
|
12
|
+
import {IInstance} from "../instance/IInstance.sol";
|
13
|
+
import {IComponent, IComponentModule} from "../instance/module/component/IComponent.sol";
|
14
|
+
import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
|
15
|
+
import {IBaseComponent} from "./IBaseComponent.sol";
|
16
|
+
import {NftId} from "../types/NftId.sol";
|
17
|
+
|
18
|
+
abstract contract BaseComponent is
|
19
|
+
Registerable,
|
20
|
+
IBaseComponent
|
21
|
+
{
|
22
|
+
IComponentOwnerService internal _componentOwnerService;
|
23
|
+
|
24
|
+
address internal _deployer;
|
25
|
+
address internal _wallet;
|
26
|
+
IERC20Metadata internal _token;
|
27
|
+
IInstance internal _instance;
|
28
|
+
|
29
|
+
constructor(
|
30
|
+
address registry,
|
31
|
+
NftId instanceNftId,
|
32
|
+
address token
|
33
|
+
)
|
34
|
+
Registerable(registry, instanceNftId)
|
35
|
+
{
|
36
|
+
IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(instanceNftId);
|
37
|
+
_instance = IInstance(instanceInfo.objectAddress);
|
38
|
+
require(
|
39
|
+
_instance.supportsInterface(type(IInstance).interfaceId),
|
40
|
+
""
|
41
|
+
);
|
42
|
+
|
43
|
+
_componentOwnerService = _instance.getComponentOwnerService();
|
44
|
+
_wallet = address(this);
|
45
|
+
_token = IERC20Metadata(token);
|
46
|
+
}
|
47
|
+
|
48
|
+
// from registerable
|
49
|
+
function register() public override(IRegisterable, Registerable) returns (NftId componentId) {
|
50
|
+
require(msg.sender == getOwner(), "");
|
51
|
+
require(
|
52
|
+
address(_registry) != address(0),
|
53
|
+
"ERROR:COB-001:REGISTRY_ZERO"
|
54
|
+
);
|
55
|
+
require(
|
56
|
+
_registry.isRegistered(address(_instance)),
|
57
|
+
"ERROR:COB:INSTANCE_NOT_REGISTERED"
|
58
|
+
);
|
59
|
+
|
60
|
+
componentId = _componentOwnerService.register(this);
|
61
|
+
}
|
62
|
+
|
63
|
+
// from component contract
|
64
|
+
function lock() external onlyOwner override {
|
65
|
+
_componentOwnerService.lock(this);
|
66
|
+
}
|
67
|
+
|
68
|
+
function unlock() external onlyOwner override {
|
69
|
+
_componentOwnerService.unlock(this);
|
70
|
+
}
|
71
|
+
|
72
|
+
function getWallet()
|
73
|
+
external
|
74
|
+
view
|
75
|
+
override
|
76
|
+
returns (address walletAddress)
|
77
|
+
{
|
78
|
+
return _wallet;
|
79
|
+
}
|
80
|
+
|
81
|
+
function getToken() external view override returns (IERC20Metadata token) {
|
82
|
+
return _token;
|
83
|
+
}
|
84
|
+
|
85
|
+
function getInstance() external view override returns (IInstance instance) {
|
86
|
+
return _instance;
|
87
|
+
}
|
88
|
+
}
|
@@ -0,0 +1,19 @@
|
|
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 {IRegisterable} from "../shared/IRegisterable.sol";
|
7
|
+
import {IInstanceLinked} from "../instance/IInstanceLinked.sol";
|
8
|
+
|
9
|
+
interface IBaseComponent is IRegisterable, IInstanceLinked {
|
10
|
+
|
11
|
+
function lock() external;
|
12
|
+
|
13
|
+
function unlock() external;
|
14
|
+
|
15
|
+
function getToken() external view returns (IERC20Metadata token);
|
16
|
+
|
17
|
+
function getWallet() external view returns (address walletAddress);
|
18
|
+
|
19
|
+
}
|
@@ -0,0 +1,57 @@
|
|
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 {UFixed} from "../types/UFixed.sol";
|
7
|
+
import {IBaseComponent} from "./IBaseComponent.sol";
|
8
|
+
|
9
|
+
interface IPoolComponent is IBaseComponent {
|
10
|
+
|
11
|
+
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @dev creates a new bundle for this pool.
|
15
|
+
*/
|
16
|
+
function createBundle(
|
17
|
+
uint256 initialAmount,
|
18
|
+
uint256 lifetime,
|
19
|
+
bytes memory filter
|
20
|
+
) external returns(NftId bundleNftId);
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @dev this is a callback function that is called by the product service when underwriting a policy.
|
24
|
+
* the pool has the option to check the details and object to underwriting by reverting.
|
25
|
+
* the function is only called for "active" pools that ask to be involved/notified
|
26
|
+
* by product related state changes.
|
27
|
+
*/
|
28
|
+
function underwrite(
|
29
|
+
NftId policyNftId,
|
30
|
+
bytes memory policyData,
|
31
|
+
bytes memory bundleFilter,
|
32
|
+
uint256 collateralizationAmount
|
33
|
+
) external;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @dev returns true iff the policy application data in policyData matches
|
37
|
+
* with the bundle filter criteria encoded in bundleFilter.
|
38
|
+
*/
|
39
|
+
function policyMatchesBundle(
|
40
|
+
bytes memory policyData,
|
41
|
+
bytes memory bundleFilter
|
42
|
+
)
|
43
|
+
external
|
44
|
+
view
|
45
|
+
returns (bool isMatching);
|
46
|
+
|
47
|
+
function isVerifying() external view returns (bool verifying);
|
48
|
+
|
49
|
+
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
50
|
+
|
51
|
+
function getStakingFee() external view returns (Fee memory stakingFee);
|
52
|
+
|
53
|
+
function getPerformanceFee()
|
54
|
+
external
|
55
|
+
view
|
56
|
+
returns (Fee memory performanceFee);
|
57
|
+
}
|
@@ -3,14 +3,17 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../types/NftId.sol";
|
5
5
|
import {Fee} from "../types/Fee.sol";
|
6
|
+
import {IBaseComponent} from "./IBaseComponent.sol";
|
6
7
|
|
7
|
-
interface IProductComponent {
|
8
|
-
function
|
8
|
+
interface IProductComponent is IBaseComponent {
|
9
|
+
function setFees(
|
10
|
+
Fee memory policyFee,
|
11
|
+
Fee memory processingFee
|
12
|
+
) external;
|
9
13
|
|
14
|
+
function getPoolNftId() external view returns (NftId poolNftId);
|
15
|
+
|
10
16
|
function getPolicyFee() external view returns (Fee memory policyFee);
|
11
17
|
|
12
|
-
function getProcessingFee()
|
13
|
-
external
|
14
|
-
view
|
15
|
-
returns (Fee memory processingFee);
|
18
|
+
function getProcessingFee() external view returns (Fee memory processingFee);
|
16
19
|
}
|
@@ -2,23 +2,150 @@
|
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
6
|
+
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
5
8
|
import {Fee} from "../types/Fee.sol";
|
6
|
-
import {
|
7
|
-
import {
|
9
|
+
import {UFixed} from "../types/UFixed.sol";
|
10
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
8
12
|
|
9
|
-
contract Pool is
|
10
|
-
|
11
|
-
|
13
|
+
contract Pool is BaseComponent, IPoolComponent {
|
14
|
+
|
15
|
+
bool internal _isVerifying;
|
16
|
+
UFixed internal _collateralizationLevel;
|
17
|
+
|
18
|
+
// may be used to interact with instance by derived contracts
|
19
|
+
IPoolService internal _poolService;
|
20
|
+
|
21
|
+
// only relevant to protect callback functions for "active" pools
|
22
|
+
IProductService private _productService;
|
23
|
+
|
24
|
+
modifier onlyPoolService() {
|
25
|
+
require(
|
26
|
+
msg.sender == address(_poolService),
|
27
|
+
"ERROR:POL-001:NOT_POOL_SERVICE");
|
28
|
+
_;
|
29
|
+
}
|
30
|
+
|
31
|
+
modifier onlyProductService() {
|
32
|
+
require(
|
33
|
+
msg.sender == address(_productService),
|
34
|
+
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
35
|
+
_;
|
36
|
+
}
|
12
37
|
|
13
38
|
constructor(
|
14
39
|
address registry,
|
15
|
-
|
40
|
+
NftId instanceNftId,
|
41
|
+
// TODO refactor into tokenNftId
|
16
42
|
address token,
|
17
|
-
|
18
|
-
|
19
|
-
)
|
20
|
-
|
21
|
-
|
43
|
+
bool verifying,
|
44
|
+
UFixed collateralizationLevel
|
45
|
+
)
|
46
|
+
BaseComponent(registry, instanceNftId, token)
|
47
|
+
{
|
48
|
+
_isVerifying = verifying;
|
49
|
+
// TODO add validation
|
50
|
+
_collateralizationLevel = collateralizationLevel;
|
51
|
+
|
52
|
+
_poolService = _instance.getPoolService();
|
53
|
+
_productService = _instance.getProductService();
|
54
|
+
}
|
55
|
+
|
56
|
+
function createBundle(
|
57
|
+
uint256 initialAmount,
|
58
|
+
uint256 lifetime,
|
59
|
+
bytes memory filter
|
60
|
+
)
|
61
|
+
external
|
62
|
+
virtual override
|
63
|
+
returns(NftId bundleNftId)
|
64
|
+
{
|
65
|
+
address owner = msg.sender;
|
66
|
+
bundleNftId = _poolService.createBundle(
|
67
|
+
owner,
|
68
|
+
initialAmount,
|
69
|
+
lifetime,
|
70
|
+
filter
|
71
|
+
);
|
72
|
+
|
73
|
+
// TODO add logging
|
74
|
+
}
|
75
|
+
|
76
|
+
/**
|
77
|
+
* @dev see {IPool.underwrite}.
|
78
|
+
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
79
|
+
*/
|
80
|
+
function underwrite(
|
81
|
+
NftId policyNftId,
|
82
|
+
bytes memory policyData,
|
83
|
+
bytes memory bundleFilter,
|
84
|
+
uint256 collateralizationAmount
|
85
|
+
)
|
86
|
+
external
|
87
|
+
onlyProductService
|
88
|
+
virtual override
|
89
|
+
{
|
90
|
+
_underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
|
91
|
+
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* @dev see {IPoolComponent.policyMatchesBundle}.
|
95
|
+
* Default implementation always returns true
|
96
|
+
*/
|
97
|
+
function policyMatchesBundle(
|
98
|
+
bytes memory, // policyData
|
99
|
+
bytes memory // bundleFilter
|
100
|
+
)
|
101
|
+
public
|
102
|
+
view
|
103
|
+
virtual override
|
104
|
+
returns (bool isMatching)
|
105
|
+
{
|
106
|
+
return true;
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
function isVerifying() external view override returns (bool verifying) {
|
111
|
+
return _isVerifying;
|
112
|
+
}
|
113
|
+
|
114
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
115
|
+
return _collateralizationLevel;
|
116
|
+
}
|
117
|
+
|
118
|
+
function _underwrite(
|
119
|
+
NftId policyNftId,
|
120
|
+
bytes memory policyData,
|
121
|
+
bytes memory bundleFilter,
|
122
|
+
uint256 collateralizationAmount
|
123
|
+
)
|
124
|
+
internal
|
125
|
+
{
|
126
|
+
require(
|
127
|
+
policyMatchesBundle(policyData, bundleFilter),
|
128
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
129
|
+
);
|
130
|
+
|
131
|
+
emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
|
132
|
+
}
|
133
|
+
|
134
|
+
function _createBundle(
|
135
|
+
address bundleOwner,
|
136
|
+
uint256 amount,
|
137
|
+
uint256 lifetime,
|
138
|
+
bytes calldata filter
|
139
|
+
)
|
140
|
+
internal
|
141
|
+
returns(NftId bundleNftId)
|
142
|
+
{
|
143
|
+
bundleNftId = _poolService.createBundle(
|
144
|
+
bundleOwner,
|
145
|
+
amount,
|
146
|
+
lifetime,
|
147
|
+
filter
|
148
|
+
);
|
22
149
|
}
|
23
150
|
|
24
151
|
// from pool component
|
@@ -28,7 +155,7 @@ contract Pool is Component, IPoolComponent {
|
|
28
155
|
override
|
29
156
|
returns (Fee memory stakingFee)
|
30
157
|
{
|
31
|
-
return
|
158
|
+
return _instance.getPoolSetup(getNftId()).stakingFee;
|
32
159
|
}
|
33
160
|
|
34
161
|
function getPerformanceFee()
|
@@ -37,16 +164,11 @@ contract Pool is Component, IPoolComponent {
|
|
37
164
|
override
|
38
165
|
returns (Fee memory performanceFee)
|
39
166
|
{
|
40
|
-
return
|
167
|
+
return _instance.getPoolSetup(getNftId()).performanceFee;
|
41
168
|
}
|
42
169
|
|
43
170
|
// from registerable
|
44
171
|
function getType() public pure override returns (ObjectType) {
|
45
172
|
return POOL();
|
46
173
|
}
|
47
|
-
|
48
|
-
// from registerable
|
49
|
-
function getData() external view override returns (bytes memory data) {
|
50
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
51
|
-
}
|
52
174
|
}
|
@@ -1,33 +1,27 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IProductService} from "../instance/
|
5
|
-
import {
|
6
|
-
import {IProductComponent} from "./IProduct.sol";
|
4
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
5
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
7
6
|
import {NftId} from "../types/NftId.sol";
|
8
7
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
8
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
9
9
|
import {Fee} from "../types/Fee.sol";
|
10
|
-
import {
|
10
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
11
11
|
|
12
|
-
contract Product is
|
12
|
+
contract Product is BaseComponent, IProductComponent {
|
13
13
|
IProductService private _productService;
|
14
14
|
address private _pool;
|
15
|
-
Fee private _policyFee;
|
16
|
-
Fee private _processingFee;
|
17
15
|
|
18
16
|
constructor(
|
19
17
|
address registry,
|
20
|
-
|
18
|
+
NftId instanceNftid,
|
21
19
|
address token,
|
22
|
-
address pool
|
23
|
-
|
24
|
-
Fee memory processingFee
|
25
|
-
) Component(registry, instance, token) {
|
20
|
+
address pool
|
21
|
+
) BaseComponent(registry, instanceNftid, token) {
|
26
22
|
// TODO add validation
|
27
23
|
_productService = _instance.getProductService();
|
28
24
|
_pool = pool;
|
29
|
-
_policyFee = policyFee;
|
30
|
-
_processingFee = processingFee;
|
31
25
|
}
|
32
26
|
|
33
27
|
function _createApplication(
|
@@ -46,12 +40,39 @@ contract Product is Component, IProductComponent {
|
|
46
40
|
);
|
47
41
|
}
|
48
42
|
|
49
|
-
function _underwrite(
|
50
|
-
|
43
|
+
function _underwrite(
|
44
|
+
NftId policyNftId,
|
45
|
+
bool requirePremiumPayment,
|
46
|
+
Timestamp activateAt
|
47
|
+
)
|
48
|
+
internal
|
49
|
+
{
|
50
|
+
_productService.underwrite(
|
51
|
+
policyNftId,
|
52
|
+
requirePremiumPayment,
|
53
|
+
activateAt);
|
51
54
|
}
|
52
55
|
|
53
|
-
function _collectPremium(
|
54
|
-
|
56
|
+
function _collectPremium(
|
57
|
+
NftId policyNftId,
|
58
|
+
Timestamp activateAt
|
59
|
+
)
|
60
|
+
internal
|
61
|
+
{
|
62
|
+
_productService.collectPremium(
|
63
|
+
policyNftId,
|
64
|
+
activateAt);
|
65
|
+
}
|
66
|
+
|
67
|
+
function _activate(
|
68
|
+
NftId policyNftId,
|
69
|
+
Timestamp activateAt
|
70
|
+
)
|
71
|
+
internal
|
72
|
+
{
|
73
|
+
_productService.activate(
|
74
|
+
policyNftId,
|
75
|
+
activateAt);
|
55
76
|
}
|
56
77
|
|
57
78
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
@@ -59,13 +80,25 @@ contract Product is Component, IProductComponent {
|
|
59
80
|
}
|
60
81
|
|
61
82
|
// from product component
|
83
|
+
function setFees(
|
84
|
+
Fee memory policyFee,
|
85
|
+
Fee memory processingFee
|
86
|
+
)
|
87
|
+
external
|
88
|
+
onlyOwner
|
89
|
+
override
|
90
|
+
{
|
91
|
+
_productService.setFees(policyFee, processingFee);
|
92
|
+
}
|
93
|
+
|
94
|
+
|
62
95
|
function getPolicyFee()
|
63
96
|
external
|
64
97
|
view
|
65
98
|
override
|
66
99
|
returns (Fee memory policyFee)
|
67
100
|
{
|
68
|
-
return
|
101
|
+
return _instance.getProductSetup(getNftId()).policyFee;
|
69
102
|
}
|
70
103
|
|
71
104
|
function getProcessingFee()
|
@@ -74,16 +107,11 @@ contract Product is Component, IProductComponent {
|
|
74
107
|
override
|
75
108
|
returns (Fee memory processingFee)
|
76
109
|
{
|
77
|
-
return
|
110
|
+
return _instance.getProductSetup(getNftId()).processingFee;
|
78
111
|
}
|
79
112
|
|
80
113
|
// from registerable
|
81
114
|
function getType() public pure override returns (ObjectType) {
|
82
115
|
return PRODUCT();
|
83
116
|
}
|
84
|
-
|
85
|
-
// from registerable
|
86
|
-
function getData() external view override returns (bytes memory data) {
|
87
|
-
return bytes(abi.encode(getInstance().getNftId()));
|
88
|
-
}
|
89
117
|
}
|
@@ -1,25 +1,52 @@
|
|
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
|
+
IBundleModule,
|
20
37
|
IComponentModule,
|
21
|
-
|
22
|
-
|
38
|
+
ITreasuryModule,
|
39
|
+
ICompensationModule,
|
40
|
+
IInstanceBase
|
23
41
|
{
|
42
|
+
function getRegistry() external view override (IBundleModule, IComponentModule, IPolicyModule, IRegisterable) returns (IRegistry registry);
|
43
|
+
function getOwner() external view override (IOwnable, IAccessModule) returns(address owner);
|
44
|
+
|
45
|
+
function hasRole(RoleId role, address member) external view override (IAccessModule, IComponentModule) returns (bool hasRole);
|
46
|
+
|
47
|
+
function getKeyValueStore() external view override (IBundleModule, IInstanceBase) returns (IKeyValueStore keyValueStore);
|
48
|
+
function getComponentOwnerService() external view override (IInstanceBase, IComponentModule) returns(IComponentOwnerService);
|
49
|
+
function getProductService() external view override (IInstanceBase, IBundleModule, IPolicyModule) returns(IProductService);
|
50
|
+
function getPoolService() external view override (IInstanceBase, IBundleModule, IPoolModule) returns(IPoolService);
|
24
51
|
|
25
52
|
}
|