@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e38b7e6-931
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 +171 -2
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +282 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +313 -72
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +234 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +24 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -55
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +378 -127
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +391 -107
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +813 -1184
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/IService.sol/IService.json → IInstanceService.sol/IInstanceService.json} +244 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1762 -1332
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1047 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +963 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +240 -11
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1121 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +304 -39
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +93 -16
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +95 -80
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +89 -227
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1246 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +287 -111
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +258 -347
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +424 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +157 -71
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +339 -31
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +131 -212
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +382 -72
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -77
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +90 -58
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +92 -30
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +100 -88
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +155 -27
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- 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/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- 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 +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -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/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- 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 +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +107 -18
- package/contracts/components/Distribution.sol +24 -25
- package/contracts/components/IBaseComponent.sol +20 -4
- package/contracts/components/IDistributionComponent.sol +2 -4
- package/contracts/components/IPoolComponent.sol +5 -3
- package/contracts/components/IProductComponent.sol +4 -6
- package/contracts/components/Pool.sol +58 -46
- package/contracts/components/Product.sol +71 -75
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +54 -48
- package/contracts/instance/IInstanceBase.sol +25 -0
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +245 -68
- package/contracts/instance/InstanceAccessManager.sol +303 -0
- package/contracts/instance/InstanceBase.sol +39 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +345 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +109 -20
- package/contracts/instance/base/IInstanceBase.sol +0 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +48 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/BundleService.sol +294 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +79 -18
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +7 -24
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +539 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +101 -108
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +130 -431
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +41 -26
- package/contracts/registry/IRegistry.sol +48 -30
- package/contracts/registry/IRegistryService.sol +53 -24
- package/contracts/registry/Registry.sol +212 -306
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +151 -206
- package/contracts/registry/RegistryServiceManager.sol +26 -16
- package/contracts/registry/ReleaseManager.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +110 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -10
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/NftOwnable.sol +85 -38
- package/contracts/shared/ProxyManager.sol +4 -13
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +6 -7
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +61 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -71
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ComponentOwnerService.sol +0 -272
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -1,53 +0,0 @@
|
|
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 {Fee} from "../../../types/Fee.sol";
|
7
|
-
import {Key32} from "../../../types/Key32.sol";
|
8
|
-
import {NftId} from "../../../types/NftId.sol";
|
9
|
-
import {StateId} from "../../../types/StateId.sol";
|
10
|
-
import {Timestamp} from "../../../types/Timestamp.sol";
|
11
|
-
import {Blocknumber} from "../../../types/Blocknumber.sol";
|
12
|
-
|
13
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
14
|
-
import {IProductService} from "../../service/IProductService.sol";
|
15
|
-
import {IPoolService} from "../../service/IPoolService.sol";
|
16
|
-
|
17
|
-
interface IBundle {
|
18
|
-
|
19
|
-
struct BundleInfo {
|
20
|
-
NftId poolNftId;
|
21
|
-
Fee fee; // bundle fee on net premium amounts
|
22
|
-
bytes filter; // required conditions for applications to be considered for collateralization by this bundle
|
23
|
-
uint256 capitalAmount; // net investment capital amount (<= balance)
|
24
|
-
uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
|
25
|
-
uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
|
26
|
-
Timestamp expiredAt; // no new policies
|
27
|
-
Timestamp closedAt;
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
interface IBundleModule is IBundle {
|
32
|
-
|
33
|
-
function createBundleInfo(
|
34
|
-
NftId bundleNftId,
|
35
|
-
NftId poolNftId,
|
36
|
-
Fee memory fee,
|
37
|
-
uint256 amount,
|
38
|
-
uint256 lifetime,
|
39
|
-
bytes calldata filter
|
40
|
-
) external;
|
41
|
-
|
42
|
-
function setBundleInfo(NftId nftId, BundleInfo memory bundleInfo) external;
|
43
|
-
function updateBundleState(NftId nftId, StateId state) external;
|
44
|
-
|
45
|
-
function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
|
46
|
-
function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
|
47
|
-
|
48
|
-
function getBundleInfo(NftId nftId) external view returns(BundleInfo memory bundleInfo);
|
49
|
-
|
50
|
-
// repeat service linked signatures to avoid linearization issues
|
51
|
-
function getProductService() external returns(IProductService);
|
52
|
-
function getPoolService() external returns(IPoolService);
|
53
|
-
}
|
@@ -1,71 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin5/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
|
-
// TODO try to keep 1 modifier in 1 place...
|
21
|
-
modifier onlyComponentOwnerService() virtual {
|
22
|
-
require(
|
23
|
-
msg.sender == address(this.getComponentOwnerService()),
|
24
|
-
"ERROR:CMP-001:NOT_COMPONENT_OWNER_SERVICE"
|
25
|
-
);
|
26
|
-
_;
|
27
|
-
}
|
28
|
-
|
29
|
-
function initializeComponentModule(IKeyValueStore keyValueStore) internal {
|
30
|
-
_initialize(keyValueStore);
|
31
|
-
}
|
32
|
-
|
33
|
-
function registerComponent(
|
34
|
-
NftId nftId,
|
35
|
-
IERC20Metadata token,
|
36
|
-
address wallet
|
37
|
-
)
|
38
|
-
external
|
39
|
-
onlyComponentOwnerService
|
40
|
-
override
|
41
|
-
{
|
42
|
-
ComponentInfo memory info = ComponentInfo(token, wallet);
|
43
|
-
_nftIds.push(nftId);
|
44
|
-
_create(COMPONENT(), nftId, abi.encode(info));
|
45
|
-
}
|
46
|
-
|
47
|
-
function getComponentToken(NftId nftId) external view override returns(IERC20Metadata token) {
|
48
|
-
ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
|
49
|
-
return info.token;
|
50
|
-
}
|
51
|
-
|
52
|
-
function getComponentWallet(NftId nftId) external view override returns (address wallet) {
|
53
|
-
ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
|
54
|
-
return info.wallet;
|
55
|
-
}
|
56
|
-
|
57
|
-
function getComponentCount()
|
58
|
-
external
|
59
|
-
view
|
60
|
-
override
|
61
|
-
returns (uint256 numberOfCompnents)
|
62
|
-
{
|
63
|
-
return _nftIds.length;
|
64
|
-
}
|
65
|
-
|
66
|
-
function getComponentId(
|
67
|
-
uint256 idx
|
68
|
-
) external view override returns (NftId componentNftId) {
|
69
|
-
return _nftIds[idx];
|
70
|
-
}
|
71
|
-
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin5/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 getComponentToken(NftId nftId) external view returns (IERC20Metadata token);
|
21
|
-
function getComponentWallet(NftId nftId) external view returns (address wallet);
|
22
|
-
|
23
|
-
function getComponentCount() external view returns (uint256 numberOfCompnents);
|
24
|
-
function getComponentId(uint256 idx) external view returns (NftId nftId);
|
25
|
-
|
26
|
-
// repeat service linked signaturea to avoid linearization issues
|
27
|
-
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
28
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IDistributionModule} from "./IDistribution.sol";
|
5
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
6
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
7
|
-
|
8
|
-
contract DistributionModule is
|
9
|
-
ModuleBase,
|
10
|
-
IDistributionModule
|
11
|
-
{
|
12
|
-
|
13
|
-
function initializeDistributionModule(IKeyValueStore keyValueStore) internal {
|
14
|
-
_initialize(keyValueStore);
|
15
|
-
}
|
16
|
-
|
17
|
-
}
|
@@ -1,63 +0,0 @@
|
|
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 {ReferralId} from "../../../types/ReferralId.sol";
|
9
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
10
|
-
import {StateId} from "../../../types/StateId.sol";
|
11
|
-
import {Timestamp} from "../../../types/Timestamp.sol";
|
12
|
-
|
13
|
-
// TODO check if there is value to introuce IContract and let IPolicy derive from IContract
|
14
|
-
interface IPolicy {
|
15
|
-
struct PolicyInfo {
|
16
|
-
NftId productNftId;
|
17
|
-
NftId bundleNftId;
|
18
|
-
ReferralId referralId;
|
19
|
-
address beneficiary;
|
20
|
-
RiskId riskId;
|
21
|
-
uint256 sumInsuredAmount;
|
22
|
-
uint256 premiumAmount;
|
23
|
-
uint256 premiumPaidAmount;
|
24
|
-
uint256 lifetime;
|
25
|
-
bytes applicationData;
|
26
|
-
bytes policyData;
|
27
|
-
Timestamp activatedAt; // time of underwriting
|
28
|
-
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
29
|
-
Timestamp closedAt; // no locked capital
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
interface IPolicyModule is IPolicy {
|
34
|
-
function createPolicyInfo(
|
35
|
-
NftId policyNftId,
|
36
|
-
NftId productNftId,
|
37
|
-
ReferralId referralId,
|
38
|
-
RiskId riskId,
|
39
|
-
uint256 sumInsuredAmount,
|
40
|
-
uint256 premiumAmount,
|
41
|
-
uint256 lifetime,
|
42
|
-
NftId bundleNftId
|
43
|
-
) external;
|
44
|
-
|
45
|
-
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info) external;
|
46
|
-
function updatePolicyState(NftId nftId, StateId state) external;
|
47
|
-
|
48
|
-
// function underwrite(NftId nftId) external;
|
49
|
-
|
50
|
-
// function processPremium(NftId nftId, uint256 amount) external;
|
51
|
-
|
52
|
-
// function activate(NftId nftId, Timestamp activateAt) external;
|
53
|
-
|
54
|
-
function getPolicyInfo(
|
55
|
-
NftId nftId
|
56
|
-
) external view returns (PolicyInfo memory info);
|
57
|
-
|
58
|
-
// repeat registry linked signature
|
59
|
-
function getRegistry() external view returns (IRegistry registry);
|
60
|
-
|
61
|
-
// repeat service linked signature to avoid linearization issues
|
62
|
-
function getProductService() external returns(IProductService);
|
63
|
-
}
|
@@ -1,91 +0,0 @@
|
|
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 {ReferralId} from "../../../types/ReferralId.sol";
|
11
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
12
|
-
import {StateId} from "../../../types/StateId.sol";
|
13
|
-
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
14
|
-
|
15
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
16
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
17
|
-
|
18
|
-
abstract contract PolicyModule is
|
19
|
-
ModuleBase,
|
20
|
-
IPolicyModule
|
21
|
-
{
|
22
|
-
|
23
|
-
// TODO find a better place to avoid dupliation
|
24
|
-
modifier onlyProductService2() {
|
25
|
-
require(
|
26
|
-
msg.sender == address(this.getProductService()),
|
27
|
-
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
28
|
-
);
|
29
|
-
_;
|
30
|
-
}
|
31
|
-
|
32
|
-
function initializePolicyModule(IKeyValueStore keyValueStore) internal {
|
33
|
-
_initialize(keyValueStore);
|
34
|
-
}
|
35
|
-
|
36
|
-
function createPolicyInfo(
|
37
|
-
NftId policyNftId,
|
38
|
-
NftId productNftId,
|
39
|
-
ReferralId referralId,
|
40
|
-
RiskId riskId,
|
41
|
-
uint256 sumInsuredAmount,
|
42
|
-
uint256 premiumAmount,
|
43
|
-
uint256 lifetime,
|
44
|
-
NftId bundleNftId
|
45
|
-
)
|
46
|
-
external
|
47
|
-
onlyProductService2
|
48
|
-
override
|
49
|
-
{
|
50
|
-
PolicyInfo memory info = PolicyInfo(
|
51
|
-
productNftId,
|
52
|
-
bundleNftId,
|
53
|
-
referralId,
|
54
|
-
address(0), // beneficiary = policy nft holder
|
55
|
-
riskId,
|
56
|
-
sumInsuredAmount,
|
57
|
-
premiumAmount,
|
58
|
-
0, // premium paid amount
|
59
|
-
lifetime,
|
60
|
-
"", // applicationData
|
61
|
-
"", // policyData
|
62
|
-
zeroTimestamp(), // activatedAt
|
63
|
-
zeroTimestamp(), // expiredAt
|
64
|
-
zeroTimestamp() // closedAt
|
65
|
-
);
|
66
|
-
|
67
|
-
_create(POLICY(), policyNftId, abi.encode(info));
|
68
|
-
}
|
69
|
-
|
70
|
-
function setPolicyInfo(NftId policyNftId, PolicyInfo memory info)
|
71
|
-
external
|
72
|
-
override
|
73
|
-
onlyProductService2
|
74
|
-
{
|
75
|
-
_updateData(POLICY(), policyNftId, abi.encode(info));
|
76
|
-
}
|
77
|
-
|
78
|
-
function updatePolicyState(NftId bundleNftId, StateId state)
|
79
|
-
external
|
80
|
-
override
|
81
|
-
onlyProductService2
|
82
|
-
{
|
83
|
-
_updateState(POLICY(), bundleNftId, state);
|
84
|
-
}
|
85
|
-
|
86
|
-
function getPolicyInfo(
|
87
|
-
NftId nftId
|
88
|
-
) external view returns (PolicyInfo memory info) {
|
89
|
-
return abi.decode(_getData(POLICY(), nftId), (PolicyInfo));
|
90
|
-
}
|
91
|
-
}
|
@@ -1,41 +0,0 @@
|
|
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
|
-
import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
|
10
|
-
|
11
|
-
interface IPool {
|
12
|
-
struct PoolInfo {
|
13
|
-
bool isVerifying;
|
14
|
-
UFixed collateralizationLevel;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
interface IPoolModule is IPool {
|
19
|
-
|
20
|
-
function registerPool(
|
21
|
-
NftId nftId,
|
22
|
-
PoolInfo memory info
|
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 getComponentOwnerService() external view returns(IComponentOwnerService);
|
40
|
-
function getPoolService() external returns(IPoolService);
|
41
|
-
}
|
@@ -1,95 +0,0 @@
|
|
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
|
-
|
30
|
-
// TODO try to keep 1 modifier in 1 place...
|
31
|
-
modifier onlyComponentOwnerService() virtual {
|
32
|
-
require(
|
33
|
-
msg.sender == address(this.getComponentOwnerService()),
|
34
|
-
"ERROR:CMP-001:NOT_COMPONENT_OWNER_SERVICE"
|
35
|
-
);
|
36
|
-
_;
|
37
|
-
}
|
38
|
-
|
39
|
-
modifier poolServiceCallingPool() {
|
40
|
-
require(
|
41
|
-
msg.sender == address(this.getPoolService()),
|
42
|
-
"ERROR:PL-001:NOT_POOL_SERVICE"
|
43
|
-
);
|
44
|
-
_;
|
45
|
-
}
|
46
|
-
|
47
|
-
function initializePoolModule(IKeyValueStore keyValueStore) internal {
|
48
|
-
_initialize(keyValueStore);
|
49
|
-
}
|
50
|
-
|
51
|
-
function registerPool(
|
52
|
-
NftId nftId,
|
53
|
-
PoolInfo memory info
|
54
|
-
)
|
55
|
-
public
|
56
|
-
onlyComponentOwnerService
|
57
|
-
override
|
58
|
-
{
|
59
|
-
_create(POOL(), nftId, abi.encode(info));
|
60
|
-
}
|
61
|
-
|
62
|
-
function addBundleToPool(
|
63
|
-
NftId bundleNftId,
|
64
|
-
NftId poolNftId,
|
65
|
-
uint256 // amount
|
66
|
-
)
|
67
|
-
external
|
68
|
-
override
|
69
|
-
{
|
70
|
-
LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
|
71
|
-
require(
|
72
|
-
!bundleSet.contains(bundleNftId),
|
73
|
-
"ERROR:PL-020:BUNDLE_ALREADY_ADDED");
|
74
|
-
|
75
|
-
bundleSet.add(bundleNftId);
|
76
|
-
}
|
77
|
-
|
78
|
-
|
79
|
-
function getPoolInfo(
|
80
|
-
NftId nftId
|
81
|
-
) external view override returns (PoolInfo memory info) {
|
82
|
-
return abi.decode(_getData(POOL(), nftId), (PoolInfo));
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
|
87
|
-
return _bundlesForPool[poolNftId].getLength();
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
|
-
function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
|
92
|
-
return _bundlesForPool[poolNftId].getElementAt(index);
|
93
|
-
}
|
94
|
-
|
95
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../../types/NftId.sol";
|
5
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
6
|
-
import {StateId} from "../../../types/StateId.sol";
|
7
|
-
|
8
|
-
interface IRisk {
|
9
|
-
struct RiskInfo {
|
10
|
-
NftId productNftId;
|
11
|
-
bytes data;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
interface IRiskModule is IRisk {
|
16
|
-
function createRisk(
|
17
|
-
RiskId riskId,
|
18
|
-
NftId productNftId,
|
19
|
-
bytes memory data
|
20
|
-
) external;
|
21
|
-
|
22
|
-
function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
|
23
|
-
function updateRiskState(RiskId riskId, StateId state) external;
|
24
|
-
|
25
|
-
function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
|
26
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../../types/NftId.sol";
|
5
|
-
import {RISK} from "../../../types/ObjectType.sol";
|
6
|
-
import {RiskId} from "../../../types/RiskId.sol";
|
7
|
-
import {StateId} from "../../../types/StateId.sol";
|
8
|
-
|
9
|
-
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
10
|
-
import {IRiskModule} from "./IRisk.sol";
|
11
|
-
import {ModuleBase} from "../../base/ModuleBase.sol";
|
12
|
-
|
13
|
-
contract RiskModule is
|
14
|
-
ModuleBase,
|
15
|
-
IRiskModule
|
16
|
-
{
|
17
|
-
function initializeRiskModule(IKeyValueStore keyValueStore) internal {
|
18
|
-
_initialize(keyValueStore);
|
19
|
-
}
|
20
|
-
|
21
|
-
function createRisk(
|
22
|
-
RiskId riskId,
|
23
|
-
NftId productNftId,
|
24
|
-
bytes memory data
|
25
|
-
) external override {
|
26
|
-
RiskInfo memory info = RiskInfo(
|
27
|
-
productNftId,
|
28
|
-
data
|
29
|
-
);
|
30
|
-
|
31
|
-
_create(RISK(), riskId.toKey32(), abi.encode(info));
|
32
|
-
}
|
33
|
-
|
34
|
-
function setRiskInfo(
|
35
|
-
RiskId riskId,
|
36
|
-
RiskInfo memory info
|
37
|
-
)
|
38
|
-
external
|
39
|
-
override
|
40
|
-
{
|
41
|
-
|
42
|
-
}
|
43
|
-
|
44
|
-
function updateRiskState(
|
45
|
-
RiskId riskId,
|
46
|
-
StateId state
|
47
|
-
)
|
48
|
-
external
|
49
|
-
override
|
50
|
-
{
|
51
|
-
|
52
|
-
}
|
53
|
-
|
54
|
-
function getRiskInfo(RiskId riskId)
|
55
|
-
external
|
56
|
-
view
|
57
|
-
override
|
58
|
-
returns (RiskInfo memory info)
|
59
|
-
{
|
60
|
-
|
61
|
-
}
|
62
|
-
}
|
@@ -1,84 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.20;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
|
6
|
-
import {IPoolComponent} from "../../../components/IPoolComponent.sol";
|
7
|
-
import {IProductComponent} from "../../../components/IProductComponent.sol";
|
8
|
-
import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
|
9
|
-
|
10
|
-
import {NftId} from "../../../types/NftId.sol";
|
11
|
-
import {UFixed} from "../../../types/UFixed.sol";
|
12
|
-
import {Fee} from "../../../types/Fee.sol";
|
13
|
-
|
14
|
-
import {TokenHandler} from "./TokenHandler.sol";
|
15
|
-
|
16
|
-
interface ITreasury {
|
17
|
-
// TODO add events
|
18
|
-
// TODO add errors
|
19
|
-
|
20
|
-
// treasury info is linked to product nft id
|
21
|
-
struct TreasuryInfo {
|
22
|
-
NftId poolNftId;
|
23
|
-
NftId distributionNftId;
|
24
|
-
IERC20Metadata token;
|
25
|
-
Fee productFee; // product fee on net premium
|
26
|
-
Fee processingFee; // product fee on payout amounts
|
27
|
-
Fee poolFee; // pool fee on net premium
|
28
|
-
Fee stakingFee; // pool fee on staked capital from investor
|
29
|
-
Fee performanceFee; // pool fee on profits from capital investors
|
30
|
-
Fee distributionFee; // default distribution fee (no referral id)
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
interface ITreasuryModule is ITreasury {
|
35
|
-
|
36
|
-
function registerProductSetup(
|
37
|
-
NftId productNftId,
|
38
|
-
TreasuryInfo memory info
|
39
|
-
) external;
|
40
|
-
|
41
|
-
function setTreasuryInfo(
|
42
|
-
NftId productNftId,
|
43
|
-
TreasuryInfo memory info
|
44
|
-
) external;
|
45
|
-
|
46
|
-
function hasTreasuryInfo(
|
47
|
-
NftId productNftId
|
48
|
-
) external view returns (bool hasInfo);
|
49
|
-
|
50
|
-
function getTreasuryInfo(
|
51
|
-
NftId productNftId
|
52
|
-
) external view returns (TreasuryInfo memory info);
|
53
|
-
|
54
|
-
function getProductNftId(
|
55
|
-
NftId componentNftId
|
56
|
-
) external view returns (NftId productNftId);
|
57
|
-
|
58
|
-
function getTokenHandler(
|
59
|
-
NftId componentNftId
|
60
|
-
) external view returns (TokenHandler tokenHandler);
|
61
|
-
|
62
|
-
function calculateFeeAmount(
|
63
|
-
uint256 amount,
|
64
|
-
Fee memory fee
|
65
|
-
) external pure returns (uint256 feeAmount, uint256 netAmount);
|
66
|
-
|
67
|
-
function getFee(
|
68
|
-
UFixed fractionalFee,
|
69
|
-
uint256 fixedFee
|
70
|
-
) external pure returns (Fee memory fee);
|
71
|
-
|
72
|
-
function getZeroFee() external view returns (Fee memory fee);
|
73
|
-
|
74
|
-
function getUFixed(
|
75
|
-
uint256 a
|
76
|
-
) external pure returns (UFixed);
|
77
|
-
|
78
|
-
function getUFixed(
|
79
|
-
uint256 a,
|
80
|
-
int8 exp
|
81
|
-
) external pure returns (UFixed);
|
82
|
-
|
83
|
-
function getComponentOwnerService() external view returns(IComponentOwnerService);
|
84
|
-
}
|