@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
@@ -1,50 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {IInstance} from "../IInstance.sol";
|
6
|
-
import {IProductService} from "../product/IProductService.sol";
|
7
|
-
import {NftId} from "../../types/NftId.sol";
|
8
|
-
import {StateId} from "../../types/StateId.sol";
|
9
|
-
|
10
|
-
// TODO check if there is value to introuce IContract and let IPolicy derive from IContract
|
11
|
-
interface IPolicy {
|
12
|
-
struct PolicyInfo {
|
13
|
-
NftId nftId;
|
14
|
-
StateId state; // applied, withdrawn, rejected, active, closed
|
15
|
-
// TODO add beneficiary address
|
16
|
-
uint256 sumInsuredAmount;
|
17
|
-
uint256 premiumAmount;
|
18
|
-
uint256 premiumPaidAmount;
|
19
|
-
uint256 lifetime; // activatedAt + lifetime >= expiredAt
|
20
|
-
uint256 createdAt;
|
21
|
-
uint256 updatedAt;
|
22
|
-
uint256 activatedAt; // time of underwriting
|
23
|
-
uint256 expiredAt; // no new claims
|
24
|
-
uint256 closedAt; // no locked capital
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
interface IPolicyModule is IOwnable, IRegistryLinked, IPolicy {
|
29
|
-
function createApplication(
|
30
|
-
IRegistry.RegistryInfo memory productInfo,
|
31
|
-
address applicationOwner,
|
32
|
-
uint256 sumInsuredAmount,
|
33
|
-
uint256 premiumAmount,
|
34
|
-
uint256 lifetime,
|
35
|
-
NftId bundleNftId
|
36
|
-
) external returns (NftId nftId);
|
37
|
-
|
38
|
-
// process full premium
|
39
|
-
function processPremium(NftId nftId) external;
|
40
|
-
|
41
|
-
function activate(NftId nftId) external;
|
42
|
-
|
43
|
-
function getBundleNftForPolicy(
|
44
|
-
NftId nftId
|
45
|
-
) external view returns (NftId bundleNft);
|
46
|
-
|
47
|
-
function getPolicyInfo(
|
48
|
-
NftId nftId
|
49
|
-
) external view returns (PolicyInfo memory info);
|
50
|
-
}
|
@@ -1,114 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
// import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
|
5
|
-
import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
6
|
-
|
7
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
8
|
-
import {IProductService} from "../product/IProductService.sol";
|
9
|
-
import {IPolicy, IPolicyModule} from "./IPolicy.sol";
|
10
|
-
import {ObjectType, POLICY} from "../../types/ObjectType.sol";
|
11
|
-
import {ACTIVE} from "../../types/StateId.sol";
|
12
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
13
|
-
|
14
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
15
|
-
|
16
|
-
abstract contract PolicyModule is IRegistryLinked, IPolicyModule {
|
17
|
-
using NftIdLib for NftId;
|
18
|
-
|
19
|
-
mapping(NftId nftId => PolicyInfo info) private _policyInfo;
|
20
|
-
mapping(NftId nftId => NftId bundleNftId) private _bundleForPolicy;
|
21
|
-
|
22
|
-
LifecycleModule private _lifecycleModule;
|
23
|
-
IProductService private _productService;
|
24
|
-
|
25
|
-
// TODO find a better place to avoid dupliation
|
26
|
-
modifier onlyProductService2() {
|
27
|
-
require(
|
28
|
-
address(_productService) == msg.sender,
|
29
|
-
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
30
|
-
);
|
31
|
-
_;
|
32
|
-
}
|
33
|
-
|
34
|
-
constructor(address productService) {
|
35
|
-
_lifecycleModule = LifecycleModule(address(this));
|
36
|
-
_productService = IProductService(productService);
|
37
|
-
}
|
38
|
-
|
39
|
-
function createApplication(
|
40
|
-
IRegistry.RegistryInfo memory productInfo,
|
41
|
-
address applicationOwner,
|
42
|
-
uint256 sumInsuredAmount,
|
43
|
-
uint256 premiumAmount,
|
44
|
-
uint256 lifetime,
|
45
|
-
NftId bundleNftId
|
46
|
-
) external override onlyProductService2 returns (NftId nftId) {
|
47
|
-
// TODO add parameter validation
|
48
|
-
if (bundleNftId.gtz()) {
|
49
|
-
// IRegistry.RegistryInfo memory bundleInfo = this
|
50
|
-
// .getRegistry()
|
51
|
-
// .getInfo(bundleNftId);
|
52
|
-
// IRegistry.RegistryInfo memory poolInfo = this.getRegistry().getInfo(bundleInfo.parentNftId);
|
53
|
-
}
|
54
|
-
|
55
|
-
nftId = this.getRegistry().registerObjectForInstance(
|
56
|
-
productInfo.nftId,
|
57
|
-
POLICY(),
|
58
|
-
applicationOwner
|
59
|
-
);
|
60
|
-
|
61
|
-
_policyInfo[nftId] = PolicyInfo(
|
62
|
-
nftId,
|
63
|
-
_lifecycleModule.getInitialState(POLICY()),
|
64
|
-
sumInsuredAmount,
|
65
|
-
premiumAmount,
|
66
|
-
0, // premium paid amount
|
67
|
-
lifetime,
|
68
|
-
// solhint-disable-next-line not-rely-on-time
|
69
|
-
block.timestamp, // createdAt
|
70
|
-
// solhint-disable-next-line not-rely-on-time
|
71
|
-
block.timestamp, // updatedAt
|
72
|
-
0, // activatedAt
|
73
|
-
0, // expiredAt
|
74
|
-
0 // closedAt
|
75
|
-
);
|
76
|
-
|
77
|
-
_bundleForPolicy[nftId] = bundleNftId;
|
78
|
-
|
79
|
-
// add logging
|
80
|
-
}
|
81
|
-
|
82
|
-
function processPremium(NftId nftId) external override onlyProductService2 {
|
83
|
-
PolicyInfo storage info = _policyInfo[nftId];
|
84
|
-
info.premiumPaidAmount = info.premiumAmount;
|
85
|
-
// solhint-disable-next-line not-rely-on-time
|
86
|
-
info.updatedAt = block.timestamp;
|
87
|
-
}
|
88
|
-
|
89
|
-
function activate(NftId nftId) external override onlyProductService2 {
|
90
|
-
PolicyInfo storage info = _policyInfo[nftId];
|
91
|
-
// solhint-disable-next-line not-rely-on-time
|
92
|
-
info.activatedAt = block.timestamp;
|
93
|
-
// solhint-disable-next-line not-rely-on-time
|
94
|
-
info.expiredAt = block.timestamp + info.lifetime;
|
95
|
-
info.state = _lifecycleModule.checkAndLogTransition(
|
96
|
-
nftId,
|
97
|
-
POLICY(),
|
98
|
-
info.state,
|
99
|
-
ACTIVE()
|
100
|
-
);
|
101
|
-
}
|
102
|
-
|
103
|
-
function getBundleNftForPolicy(
|
104
|
-
NftId nftId
|
105
|
-
) external view returns (NftId bundleNft) {
|
106
|
-
return _bundleForPolicy[nftId];
|
107
|
-
}
|
108
|
-
|
109
|
-
function getPolicyInfo(
|
110
|
-
NftId nftId
|
111
|
-
) external view returns (PolicyInfo memory info) {
|
112
|
-
return _policyInfo[nftId];
|
113
|
-
}
|
114
|
-
}
|
@@ -1,23 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
5
|
-
import {NftId} from "../../types/NftId.sol";
|
6
|
-
|
7
|
-
interface IPool {
|
8
|
-
struct PoolInfo {
|
9
|
-
NftId nftId;
|
10
|
-
uint256 capital;
|
11
|
-
uint256 lockedCapital;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
interface IPoolModule is IOwnable, IRegistryLinked, IPool {
|
16
|
-
function underwrite(NftId policyNftId, NftId productNftId) external;
|
17
|
-
|
18
|
-
function registerPool(NftId nftId) external;
|
19
|
-
|
20
|
-
function getPoolInfo(
|
21
|
-
NftId nftId
|
22
|
-
) external view returns (PoolInfo memory info);
|
23
|
-
}
|
@@ -1,81 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
5
|
-
import {IProductService} from "../product/IProductService.sol";
|
6
|
-
import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
|
7
|
-
import {ITreasuryModule} from "../treasury/ITreasury.sol";
|
8
|
-
import {IPoolModule} from "./IPoolModule.sol";
|
9
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
10
|
-
|
11
|
-
abstract contract PoolModule is IPoolModule {
|
12
|
-
using NftIdLib for NftId;
|
13
|
-
|
14
|
-
uint256 public constant INITIAL_CAPITAL = 10000 * 10 ** 6;
|
15
|
-
uint256 public constant INITIAL_LOCKED_CAPITAL = 0;
|
16
|
-
|
17
|
-
mapping(NftId nftId => PoolInfo info) private _poolInfo;
|
18
|
-
|
19
|
-
IPolicyModule private _policyModule;
|
20
|
-
ITreasuryModule private _treasuryModule;
|
21
|
-
IProductService private _productService;
|
22
|
-
|
23
|
-
modifier onlyProductService() {
|
24
|
-
require(
|
25
|
-
address(_productService) == msg.sender,
|
26
|
-
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
27
|
-
);
|
28
|
-
_;
|
29
|
-
}
|
30
|
-
|
31
|
-
constructor(address productService) {
|
32
|
-
_policyModule = IPolicyModule(address(this));
|
33
|
-
_treasuryModule = ITreasuryModule(address(this));
|
34
|
-
_productService = IProductService(productService);
|
35
|
-
}
|
36
|
-
|
37
|
-
function registerPool(NftId nftId) public override {
|
38
|
-
require(_poolInfo[nftId].nftId.eqz(), "ERROR:PL-001:ALREADY_CREATED");
|
39
|
-
|
40
|
-
_poolInfo[nftId] = PoolInfo(
|
41
|
-
nftId,
|
42
|
-
INITIAL_CAPITAL,
|
43
|
-
INITIAL_LOCKED_CAPITAL
|
44
|
-
);
|
45
|
-
}
|
46
|
-
|
47
|
-
function underwrite(
|
48
|
-
NftId policyNftId,
|
49
|
-
NftId productNftId
|
50
|
-
) external override onlyProductService {
|
51
|
-
IPolicy.PolicyInfo memory policyInfo = _policyModule.getPolicyInfo(
|
52
|
-
policyNftId
|
53
|
-
);
|
54
|
-
require(policyInfo.nftId == policyNftId, "ERROR:PL-002:POLICY_UNKNOWN");
|
55
|
-
|
56
|
-
ITreasuryModule.ProductSetup memory product = _treasuryModule
|
57
|
-
.getProductSetup(productNftId);
|
58
|
-
require(
|
59
|
-
product.productNftId == productNftId,
|
60
|
-
"ERROR:PL-003:PRODUCT_SETUP_MISSING"
|
61
|
-
);
|
62
|
-
|
63
|
-
NftId poolNftId = product.poolNftId;
|
64
|
-
PoolInfo storage poolInfo = _poolInfo[poolNftId];
|
65
|
-
require(poolInfo.nftId == poolNftId, "ERROR:PL-004:POOL_UNKNOWN");
|
66
|
-
|
67
|
-
require(
|
68
|
-
poolInfo.capital - poolInfo.lockedCapital >=
|
69
|
-
policyInfo.sumInsuredAmount,
|
70
|
-
"ERROR:PL-005:CAPACITY_TOO_LOW"
|
71
|
-
);
|
72
|
-
|
73
|
-
poolInfo.lockedCapital += policyInfo.sumInsuredAmount;
|
74
|
-
}
|
75
|
-
|
76
|
-
function getPoolInfo(
|
77
|
-
NftId nftId
|
78
|
-
) external view override returns (PoolInfo memory info) {
|
79
|
-
info = _poolInfo[nftId];
|
80
|
-
}
|
81
|
-
}
|
@@ -1,36 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
|
5
|
-
import {IInstance} from "../IInstance.sol";
|
6
|
-
import {NftId} from "../../types/NftId.sol";
|
7
|
-
|
8
|
-
// TODO or name this IProtectionService to have Product be something more generic (loan, savings account, ...)
|
9
|
-
interface IProductService is IRegistryLinked {
|
10
|
-
function createApplication(
|
11
|
-
address applicationOwner,
|
12
|
-
uint256 sumInsuredAmount,
|
13
|
-
uint256 premiumAmount,
|
14
|
-
uint256 lifetime,
|
15
|
-
NftId bundleNftId
|
16
|
-
) external returns (NftId nftId);
|
17
|
-
|
18
|
-
// function revoke(unit256 nftId) external;
|
19
|
-
|
20
|
-
function underwrite(NftId nftId) external;
|
21
|
-
|
22
|
-
// function decline(uint256 nftId) external;
|
23
|
-
// function expire(uint256 nftId) external;
|
24
|
-
function close(NftId nftId) external;
|
25
|
-
|
26
|
-
function collectPremium(NftId nftId) external;
|
27
|
-
|
28
|
-
// function createClaim(uint256 nftId, uint256 claimAmount) external;
|
29
|
-
// function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
|
30
|
-
// function declineClaim(uint256 nftId, uint256 claimId) external;
|
31
|
-
// function closeClaim(uint256 nftId, uint256 claimId) external;
|
32
|
-
}
|
33
|
-
|
34
|
-
interface IProductModule is IOwnable, IRegistryLinked {
|
35
|
-
function getProductService() external view returns (IProductService);
|
36
|
-
}
|
@@ -1,136 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
// import {IProduct} from "../../components/IProduct.sol";
|
5
|
-
// import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
|
6
|
-
// import {IInstance} from "../IInstance.sol";
|
7
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
8
|
-
import {IPolicyModule} from "../policy/IPolicy.sol";
|
9
|
-
import {RegistryLinked} from "../../registry/Registry.sol";
|
10
|
-
import {IProductService, IProductModule} from "./IProductService.sol";
|
11
|
-
import {ITreasuryModule} from "../../instance/treasury/ITreasury.sol";
|
12
|
-
import {IPoolModule} from "../../instance/pool/IPoolModule.sol";
|
13
|
-
import {ObjectType, INSTANCE, PRODUCT} from "../../types/ObjectType.sol";
|
14
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
15
|
-
|
16
|
-
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
17
|
-
contract ProductService is RegistryLinked, IProductService {
|
18
|
-
using NftIdLib for NftId;
|
19
|
-
|
20
|
-
constructor(
|
21
|
-
address registry
|
22
|
-
) RegistryLinked(registry) // solhint-disable-next-line no-empty-blocks
|
23
|
-
{
|
24
|
-
|
25
|
-
}
|
26
|
-
|
27
|
-
function createApplication(
|
28
|
-
address applicationOwner,
|
29
|
-
uint256 sumInsuredAmount,
|
30
|
-
uint256 premiumAmount,
|
31
|
-
uint256 lifetime,
|
32
|
-
NftId bundleNftId
|
33
|
-
) external override returns (NftId nftId) {
|
34
|
-
// same as only registered product
|
35
|
-
NftId productNftId = _registry.getNftId(msg.sender);
|
36
|
-
require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
|
37
|
-
IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
|
38
|
-
productNftId
|
39
|
-
);
|
40
|
-
require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
|
41
|
-
|
42
|
-
IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
|
43
|
-
productInfo.parentNftId
|
44
|
-
);
|
45
|
-
require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
|
46
|
-
require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
|
47
|
-
|
48
|
-
IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
|
49
|
-
nftId = policyModule.createApplication(
|
50
|
-
productInfo,
|
51
|
-
applicationOwner,
|
52
|
-
sumInsuredAmount,
|
53
|
-
premiumAmount,
|
54
|
-
lifetime,
|
55
|
-
bundleNftId
|
56
|
-
);
|
57
|
-
|
58
|
-
// add logging
|
59
|
-
}
|
60
|
-
|
61
|
-
function underwrite(NftId policyNftId) external override {
|
62
|
-
// validation
|
63
|
-
// same as only registered product
|
64
|
-
NftId productNftId = _registry.getNftId(msg.sender);
|
65
|
-
require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
|
66
|
-
IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
|
67
|
-
productNftId
|
68
|
-
);
|
69
|
-
require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
|
70
|
-
|
71
|
-
IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
|
72
|
-
productInfo.parentNftId
|
73
|
-
);
|
74
|
-
require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
|
75
|
-
require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
|
76
|
-
|
77
|
-
// underwrite policy
|
78
|
-
address instanceAddress = instanceInfo.objectAddress;
|
79
|
-
IPoolModule poolModule = IPoolModule(instanceAddress);
|
80
|
-
poolModule.underwrite(policyNftId, productNftId);
|
81
|
-
|
82
|
-
// activate policy
|
83
|
-
IPolicyModule policyModule = IPolicyModule(instanceAddress);
|
84
|
-
policyModule.activate(policyNftId);
|
85
|
-
|
86
|
-
// add logging
|
87
|
-
}
|
88
|
-
|
89
|
-
function collectPremium(NftId policyNftId) external override {
|
90
|
-
// validation same as other functions, eg underwrite
|
91
|
-
// TODO unify validation into modifier and/or other suitable approaches
|
92
|
-
// same as only registered product
|
93
|
-
NftId productNftId = _registry.getNftId(msg.sender);
|
94
|
-
require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
|
95
|
-
IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
|
96
|
-
productNftId
|
97
|
-
);
|
98
|
-
require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
|
99
|
-
|
100
|
-
IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
|
101
|
-
productInfo.parentNftId
|
102
|
-
);
|
103
|
-
require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
|
104
|
-
require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
|
105
|
-
|
106
|
-
// process/collect premium: book keeping for policy
|
107
|
-
address instanceAddress = instanceInfo.objectAddress;
|
108
|
-
IPolicyModule policyModule = IPolicyModule(instanceAddress);
|
109
|
-
policyModule.processPremium(policyNftId);
|
110
|
-
|
111
|
-
// process/collect premium: actual token transfer
|
112
|
-
ITreasuryModule treasuryModule = ITreasuryModule(instanceAddress);
|
113
|
-
treasuryModule.processPremium(policyNftId, productNftId);
|
114
|
-
|
115
|
-
// TODO add logging
|
116
|
-
}
|
117
|
-
|
118
|
-
function close(
|
119
|
-
NftId policyNftId
|
120
|
-
) external override // solhint-disable-next-line no-empty-blocks
|
121
|
-
{
|
122
|
-
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
abstract contract ProductModule is IProductModule {
|
127
|
-
IProductService private _productService;
|
128
|
-
|
129
|
-
constructor(address productService) {
|
130
|
-
_productService = IProductService(productService);
|
131
|
-
}
|
132
|
-
|
133
|
-
function getProductService() external view returns (IProductService) {
|
134
|
-
return _productService;
|
135
|
-
}
|
136
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
5
|
-
|
6
|
-
contract TokenHandler {
|
7
|
-
// TODO use oz safeTransferFrom
|
8
|
-
|
9
|
-
IERC20 _token;
|
10
|
-
|
11
|
-
constructor(address token) {
|
12
|
-
_token = IERC20(token);
|
13
|
-
}
|
14
|
-
|
15
|
-
// TODO add logging
|
16
|
-
function transfer(
|
17
|
-
address from,
|
18
|
-
address to,
|
19
|
-
uint256 amount
|
20
|
-
) external // TODO add authz (only treasury)
|
21
|
-
{
|
22
|
-
_token.transferFrom(from, to, amount);
|
23
|
-
}
|
24
|
-
}
|