@etherisc/gif-next 0.0.2-d3543ee-217 → 0.0.2-da77c50-824
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 +92 -0
- 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 +790 -247
- 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/IServiceLinked.sol/IServiceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccessComponentTypeRoles.json → IServiceLinked.sol/IServiceLinked.json} +14 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +926 -363
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → InstanceBase.sol/InstanceBase.json} +143 -129
- 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 +276 -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 +276 -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/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycleModule.json +1 -1
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +221 -0
- 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/product/IProductModule.sol/IProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +10 -0
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.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 -52
- 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 -52
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +519 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +300 -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/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IService.sol/IService.json +300 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +499 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +685 -0
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +300 -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 +95 -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 +82 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +407 -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 +222 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +230 -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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- 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/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 +78 -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 +89 -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 +35 -10
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/IServiceLinked.sol +12 -0
- package/contracts/instance/Instance.sol +40 -50
- package/contracts/instance/InstanceBase.sol +74 -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 +228 -0
- package/contracts/instance/module/bundle/IBundle.sol +53 -0
- package/contracts/instance/module/component/ComponentModule.sol +104 -0
- package/contracts/instance/module/component/IComponent.sol +53 -0
- package/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol +3 -3
- package/contracts/instance/{lifecycle → module/lifecycle}/LifecycleModule.sol +5 -4
- package/contracts/instance/module/policy/IPolicy.sol +60 -0
- package/contracts/instance/module/policy/PolicyModule.sol +84 -0
- package/contracts/instance/module/pool/IPoolModule.sol +41 -0
- package/contracts/instance/module/pool/PoolModule.sol +87 -0
- package/contracts/instance/module/product/IProductModule.sol +6 -0
- package/contracts/instance/module/product/ProductModule.sol +8 -0
- package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +25 -12
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +33 -53
- package/contracts/instance/service/ComponentOwnerService.sol +174 -0
- package/contracts/instance/service/ComponentServiceBase.sol +41 -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/IService.sol +15 -0
- package/contracts/instance/service/PoolService.sol +98 -0
- package/contracts/instance/service/ProductService.sol +358 -0
- package/contracts/instance/service/ServiceBase.sol +39 -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 +92 -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 +35 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +47 -0
- package/contracts/test/TestVersionable.sol +20 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/NftId.sol +7 -1
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +22 -14
- package/contracts/types/RoleId.sol +36 -0
- package/contracts/types/StateId.sol +6 -2
- package/contracts/types/Timestamp.sol +22 -1
- package/contracts/types/UFixed.sol +15 -15
- package/contracts/types/Version.sol +91 -0
- package/package.json +12 -4
- 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/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/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/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/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -77
- package/contracts/components/IPool.sol +0 -15
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
@@ -0,0 +1,60 @@
|
|
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 {StateId} from "../../../types/StateId.sol";
|
9
|
+
import {Timestamp} from "../../../types/Timestamp.sol";
|
10
|
+
import {Blocknumber} from "../../../types/Blocknumber.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 nftId;
|
16
|
+
NftId productNftId;
|
17
|
+
NftId bundleNftId;
|
18
|
+
address beneficiary;
|
19
|
+
StateId state; // applied, withdrawn, rejected, active, closed
|
20
|
+
uint256 sumInsuredAmount;
|
21
|
+
uint256 premiumAmount;
|
22
|
+
uint256 premiumPaidAmount;
|
23
|
+
uint256 lifetime;
|
24
|
+
bytes data;
|
25
|
+
Timestamp createdAt;
|
26
|
+
Timestamp activatedAt; // time of underwriting
|
27
|
+
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
28
|
+
Timestamp closedAt; // no locked capital
|
29
|
+
Blocknumber updatedIn; // write log entries in a way to support backtracking of all state changes
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
interface IPolicyModule is IPolicy {
|
34
|
+
function createApplication(
|
35
|
+
NftId productNftId,
|
36
|
+
NftId policyNftId,
|
37
|
+
uint256 sumInsuredAmount,
|
38
|
+
uint256 premiumAmount,
|
39
|
+
uint256 lifetime,
|
40
|
+
NftId bundleNftId
|
41
|
+
) external;
|
42
|
+
|
43
|
+
function setPolicyInfo(PolicyInfo memory policyInfo) 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
|
+
// repeat registry linked signature
|
56
|
+
function getRegistry() external view returns (IRegistry registry);
|
57
|
+
|
58
|
+
// repeat service linked signature to avoid linearization issues
|
59
|
+
function getProductService() external returns(IProductService);
|
60
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
|
+
|
6
|
+
import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
|
7
|
+
import {IProductService} from "../../service/IProductService.sol";
|
8
|
+
import {IPolicy, IPolicyModule} from "./IPolicy.sol";
|
9
|
+
import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
|
10
|
+
import {APPLIED, ACTIVE, UNDERWRITTEN} from "../../../types/StateId.sol";
|
11
|
+
import {NftId, NftIdLib} from "../../../types/NftId.sol";
|
12
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
13
|
+
import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
|
14
|
+
|
15
|
+
import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
|
16
|
+
|
17
|
+
abstract contract PolicyModule is IPolicyModule {
|
18
|
+
using NftIdLib for NftId;
|
19
|
+
|
20
|
+
mapping(NftId nftId => PolicyInfo info) private _policyInfo;
|
21
|
+
|
22
|
+
LifecycleModule private _lifecycleModule;
|
23
|
+
|
24
|
+
// TODO find a better place to avoid dupliation
|
25
|
+
modifier onlyProductService2() {
|
26
|
+
require(
|
27
|
+
msg.sender == address(this.getProductService()),
|
28
|
+
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
29
|
+
);
|
30
|
+
_;
|
31
|
+
}
|
32
|
+
|
33
|
+
constructor() {
|
34
|
+
_lifecycleModule = LifecycleModule(address(this));
|
35
|
+
}
|
36
|
+
|
37
|
+
function createApplication(
|
38
|
+
NftId productNftId,
|
39
|
+
NftId policyNftId,
|
40
|
+
uint256 sumInsuredAmount,
|
41
|
+
uint256 premiumAmount,
|
42
|
+
uint256 lifetime,
|
43
|
+
NftId bundleNftId
|
44
|
+
)
|
45
|
+
external
|
46
|
+
onlyProductService2
|
47
|
+
override
|
48
|
+
{
|
49
|
+
_policyInfo[policyNftId] = PolicyInfo(
|
50
|
+
policyNftId,
|
51
|
+
productNftId,
|
52
|
+
bundleNftId,
|
53
|
+
address(0), // beneficiary = policy nft holder
|
54
|
+
_lifecycleModule.getInitialState(POLICY()),
|
55
|
+
sumInsuredAmount,
|
56
|
+
premiumAmount,
|
57
|
+
0, // premium paid amount
|
58
|
+
lifetime,
|
59
|
+
"", // data
|
60
|
+
blockTimestamp(), // createdAt
|
61
|
+
zeroTimestamp(), // activatedAt
|
62
|
+
zeroTimestamp(), // expiredAt
|
63
|
+
zeroTimestamp(), // closedAt
|
64
|
+
blockNumber() // updatedIn
|
65
|
+
);
|
66
|
+
|
67
|
+
// TODO add logging
|
68
|
+
}
|
69
|
+
|
70
|
+
function setPolicyInfo(PolicyInfo memory policyInfo)
|
71
|
+
external
|
72
|
+
override
|
73
|
+
onlyProductService2
|
74
|
+
{
|
75
|
+
_policyInfo[policyInfo.nftId] = policyInfo;
|
76
|
+
}
|
77
|
+
|
78
|
+
function getPolicyInfo(
|
79
|
+
NftId nftId
|
80
|
+
) external view returns (PolicyInfo memory info) {
|
81
|
+
return _policyInfo[nftId];
|
82
|
+
}
|
83
|
+
|
84
|
+
}
|
@@ -0,0 +1,41 @@
|
|
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
|
+
NftId nftId;
|
13
|
+
bool isVerifying;
|
14
|
+
UFixed collateralizationLevel;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
interface IPoolModule is IPool {
|
19
|
+
|
20
|
+
function registerPool(
|
21
|
+
NftId poolNftId,
|
22
|
+
bool isVerifying,
|
23
|
+
UFixed collateralizationLevel
|
24
|
+
) external;
|
25
|
+
|
26
|
+
function addBundleToPool(
|
27
|
+
NftId bundleNftId,
|
28
|
+
NftId poolNftId,
|
29
|
+
uint256 amount
|
30
|
+
) external;
|
31
|
+
|
32
|
+
function getPoolInfo(
|
33
|
+
NftId nftId
|
34
|
+
) external view returns (PoolInfo memory info);
|
35
|
+
|
36
|
+
function getBundleCount(NftId poolNftId) external view returns (uint256 bundleCount);
|
37
|
+
function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
|
38
|
+
|
39
|
+
// repeat service linked signatures to avoid linearization issues
|
40
|
+
function getPoolService() external returns(IPoolService);
|
41
|
+
}
|
@@ -0,0 +1,87 @@
|
|
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 {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
12
|
+
import {StateId, APPLIED} from "../../../types/StateId.sol";
|
13
|
+
import {UFixed} from "../../../types/UFixed.sol";
|
14
|
+
|
15
|
+
import {IPoolModule} from "./IPoolModule.sol";
|
16
|
+
|
17
|
+
abstract contract PoolModule is
|
18
|
+
IPoolModule
|
19
|
+
{
|
20
|
+
using LibNftIdSet for LibNftIdSet.Set;
|
21
|
+
|
22
|
+
mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
|
23
|
+
mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
|
24
|
+
|
25
|
+
modifier poolServiceCallingPool() {
|
26
|
+
require(
|
27
|
+
msg.sender == address(this.getPoolService()),
|
28
|
+
"ERROR:PL-001:NOT_POOL_SERVICE"
|
29
|
+
);
|
30
|
+
_;
|
31
|
+
}
|
32
|
+
|
33
|
+
function registerPool(
|
34
|
+
NftId nftId,
|
35
|
+
bool isVerifying,
|
36
|
+
UFixed collateralizationRate
|
37
|
+
)
|
38
|
+
public
|
39
|
+
override
|
40
|
+
{
|
41
|
+
require(
|
42
|
+
_poolInfo[nftId].nftId.eqz(),
|
43
|
+
"ERROR:PL-010:ALREADY_CREATED");
|
44
|
+
|
45
|
+
_poolInfo[nftId] = PoolInfo(
|
46
|
+
nftId,
|
47
|
+
isVerifying,
|
48
|
+
collateralizationRate
|
49
|
+
);
|
50
|
+
|
51
|
+
// TODO add logging
|
52
|
+
}
|
53
|
+
|
54
|
+
function addBundleToPool(
|
55
|
+
NftId bundleNftId,
|
56
|
+
NftId poolNftId,
|
57
|
+
uint256 // amount
|
58
|
+
)
|
59
|
+
external
|
60
|
+
override
|
61
|
+
{
|
62
|
+
LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
|
63
|
+
require(
|
64
|
+
!bundleSet.contains(bundleNftId),
|
65
|
+
"ERROR:PL-020:BUNDLE_ALREADY_ADDED");
|
66
|
+
|
67
|
+
bundleSet.add(bundleNftId);
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
function getPoolInfo(
|
72
|
+
NftId nftId
|
73
|
+
) external view override returns (PoolInfo memory info) {
|
74
|
+
info = _poolInfo[nftId];
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
|
79
|
+
return _bundlesForPool[poolNftId].getLength();
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
|
84
|
+
return _bundlesForPool[poolNftId].getElementAt(index);
|
85
|
+
}
|
86
|
+
|
87
|
+
}
|
@@ -1,27 +1,23 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
|
8
|
-
import {
|
9
|
-
import {UFixed} from "../../types/UFixed.sol";
|
10
|
-
import {Fee} from "../../types/Fee.sol";
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
import {UFixed} from "../../../types/UFixed.sol";
|
8
|
+
import {Fee} from "../../../types/Fee.sol";
|
11
9
|
|
12
10
|
import {TokenHandler} from "./TokenHandler.sol";
|
13
11
|
|
14
12
|
interface ITreasury {
|
15
13
|
// TODO add events
|
16
14
|
// TODO add errors
|
17
|
-
}
|
18
15
|
|
19
|
-
interface ITreasuryModule is IRegistryLinked, ITreasury {
|
20
16
|
struct ProductSetup {
|
21
17
|
NftId productNftId;
|
22
18
|
NftId distributorNftId;
|
23
19
|
NftId poolNftId;
|
24
|
-
|
20
|
+
IERC20Metadata token;
|
25
21
|
TokenHandler tokenHandler;
|
26
22
|
address wallet;
|
27
23
|
Fee policyFee;
|
@@ -40,12 +36,15 @@ interface ITreasuryModule is IRegistryLinked, ITreasury {
|
|
40
36
|
Fee stakingFee;
|
41
37
|
Fee performanceFee;
|
42
38
|
}
|
39
|
+
}
|
40
|
+
|
41
|
+
interface ITreasuryModule is ITreasury {
|
43
42
|
|
44
43
|
function registerProduct(
|
45
44
|
NftId productNftId,
|
46
45
|
NftId distributorNftId,
|
47
46
|
NftId poolNftId,
|
48
|
-
|
47
|
+
IERC20Metadata token,
|
49
48
|
address wallet,
|
50
49
|
Fee memory policyFee,
|
51
50
|
Fee memory processingFee
|
@@ -70,8 +69,6 @@ interface ITreasuryModule is IRegistryLinked, ITreasury {
|
|
70
69
|
Fee memory performanceFee
|
71
70
|
) external;
|
72
71
|
|
73
|
-
function processPremium(NftId policyNftId, NftId productNftId) external;
|
74
|
-
|
75
72
|
function getTokenHandler(
|
76
73
|
NftId productNftId
|
77
74
|
) external view returns (TokenHandler tokenHandler);
|
@@ -88,4 +85,20 @@ interface ITreasuryModule is IRegistryLinked, ITreasury {
|
|
88
85
|
uint256 amount,
|
89
86
|
Fee memory fee
|
90
87
|
) external pure returns (uint256 feeAmount, uint256 netAmount);
|
88
|
+
|
89
|
+
function getFee(
|
90
|
+
UFixed fractionalFee,
|
91
|
+
uint256 fixedFee
|
92
|
+
) external pure returns (Fee memory fee);
|
93
|
+
|
94
|
+
function getZeroFee() external pure returns (Fee memory fee);
|
95
|
+
|
96
|
+
function getUFixed(
|
97
|
+
uint256 a
|
98
|
+
) external pure returns (UFixed);
|
99
|
+
|
100
|
+
function getUFixed(
|
101
|
+
uint256 a,
|
102
|
+
int8 exp
|
103
|
+
) external pure returns (UFixed);
|
91
104
|
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
|
8
|
+
contract TokenHandler {
|
9
|
+
NftId private _productNftId;
|
10
|
+
IERC20Metadata private _token;
|
11
|
+
|
12
|
+
constructor(
|
13
|
+
NftId productNftId,
|
14
|
+
address token
|
15
|
+
)
|
16
|
+
{
|
17
|
+
_productNftId = productNftId;
|
18
|
+
_token = IERC20Metadata(token);
|
19
|
+
}
|
20
|
+
|
21
|
+
// TODO add logging
|
22
|
+
function transfer(
|
23
|
+
address from,
|
24
|
+
address to,
|
25
|
+
uint256 amount
|
26
|
+
)
|
27
|
+
external // TODO add authz (only treasury/instance/product/pool/ service)
|
28
|
+
{
|
29
|
+
// TODO switch to oz safeTransferFrom
|
30
|
+
_token.transferFrom(from, to, amount);
|
31
|
+
}
|
32
|
+
|
33
|
+
function getProductNftId()
|
34
|
+
external
|
35
|
+
view
|
36
|
+
returns(NftId)
|
37
|
+
{
|
38
|
+
return _productNftId;
|
39
|
+
}
|
40
|
+
|
41
|
+
function getToken()
|
42
|
+
external
|
43
|
+
view
|
44
|
+
returns(IERC20Metadata)
|
45
|
+
{
|
46
|
+
return _token;
|
47
|
+
}
|
48
|
+
}
|
@@ -1,16 +1,13 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import "@openzeppelin/contracts/token/ERC20/
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {NftId} from "
|
7
|
-
import {Fee, feeIsZero} from "
|
8
|
-
import {UFixed, UFixedMathLib} from "
|
9
|
-
import {IProductComponent} from "../../components/IProduct.sol";
|
10
|
-
import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
|
6
|
+
import {NftId} from "../../../types/NftId.sol";
|
7
|
+
import {Fee, feeIsZero, toFee, zeroFee} from "../../../types/Fee.sol";
|
8
|
+
import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
|
11
9
|
import {TokenHandler} from "./TokenHandler.sol";
|
12
10
|
import {ITreasuryModule} from "./ITreasury.sol";
|
13
|
-
import {TokenHandler} from "./TokenHandler.sol";
|
14
11
|
|
15
12
|
abstract contract TreasuryModule is ITreasuryModule {
|
16
13
|
mapping(NftId productNftId => ProductSetup setup) private _productSetup;
|
@@ -18,17 +15,11 @@ abstract contract TreasuryModule is ITreasuryModule {
|
|
18
15
|
private _distributorSetup;
|
19
16
|
mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
|
20
17
|
|
21
|
-
IPolicyModule private _policyModule;
|
22
|
-
|
23
|
-
constructor() {
|
24
|
-
_policyModule = IPolicyModule(address(this));
|
25
|
-
}
|
26
|
-
|
27
18
|
function registerProduct(
|
28
19
|
NftId productNftId,
|
29
20
|
NftId distributorNftId,
|
30
21
|
NftId poolNftId,
|
31
|
-
|
22
|
+
IERC20Metadata token,
|
32
23
|
address wallet,
|
33
24
|
Fee memory policyFee,
|
34
25
|
Fee memory processingFee
|
@@ -37,7 +28,7 @@ abstract contract TreasuryModule is ITreasuryModule {
|
|
37
28
|
// TODO add validation
|
38
29
|
|
39
30
|
// deploy product specific handler contract
|
40
|
-
TokenHandler tokenHandler = new TokenHandler(address(token));
|
31
|
+
TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
|
41
32
|
|
42
33
|
_productSetup[productNftId] = ProductSetup(
|
43
34
|
productNftId,
|
@@ -120,49 +111,38 @@ abstract contract TreasuryModule is ITreasuryModule {
|
|
120
111
|
return _poolSetup[poolNftId];
|
121
112
|
}
|
122
113
|
|
123
|
-
function processPremium(
|
124
|
-
NftId policyNftId,
|
125
|
-
NftId productNftId
|
126
|
-
) external override // TODO add authz (only product service)
|
127
|
-
{
|
128
|
-
IPolicy.PolicyInfo memory policyInfo = _policyModule.getPolicyInfo(
|
129
|
-
policyNftId
|
130
|
-
);
|
131
|
-
require(
|
132
|
-
policyInfo.nftId == policyNftId,
|
133
|
-
"ERROR:TRS-020:POLICY_UNKNOWN"
|
134
|
-
);
|
135
|
-
|
136
|
-
ProductSetup memory product = _productSetup[productNftId];
|
137
|
-
TokenHandler tokenHandler = product.tokenHandler;
|
138
|
-
address policyOwner = this.getRegistry().getOwner(policyNftId);
|
139
|
-
address poolWallet = _poolSetup[product.poolNftId].wallet;
|
140
|
-
// TODO add validation
|
141
|
-
|
142
|
-
if (feeIsZero(product.policyFee)) {
|
143
|
-
tokenHandler.transfer(
|
144
|
-
policyOwner,
|
145
|
-
poolWallet,
|
146
|
-
policyInfo.premiumAmount
|
147
|
-
);
|
148
|
-
} else {
|
149
|
-
(uint256 feeAmount, uint256 netAmount) = calculateFeeAmount(
|
150
|
-
policyInfo.premiumAmount,
|
151
|
-
product.policyFee
|
152
|
-
);
|
153
|
-
|
154
|
-
tokenHandler.transfer(policyOwner, product.wallet, feeAmount);
|
155
|
-
tokenHandler.transfer(policyOwner, poolWallet, netAmount);
|
156
|
-
}
|
157
|
-
}
|
158
|
-
|
159
114
|
function calculateFeeAmount(
|
160
115
|
uint256 amount,
|
161
116
|
Fee memory fee
|
162
117
|
) public pure override returns (uint256 feeAmount, uint256 netAmount) {
|
163
|
-
UFixed fractionalAmount = UFixedMathLib.
|
118
|
+
UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
|
164
119
|
fee.fractionalFee;
|
165
|
-
feeAmount =
|
120
|
+
feeAmount = fractionalAmount.toInt() + fee.fixedFee;
|
166
121
|
netAmount = amount - feeAmount;
|
167
122
|
}
|
123
|
+
|
124
|
+
function getFee(
|
125
|
+
UFixed fractionalFee,
|
126
|
+
uint256 fixedFee
|
127
|
+
) external pure override returns (Fee memory fee) {
|
128
|
+
return toFee(fractionalFee, fixedFee);
|
129
|
+
}
|
130
|
+
|
131
|
+
function getZeroFee() external pure override returns (Fee memory fee) {
|
132
|
+
return zeroFee();
|
133
|
+
}
|
134
|
+
|
135
|
+
function getUFixed(
|
136
|
+
uint256 a
|
137
|
+
) external pure override returns (UFixed) {
|
138
|
+
return UFixedMathLib.toUFixed(a);
|
139
|
+
}
|
140
|
+
|
141
|
+
function getUFixed(
|
142
|
+
uint256 a,
|
143
|
+
int8 exp
|
144
|
+
) external pure returns (UFixed)
|
145
|
+
{
|
146
|
+
return UFixedMathLib.toUFixed(a, exp);
|
147
|
+
}
|
168
148
|
}
|