@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,53 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {RoleId} from "../../../types/RoleId.sol";
|
5
|
+
|
6
|
+
interface IAccess {
|
7
|
+
struct RoleInfo {
|
8
|
+
RoleId id;
|
9
|
+
string name;
|
10
|
+
bool isActive;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
interface IAccessModule is
|
15
|
+
IAccess
|
16
|
+
{
|
17
|
+
event LogAccessRoleCreated(RoleId role, string roleName);
|
18
|
+
event LogAccessRoleStateSet(RoleId role, bool active);
|
19
|
+
event LogAccessRoleGranted(RoleId role, address member, bool isMember);
|
20
|
+
|
21
|
+
function createRole(string memory roleName) external returns (RoleId role);
|
22
|
+
|
23
|
+
function setRoleState(RoleId role, bool active) external;
|
24
|
+
|
25
|
+
function grantRole(RoleId role, address member) external;
|
26
|
+
|
27
|
+
function revokeRole(RoleId role, address member) external;
|
28
|
+
|
29
|
+
function roleExists(RoleId role) external view returns (bool);
|
30
|
+
|
31
|
+
function hasRole(RoleId role, address member) external view returns (bool);
|
32
|
+
|
33
|
+
function getRoleCount() external view returns (uint256 roles);
|
34
|
+
|
35
|
+
function getRole(uint256 idx) external view returns (RoleId role);
|
36
|
+
|
37
|
+
function getRoleId(string memory roleName) external pure returns (RoleId role);
|
38
|
+
|
39
|
+
function getRoleInfo(
|
40
|
+
RoleId role
|
41
|
+
) external view returns (RoleInfo memory info);
|
42
|
+
|
43
|
+
function getRoleMemberCount(
|
44
|
+
RoleId role
|
45
|
+
) external view returns (uint256 roleMembers);
|
46
|
+
|
47
|
+
function getRoleMember(
|
48
|
+
RoleId role,
|
49
|
+
uint256 idx
|
50
|
+
) external view returns (address roleMember);
|
51
|
+
|
52
|
+
function getOwner() external view returns (address owner);
|
53
|
+
}
|
@@ -0,0 +1,135 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
|
6
|
+
import {IProductService} from "../../service/IProductService.sol";
|
7
|
+
import {IPoolService} from "../../service/IPoolService.sol";
|
8
|
+
|
9
|
+
import {NftId} from "../../../types/NftId.sol";
|
10
|
+
import {Key32, KeyId} from "../../../types/Key32.sol";
|
11
|
+
import {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
12
|
+
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
|
13
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../../types/StateId.sol";
|
14
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
15
|
+
import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
|
16
|
+
|
17
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
18
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
19
|
+
|
20
|
+
import {IBundleModule} from "./IBundle.sol";
|
21
|
+
|
22
|
+
abstract contract BundleModule is
|
23
|
+
ModuleBase,
|
24
|
+
IBundleModule
|
25
|
+
{
|
26
|
+
|
27
|
+
using LibNftIdSet for LibNftIdSet.Set;
|
28
|
+
|
29
|
+
mapping(NftId bundleNftId => LibNftIdSet.Set policies) private _collateralizedPolicies;
|
30
|
+
mapping(NftId bundleNftId => mapping(NftId policyNftId => uint256 amount)) private _collateralizationAmount;
|
31
|
+
|
32
|
+
modifier onlyBundlePoolService() {
|
33
|
+
require(
|
34
|
+
msg.sender == address(this.getPoolService()),
|
35
|
+
"ERROR:BDL-001:NOT_POOL_SERVICE"
|
36
|
+
);
|
37
|
+
_;
|
38
|
+
}
|
39
|
+
|
40
|
+
modifier onlyBundleProductService() {
|
41
|
+
require(
|
42
|
+
msg.sender == address(this.getProductService()),
|
43
|
+
"ERROR:BDL-002:NOT_PRODUCT_SERVICE"
|
44
|
+
);
|
45
|
+
_;
|
46
|
+
}
|
47
|
+
|
48
|
+
modifier onlyPoolOrProductService() {
|
49
|
+
require(
|
50
|
+
msg.sender == address(this.getPoolService())
|
51
|
+
|| msg.sender == address(this.getProductService()),
|
52
|
+
"ERROR:BDL-003:NOT_POOL_OR_PRODUCT_SERVICE"
|
53
|
+
);
|
54
|
+
_;
|
55
|
+
}
|
56
|
+
|
57
|
+
function initializeBundleModule(IKeyValueStore keyValueStore) internal {
|
58
|
+
_initialize(keyValueStore);
|
59
|
+
}
|
60
|
+
|
61
|
+
function createBundleInfo(
|
62
|
+
NftId bundleNftId,
|
63
|
+
NftId poolNftId,
|
64
|
+
uint256 amount,
|
65
|
+
uint256 lifetime,
|
66
|
+
bytes calldata filter
|
67
|
+
)
|
68
|
+
external
|
69
|
+
onlyBundlePoolService
|
70
|
+
override
|
71
|
+
{
|
72
|
+
BundleInfo memory info = BundleInfo(
|
73
|
+
poolNftId,
|
74
|
+
filter,
|
75
|
+
amount, // capital
|
76
|
+
0, // locked capital
|
77
|
+
amount, // balance
|
78
|
+
blockTimestamp().addSeconds(lifetime), // expiredAt
|
79
|
+
zeroTimestamp() // closedAt
|
80
|
+
);
|
81
|
+
|
82
|
+
_create(BUNDLE(), bundleNftId, abi.encode(info));
|
83
|
+
}
|
84
|
+
|
85
|
+
function setBundleInfo(NftId bundleNftId, BundleInfo memory info)
|
86
|
+
external
|
87
|
+
override
|
88
|
+
onlyPoolOrProductService
|
89
|
+
{
|
90
|
+
_updateData(BUNDLE(), bundleNftId, abi.encode(info));
|
91
|
+
}
|
92
|
+
|
93
|
+
function updateBundleState(NftId bundleNftId, StateId state)
|
94
|
+
external
|
95
|
+
override
|
96
|
+
onlyBundlePoolService
|
97
|
+
{
|
98
|
+
_updateState(BUNDLE(), bundleNftId, state);
|
99
|
+
}
|
100
|
+
|
101
|
+
function collateralizePolicy(
|
102
|
+
NftId bundleNftId,
|
103
|
+
NftId policyNftId,
|
104
|
+
uint256 collateralAmount
|
105
|
+
)
|
106
|
+
external
|
107
|
+
onlyBundleProductService
|
108
|
+
override
|
109
|
+
{
|
110
|
+
_collateralizationAmount[bundleNftId][policyNftId] = collateralAmount;
|
111
|
+
_collateralizedPolicies[bundleNftId].add(policyNftId);
|
112
|
+
}
|
113
|
+
|
114
|
+
function releasePolicy(
|
115
|
+
NftId bundleNftId,
|
116
|
+
NftId policyNftId
|
117
|
+
)
|
118
|
+
external
|
119
|
+
onlyBundleProductService
|
120
|
+
override
|
121
|
+
returns(uint256 collateralAmount)
|
122
|
+
{
|
123
|
+
collateralAmount = _collateralizationAmount[bundleNftId][policyNftId];
|
124
|
+
delete _collateralizationAmount[bundleNftId][policyNftId];
|
125
|
+
_collateralizedPolicies[bundleNftId].remove(policyNftId);
|
126
|
+
}
|
127
|
+
|
128
|
+
function getBundleInfo(NftId bundleNftId) external view override returns(BundleInfo memory bundleInfo) {
|
129
|
+
return abi.decode(_getData(BUNDLE(), bundleNftId), (BundleInfo));
|
130
|
+
}
|
131
|
+
|
132
|
+
function getBundleState(NftId bundleNftId) external view override returns(StateId state) {
|
133
|
+
return _getState(BUNDLE(), bundleNftId);
|
134
|
+
}
|
135
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../../IInstance.sol";
|
6
|
+
import {Key32} from "../../../types/Key32.sol";
|
7
|
+
import {NftId} from "../../../types/NftId.sol";
|
8
|
+
import {StateId} from "../../../types/StateId.sol";
|
9
|
+
import {Timestamp} from "../../../types/Timestamp.sol";
|
10
|
+
import {Blocknumber} from "../../../types/Blocknumber.sol";
|
11
|
+
|
12
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
13
|
+
import {IProductService} from "../../service/IProductService.sol";
|
14
|
+
import {IPoolService} from "../../service/IPoolService.sol";
|
15
|
+
|
16
|
+
interface IBundle {
|
17
|
+
|
18
|
+
struct BundleInfo {
|
19
|
+
NftId poolNftId;
|
20
|
+
bytes filter; // required conditions for applications to be considered for collateralization by this bundle
|
21
|
+
uint256 capitalAmount; // net investment capital amount (<= balance)
|
22
|
+
uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
|
23
|
+
uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
|
24
|
+
Timestamp expiredAt; // no new policies
|
25
|
+
Timestamp closedAt;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
interface IBundleModule is IBundle {
|
30
|
+
|
31
|
+
function createBundleInfo(
|
32
|
+
NftId bundleNftId,
|
33
|
+
NftId poolNftId,
|
34
|
+
uint256 amount,
|
35
|
+
uint256 lifetime,
|
36
|
+
bytes calldata filter
|
37
|
+
) external;
|
38
|
+
|
39
|
+
function setBundleInfo(NftId nftId, BundleInfo memory bundleInfo) external;
|
40
|
+
function updateBundleState(NftId nftId, StateId state) external;
|
41
|
+
|
42
|
+
function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
|
43
|
+
function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
|
44
|
+
|
45
|
+
function getBundleInfo(NftId nftId) external view returns(BundleInfo memory bundleInfo);
|
46
|
+
function getBundleState(NftId nftId) external view returns(StateId state);
|
47
|
+
|
48
|
+
// repeat service linked signatures to avoid linearization issues
|
49
|
+
function getProductService() external returns(IProductService);
|
50
|
+
function getPoolService() external returns(IPoolService);
|
51
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {ICompensationModule} from "./ICompensation.sol";
|
5
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
6
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
7
|
+
|
8
|
+
contract CompensationModule is
|
9
|
+
ModuleBase,
|
10
|
+
ICompensationModule
|
11
|
+
{
|
12
|
+
|
13
|
+
function initializeCompensationModule(IKeyValueStore keyValueStore) internal {
|
14
|
+
_initialize(keyValueStore);
|
15
|
+
}
|
16
|
+
|
17
|
+
}
|
@@ -0,0 +1,81 @@
|
|
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
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
6
|
+
import {IComponentModule} from "./IComponent.sol";
|
7
|
+
|
8
|
+
import {NftId} from "../../../types/NftId.sol";
|
9
|
+
import {ObjectType, COMPONENT} from "../../../types/ObjectType.sol";
|
10
|
+
import {StateId} from "../../../types/StateId.sol";
|
11
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
12
|
+
|
13
|
+
abstract contract ComponentModule is
|
14
|
+
ModuleBase,
|
15
|
+
IComponentModule
|
16
|
+
{
|
17
|
+
|
18
|
+
NftId[] private _nftIds;
|
19
|
+
|
20
|
+
modifier onlyComponentOwnerService() {
|
21
|
+
require(
|
22
|
+
msg.sender == address(this.getComponentOwnerService()),
|
23
|
+
"ERROR:CMP-001:NOT_OWNER_SERVICE"
|
24
|
+
);
|
25
|
+
_;
|
26
|
+
}
|
27
|
+
|
28
|
+
function initializeComponentModule(IKeyValueStore keyValueStore) internal {
|
29
|
+
_initialize(keyValueStore);
|
30
|
+
}
|
31
|
+
|
32
|
+
function registerComponent(
|
33
|
+
NftId nftId,
|
34
|
+
IERC20Metadata token,
|
35
|
+
address wallet
|
36
|
+
)
|
37
|
+
external
|
38
|
+
onlyComponentOwnerService
|
39
|
+
override
|
40
|
+
{
|
41
|
+
ComponentInfo memory info = ComponentInfo(token, wallet);
|
42
|
+
_nftIds.push(nftId);
|
43
|
+
_create(COMPONENT(), nftId, abi.encode(info));
|
44
|
+
}
|
45
|
+
|
46
|
+
function getComponentState(
|
47
|
+
NftId nftId
|
48
|
+
)
|
49
|
+
external
|
50
|
+
view
|
51
|
+
override
|
52
|
+
returns (StateId state)
|
53
|
+
{
|
54
|
+
return _getState(COMPONENT(), nftId);
|
55
|
+
}
|
56
|
+
|
57
|
+
function getComponentToken(NftId nftId) external view override returns(IERC20Metadata token) {
|
58
|
+
ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
|
59
|
+
return info.token;
|
60
|
+
}
|
61
|
+
|
62
|
+
function getComponentWallet(NftId nftId) external view override returns (address wallet) {
|
63
|
+
ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
|
64
|
+
return info.wallet;
|
65
|
+
}
|
66
|
+
|
67
|
+
function getComponentCount()
|
68
|
+
external
|
69
|
+
view
|
70
|
+
override
|
71
|
+
returns (uint256 numberOfCompnents)
|
72
|
+
{
|
73
|
+
return _nftIds.length;
|
74
|
+
}
|
75
|
+
|
76
|
+
function getComponentId(
|
77
|
+
uint256 idx
|
78
|
+
) external view override returns (NftId componentNftId) {
|
79
|
+
return _nftIds[idx];
|
80
|
+
}
|
81
|
+
}
|
@@ -0,0 +1,29 @@
|
|
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
|
+
import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
|
6
|
+
|
7
|
+
import {StateId} from "../../../types/StateId.sol";
|
8
|
+
import {NftId} from "../../../types/NftId.sol";
|
9
|
+
|
10
|
+
interface IComponent {
|
11
|
+
struct ComponentInfo {
|
12
|
+
IERC20Metadata token;
|
13
|
+
address wallet;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
interface IComponentModule is IComponent {
|
18
|
+
|
19
|
+
function registerComponent(NftId nftId, IERC20Metadata token, address wallet) external;
|
20
|
+
function getComponentState(NftId nftId) external view returns (StateId state);
|
21
|
+
function getComponentToken(NftId nftId) external view returns (IERC20Metadata token);
|
22
|
+
function getComponentWallet(NftId nftId) external view returns (address wallet);
|
23
|
+
|
24
|
+
function getComponentCount() external view returns (uint256 numberOfCompnents);
|
25
|
+
function getComponentId(uint256 idx) external view returns (NftId nftId);
|
26
|
+
|
27
|
+
// repeat service linked signaturea to avoid linearization issues
|
28
|
+
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
29
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../../IInstance.sol";
|
6
|
+
import {IProductService} from "../../service/IProductService.sol";
|
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
|
+
|
12
|
+
// TODO check if there is value to introuce IContract and let IPolicy derive from IContract
|
13
|
+
interface IPolicy {
|
14
|
+
struct PolicyInfo {
|
15
|
+
NftId productNftId;
|
16
|
+
NftId bundleNftId;
|
17
|
+
address beneficiary;
|
18
|
+
RiskId riskId;
|
19
|
+
uint256 sumInsuredAmount;
|
20
|
+
uint256 premiumAmount;
|
21
|
+
uint256 premiumPaidAmount;
|
22
|
+
uint256 lifetime;
|
23
|
+
bytes applicationData;
|
24
|
+
bytes policyData;
|
25
|
+
Timestamp activatedAt; // time of underwriting
|
26
|
+
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
27
|
+
Timestamp closedAt; // no locked capital
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
interface IPolicyModule is IPolicy {
|
32
|
+
function createPolicyInfo(
|
33
|
+
NftId policyNftId,
|
34
|
+
NftId productNftId,
|
35
|
+
RiskId riskId,
|
36
|
+
uint256 sumInsuredAmount,
|
37
|
+
uint256 premiumAmount,
|
38
|
+
uint256 lifetime,
|
39
|
+
NftId bundleNftId
|
40
|
+
) external;
|
41
|
+
|
42
|
+
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info) external;
|
43
|
+
function updatePolicyState(NftId nftId, StateId state) external;
|
44
|
+
|
45
|
+
// function underwrite(NftId nftId) external;
|
46
|
+
|
47
|
+
// function processPremium(NftId nftId, uint256 amount) external;
|
48
|
+
|
49
|
+
// function activate(NftId nftId, Timestamp activateAt) external;
|
50
|
+
|
51
|
+
function getPolicyInfo(
|
52
|
+
NftId nftId
|
53
|
+
) external view returns (PolicyInfo memory info);
|
54
|
+
|
55
|
+
function getPolicyState(NftId nftId) external view returns (StateId state);
|
56
|
+
|
57
|
+
// repeat registry linked signature
|
58
|
+
function getRegistry() external view returns (IRegistry registry);
|
59
|
+
|
60
|
+
// repeat service linked signature to avoid linearization issues
|
61
|
+
function getProductService() external returns(IProductService);
|
62
|
+
}
|
@@ -0,0 +1,92 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
|
6
|
+
import {IProductService} from "../../service/IProductService.sol";
|
7
|
+
import {IPolicy, IPolicyModule} from "./IPolicy.sol";
|
8
|
+
import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
|
9
|
+
import {NftId, NftIdLib} from "../../../types/NftId.sol";
|
10
|
+
import {RiskId} from "../../../types/RiskId.sol";
|
11
|
+
import {StateId} from "../../../types/StateId.sol";
|
12
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
13
|
+
|
14
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
15
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
16
|
+
|
17
|
+
abstract contract PolicyModule is
|
18
|
+
ModuleBase,
|
19
|
+
IPolicyModule
|
20
|
+
{
|
21
|
+
|
22
|
+
// TODO find a better place to avoid dupliation
|
23
|
+
modifier onlyProductService2() {
|
24
|
+
require(
|
25
|
+
msg.sender == address(this.getProductService()),
|
26
|
+
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
27
|
+
);
|
28
|
+
_;
|
29
|
+
}
|
30
|
+
|
31
|
+
function initializePolicyModule(IKeyValueStore keyValueStore) internal {
|
32
|
+
_initialize(keyValueStore);
|
33
|
+
}
|
34
|
+
|
35
|
+
function createPolicyInfo(
|
36
|
+
NftId policyNftId,
|
37
|
+
NftId productNftId,
|
38
|
+
RiskId riskId,
|
39
|
+
uint256 sumInsuredAmount,
|
40
|
+
uint256 premiumAmount,
|
41
|
+
uint256 lifetime,
|
42
|
+
NftId bundleNftId
|
43
|
+
)
|
44
|
+
external
|
45
|
+
onlyProductService2
|
46
|
+
override
|
47
|
+
{
|
48
|
+
PolicyInfo memory info = PolicyInfo(
|
49
|
+
productNftId,
|
50
|
+
bundleNftId,
|
51
|
+
address(0), // beneficiary = policy nft holder
|
52
|
+
riskId,
|
53
|
+
sumInsuredAmount,
|
54
|
+
premiumAmount,
|
55
|
+
0, // premium paid amount
|
56
|
+
lifetime,
|
57
|
+
"", // applicationData
|
58
|
+
"", // policyData
|
59
|
+
zeroTimestamp(), // activatedAt
|
60
|
+
zeroTimestamp(), // expiredAt
|
61
|
+
zeroTimestamp() // closedAt
|
62
|
+
);
|
63
|
+
|
64
|
+
_create(POLICY(), policyNftId, abi.encode(info));
|
65
|
+
}
|
66
|
+
|
67
|
+
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info)
|
68
|
+
external
|
69
|
+
override
|
70
|
+
onlyProductService2
|
71
|
+
{
|
72
|
+
_updateData(POLICY(), policyNftId, abi.encode(info));
|
73
|
+
}
|
74
|
+
|
75
|
+
function updatePolicyState(NftId bundleNftId, StateId state)
|
76
|
+
external
|
77
|
+
override
|
78
|
+
onlyProductService2
|
79
|
+
{
|
80
|
+
_updateState(POLICY(), bundleNftId, state);
|
81
|
+
}
|
82
|
+
|
83
|
+
function getPolicyInfo(
|
84
|
+
NftId nftId
|
85
|
+
) external view returns (PolicyInfo memory info) {
|
86
|
+
return abi.decode(_getData(POLICY(), nftId), (PolicyInfo));
|
87
|
+
}
|
88
|
+
|
89
|
+
function getPolicyState(NftId nftId) external view override returns(StateId state) {
|
90
|
+
return _getState(POLICY(), nftId);
|
91
|
+
}
|
92
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
import {NftId} from "../../../types/NftId.sol";
|
6
|
+
import {UFixed} from "../../../types/UFixed.sol";
|
7
|
+
import {IProductService} from "../../service/IProductService.sol";
|
8
|
+
import {IPoolService} from "../../service/IPoolService.sol";
|
9
|
+
|
10
|
+
interface IPool {
|
11
|
+
struct PoolInfo {
|
12
|
+
bool isVerifying;
|
13
|
+
UFixed collateralizationLevel;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
interface IPoolModule is IPool {
|
18
|
+
|
19
|
+
function registerPool(
|
20
|
+
NftId poolNftId,
|
21
|
+
bool isVerifying,
|
22
|
+
UFixed collateralizationLevel
|
23
|
+
) external;
|
24
|
+
|
25
|
+
function addBundleToPool(
|
26
|
+
NftId bundleNftId,
|
27
|
+
NftId poolNftId,
|
28
|
+
uint256 amount
|
29
|
+
) external;
|
30
|
+
|
31
|
+
function getPoolInfo(
|
32
|
+
NftId nftId
|
33
|
+
) external view returns (PoolInfo memory info);
|
34
|
+
|
35
|
+
function getBundleCount(NftId poolNftId) external view returns (uint256 bundleCount);
|
36
|
+
function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
|
37
|
+
|
38
|
+
// repeat service linked signatures to avoid linearization issues
|
39
|
+
function getPoolService() external returns(IPoolService);
|
40
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
import {IProductService} from "../../service/IProductService.sol";
|
6
|
+
import {IPoolService} from "../../service/IPoolService.sol";
|
7
|
+
import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
|
8
|
+
import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
|
9
|
+
|
10
|
+
import {NftId} from "../../../types/NftId.sol";
|
11
|
+
import {POOL} from "../../../types/ObjectType.sol";
|
12
|
+
import {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
13
|
+
import {StateId, APPLIED} from "../../../types/StateId.sol";
|
14
|
+
import {UFixed} from "../../../types/UFixed.sol";
|
15
|
+
|
16
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
17
|
+
import {IPoolModule} from "./IPoolModule.sol";
|
18
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
19
|
+
|
20
|
+
abstract contract PoolModule is
|
21
|
+
ModuleBase,
|
22
|
+
IPoolModule
|
23
|
+
{
|
24
|
+
using LibNftIdSet for LibNftIdSet.Set;
|
25
|
+
|
26
|
+
// mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
|
27
|
+
mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
|
28
|
+
|
29
|
+
modifier poolServiceCallingPool() {
|
30
|
+
require(
|
31
|
+
msg.sender == address(this.getPoolService()),
|
32
|
+
"ERROR:PL-001:NOT_POOL_SERVICE"
|
33
|
+
);
|
34
|
+
_;
|
35
|
+
}
|
36
|
+
|
37
|
+
function initializePoolModule(IKeyValueStore keyValueStore) internal {
|
38
|
+
_initialize(keyValueStore);
|
39
|
+
}
|
40
|
+
|
41
|
+
function registerPool(
|
42
|
+
NftId nftId,
|
43
|
+
bool isVerifying,
|
44
|
+
UFixed collateralizationRate
|
45
|
+
)
|
46
|
+
public
|
47
|
+
override
|
48
|
+
{
|
49
|
+
PoolInfo memory info = PoolInfo(
|
50
|
+
isVerifying,
|
51
|
+
collateralizationRate
|
52
|
+
);
|
53
|
+
|
54
|
+
_create(POOL(), nftId, abi.encode(info));
|
55
|
+
}
|
56
|
+
|
57
|
+
function addBundleToPool(
|
58
|
+
NftId bundleNftId,
|
59
|
+
NftId poolNftId,
|
60
|
+
uint256 // amount
|
61
|
+
)
|
62
|
+
external
|
63
|
+
override
|
64
|
+
{
|
65
|
+
LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
|
66
|
+
require(
|
67
|
+
!bundleSet.contains(bundleNftId),
|
68
|
+
"ERROR:PL-020:BUNDLE_ALREADY_ADDED");
|
69
|
+
|
70
|
+
bundleSet.add(bundleNftId);
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
function getPoolInfo(
|
75
|
+
NftId nftId
|
76
|
+
) external view override returns (PoolInfo memory info) {
|
77
|
+
return abi.decode(_getData(POOL(), nftId), (PoolInfo));
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
|
82
|
+
return _bundlesForPool[poolNftId].getLength();
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
|
87
|
+
return _bundlesForPool[poolNftId].getElementAt(index);
|
88
|
+
}
|
89
|
+
|
90
|
+
}
|