@etherisc/gif-next 0.0.2-e42b0ca-323 → 0.0.2-e4b632c-016
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 +175 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +610 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +447 -60
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +519 -70
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +114 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +278 -1700
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2509 -1176
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +930 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1283 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +755 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +432 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +224 -43
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
- 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 +55 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -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/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
- 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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +381 -77
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +604 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +235 -50
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +325 -51
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +190 -51
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +380 -139
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- 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/shared/INftOwnable.sol/INftOwnable.json +127 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
- 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 +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- 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 +204 -36
- 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 +283 -62
- 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 +103 -23
- 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 +52 -13
- 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 +2 -2
- 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 +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- 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 +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/BaseComponent.sol +20 -22
- package/contracts/components/Distribution.sol +166 -0
- package/contracts/components/IBaseComponent.sol +8 -3
- package/contracts/components/IDistributionComponent.sol +43 -0
- package/contracts/components/IPoolComponent.sol +14 -9
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +115 -30
- package/contracts/components/Product.sol +212 -32
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +122 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +26 -45
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +426 -52
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +290 -0
- package/contracts/instance/InstanceService.sol +138 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/base/ComponentServiceBase.sol +11 -14
- package/contracts/instance/base/IInstanceBase.sol +11 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -13
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +53 -37
- package/contracts/instance/base/Lifecycle.sol +16 -11
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +19 -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 +43 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +244 -97
- package/contracts/instance/service/DistributionService.sol +70 -0
- package/contracts/instance/service/DistributionServiceManager.sol +53 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +8 -1
- package/contracts/instance/service/IProductService.sol +56 -7
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +29 -28
- package/contracts/registry/IRegistryService.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +315 -273
- package/contracts/registry/RegistryService.sol +444 -0
- package/contracts/registry/RegistryServiceManager.sol +64 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +136 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +62 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +54 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -55
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +5 -13
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +10 -5
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +51 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +54 -10
- 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 +9 -0
- 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/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 -296
- 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 -296
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
- 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 -188
- 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 -261
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
- 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 -149
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
- 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 -10
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
- 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 -533
- 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 -533
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- 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/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -80
- package/contracts/instance/base/ModuleBase.sol +0 -52
- package/contracts/instance/base/ServiceBase.sol +0 -37
- 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 -136
- package/contracts/instance/module/bundle/IBundle.sol +0 -58
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -95
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -76
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/risk/IRisk.sol +0 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -103
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
- package/contracts/instance/service/PoolService.sol +0 -123
- package/contracts/instance/service/ProductService.sol +0 -354
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -1,20 +1,37 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
5
|
import {IProductService} from "../instance/service/IProductService.sol";
|
6
6
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
7
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
8
8
|
import {Fee} from "../types/Fee.sol";
|
9
9
|
import {UFixed} from "../types/UFixed.sol";
|
10
10
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
11
|
import {BaseComponent} from "./BaseComponent.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
14
|
+
|
15
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
16
|
+
|
17
|
+
// import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
18
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
19
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
20
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
21
|
+
|
22
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
23
|
+
import {Registerable} from "../shared/Registerable.sol";
|
12
24
|
|
13
25
|
contract Pool is BaseComponent, IPoolComponent {
|
26
|
+
using NftIdLib for NftId;
|
14
27
|
|
15
28
|
bool internal _isVerifying;
|
16
29
|
UFixed internal _collateralizationLevel;
|
17
30
|
|
31
|
+
Fee internal _initialPoolFee;
|
32
|
+
Fee internal _initialStakingFee;
|
33
|
+
Fee internal _initialPerformanceFee;
|
34
|
+
|
18
35
|
// may be used to interact with instance by derived contracts
|
19
36
|
IPoolService internal _poolService;
|
20
37
|
|
@@ -38,22 +55,35 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
38
55
|
constructor(
|
39
56
|
address registry,
|
40
57
|
NftId instanceNftId,
|
58
|
+
NftId productNftId,
|
41
59
|
// TODO refactor into tokenNftId
|
42
60
|
address token,
|
61
|
+
bool isInterceptor,
|
43
62
|
bool verifying,
|
44
|
-
UFixed collateralizationLevel
|
63
|
+
UFixed collateralizationLevel,
|
64
|
+
Fee memory poolFee,
|
65
|
+
Fee memory stakingFee,
|
66
|
+
Fee memory performanceFee,
|
67
|
+
address initialOwner
|
45
68
|
)
|
46
|
-
BaseComponent(registry, instanceNftId, token)
|
69
|
+
BaseComponent(registry, instanceNftId, productNftId, token, POOL(), isInterceptor, initialOwner)
|
47
70
|
{
|
48
71
|
_isVerifying = verifying;
|
49
72
|
// TODO add validation
|
50
73
|
_collateralizationLevel = collateralizationLevel;
|
74
|
+
_initialPoolFee = poolFee;
|
75
|
+
_initialStakingFee = stakingFee;
|
76
|
+
_initialPerformanceFee = performanceFee;
|
77
|
+
|
78
|
+
// TODO: reactivate when services are available again
|
79
|
+
// _poolService = _instance.getPoolService();
|
80
|
+
// _productService = _instance.getProductService();
|
51
81
|
|
52
|
-
|
53
|
-
_productService = _instance.getProductService();
|
82
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
54
83
|
}
|
55
84
|
|
56
85
|
function createBundle(
|
86
|
+
Fee memory fee,
|
57
87
|
uint256 initialAmount,
|
58
88
|
uint256 lifetime,
|
59
89
|
bytes memory filter
|
@@ -65,6 +95,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
65
95
|
address owner = msg.sender;
|
66
96
|
bundleNftId = _poolService.createBundle(
|
67
97
|
owner,
|
98
|
+
fee,
|
68
99
|
initialAmount,
|
69
100
|
lifetime,
|
70
101
|
filter
|
@@ -115,6 +146,82 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
115
146
|
return _collateralizationLevel;
|
116
147
|
}
|
117
148
|
|
149
|
+
function setFees(
|
150
|
+
Fee memory poolFee,
|
151
|
+
Fee memory stakingFee,
|
152
|
+
Fee memory performanceFee
|
153
|
+
)
|
154
|
+
external
|
155
|
+
onlyOwner
|
156
|
+
override
|
157
|
+
{
|
158
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
159
|
+
}
|
160
|
+
|
161
|
+
function setBundleFee(
|
162
|
+
NftId bundleNftId,
|
163
|
+
Fee memory fee
|
164
|
+
)
|
165
|
+
external
|
166
|
+
override
|
167
|
+
// TODO add onlyBundleOwner
|
168
|
+
{
|
169
|
+
_poolService.setBundleFee(bundleNftId, fee);
|
170
|
+
}
|
171
|
+
|
172
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
173
|
+
// TODO fix this
|
174
|
+
if (getNftId().eq(zeroNftId())) {
|
175
|
+
return ISetup.PoolSetupInfo(
|
176
|
+
_productNftId,
|
177
|
+
TokenHandler(address(0)),
|
178
|
+
_collateralizationLevel,
|
179
|
+
_initialPoolFee,
|
180
|
+
_initialStakingFee,
|
181
|
+
_initialPerformanceFee,
|
182
|
+
_isVerifying,
|
183
|
+
_wallet
|
184
|
+
);
|
185
|
+
}
|
186
|
+
|
187
|
+
InstanceReader reader = _instance.getInstanceReader();
|
188
|
+
return reader.getPoolSetupInfo(getNftId());
|
189
|
+
}
|
190
|
+
|
191
|
+
// from IRegisterable
|
192
|
+
|
193
|
+
// TODO used only once, occupies space
|
194
|
+
// TODO do not use super
|
195
|
+
function getInitialInfo()
|
196
|
+
public
|
197
|
+
view
|
198
|
+
override (IRegisterable, Registerable)
|
199
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
200
|
+
{
|
201
|
+
(
|
202
|
+
IRegistry.ObjectInfo memory info,
|
203
|
+
bytes memory data
|
204
|
+
) = super.getInitialInfo();
|
205
|
+
|
206
|
+
return (
|
207
|
+
info,
|
208
|
+
abi.encode(
|
209
|
+
ISetup.PoolSetupInfo(
|
210
|
+
getProductNftId(),
|
211
|
+
TokenHandler(address(0)),
|
212
|
+
_collateralizationLevel,
|
213
|
+
_initialPoolFee,
|
214
|
+
_initialStakingFee,
|
215
|
+
_initialPerformanceFee,
|
216
|
+
_isVerifying,
|
217
|
+
_wallet
|
218
|
+
)
|
219
|
+
)
|
220
|
+
);
|
221
|
+
}
|
222
|
+
|
223
|
+
// Internals
|
224
|
+
|
118
225
|
function _underwrite(
|
119
226
|
NftId policyNftId,
|
120
227
|
bytes memory policyData,
|
@@ -133,6 +240,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
133
240
|
|
134
241
|
function _createBundle(
|
135
242
|
address bundleOwner,
|
243
|
+
Fee memory fee,
|
136
244
|
uint256 amount,
|
137
245
|
uint256 lifetime,
|
138
246
|
bytes calldata filter
|
@@ -142,33 +250,10 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
142
250
|
{
|
143
251
|
bundleNftId = _poolService.createBundle(
|
144
252
|
bundleOwner,
|
253
|
+
fee,
|
145
254
|
amount,
|
146
255
|
lifetime,
|
147
256
|
filter
|
148
257
|
);
|
149
258
|
}
|
150
|
-
|
151
|
-
// from pool component
|
152
|
-
function getStakingFee()
|
153
|
-
external
|
154
|
-
view
|
155
|
-
override
|
156
|
-
returns (Fee memory stakingFee)
|
157
|
-
{
|
158
|
-
return _instance.getPoolSetup(getNftId()).stakingFee;
|
159
|
-
}
|
160
|
-
|
161
|
-
function getPerformanceFee()
|
162
|
-
external
|
163
|
-
view
|
164
|
-
override
|
165
|
-
returns (Fee memory performanceFee)
|
166
|
-
{
|
167
|
-
return _instance.getPoolSetup(getNftId()).performanceFee;
|
168
|
-
}
|
169
|
-
|
170
|
-
// from registerable
|
171
|
-
function getType() public pure override returns (ObjectType) {
|
172
|
-
return POOL();
|
173
|
-
}
|
174
259
|
}
|
@@ -1,42 +1,164 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
4
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
5
9
|
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
10
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
7
11
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
12
|
+
import {ReferralId} from "../types/Referral.sol";
|
13
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
14
|
+
import {StateId} from "../types/StateId.sol";
|
8
15
|
import {Timestamp} from "../types/Timestamp.sol";
|
9
|
-
import {Fee} from "../types/Fee.sol";
|
16
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
17
|
import {BaseComponent} from "./BaseComponent.sol";
|
11
18
|
|
19
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
20
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
|
+
import {Registerable} from "../shared/Registerable.sol";
|
22
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
23
|
+
|
24
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
26
|
+
import {Pool} from "../components/Pool.sol";
|
27
|
+
|
28
|
+
import {zeroNftId} from "../types/NftId.sol";
|
29
|
+
|
12
30
|
contract Product is BaseComponent, IProductComponent {
|
13
|
-
|
14
|
-
|
31
|
+
using NftIdLib for NftId;
|
32
|
+
|
33
|
+
IProductService internal _productService;
|
34
|
+
Pool internal _pool;
|
35
|
+
address internal _distribution;
|
36
|
+
Fee internal _initialProductFee;
|
37
|
+
Fee internal _initialProcessingFee;
|
38
|
+
|
39
|
+
NftId internal _poolNftId;
|
40
|
+
NftId internal _distributionNftId;
|
15
41
|
|
16
42
|
constructor(
|
17
43
|
address registry,
|
18
44
|
NftId instanceNftid,
|
19
45
|
address token,
|
20
|
-
|
21
|
-
|
46
|
+
bool isInterceptor,
|
47
|
+
address pool,
|
48
|
+
address distribution,
|
49
|
+
Fee memory productFee,
|
50
|
+
Fee memory processingFee,
|
51
|
+
address initialOwner
|
52
|
+
) BaseComponent(registry, instanceNftid, zeroNftId(), token, PRODUCT(), isInterceptor, initialOwner) {
|
22
53
|
// TODO add validation
|
23
|
-
|
24
|
-
|
54
|
+
// TODO: reactivate when services are available again
|
55
|
+
// _productService = _instance.getProductService();
|
56
|
+
_pool = Pool(pool);
|
57
|
+
_distribution = distribution;
|
58
|
+
_initialProductFee = productFee;
|
59
|
+
_initialProcessingFee = processingFee;
|
60
|
+
|
61
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
62
|
+
_distributionNftId = getRegistry().getNftId(_distribution);
|
63
|
+
|
64
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
function calculatePremium(
|
69
|
+
uint256 sumInsuredAmount,
|
70
|
+
RiskId riskId,
|
71
|
+
uint256 lifetime,
|
72
|
+
bytes memory applicationData,
|
73
|
+
ReferralId referralId,
|
74
|
+
NftId bundleNftId
|
75
|
+
)
|
76
|
+
external
|
77
|
+
view
|
78
|
+
override
|
79
|
+
returns (uint256 premiumAmount)
|
80
|
+
{
|
81
|
+
(premiumAmount,,,,) = _productService.calculatePremium(
|
82
|
+
riskId,
|
83
|
+
sumInsuredAmount,
|
84
|
+
lifetime,
|
85
|
+
applicationData,
|
86
|
+
bundleNftId,
|
87
|
+
referralId
|
88
|
+
);
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
function calculateNetPremium(
|
93
|
+
uint256 sumInsuredAmount,
|
94
|
+
RiskId riskId,
|
95
|
+
uint256 lifetime,
|
96
|
+
bytes memory applicationData
|
97
|
+
)
|
98
|
+
external
|
99
|
+
view
|
100
|
+
virtual override
|
101
|
+
returns (uint256 netPremiumAmount)
|
102
|
+
{
|
103
|
+
// default 10% of sum insured
|
104
|
+
return sumInsuredAmount / 10;
|
105
|
+
}
|
106
|
+
|
107
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
108
|
+
return RiskIdLib.toRiskId(riskName);
|
109
|
+
}
|
110
|
+
|
111
|
+
function _createRisk(
|
112
|
+
RiskId id,
|
113
|
+
bytes memory data
|
114
|
+
) internal {
|
115
|
+
_productService.createRisk(
|
116
|
+
id,
|
117
|
+
data
|
118
|
+
);
|
119
|
+
}
|
120
|
+
|
121
|
+
function _setRiskInfo(
|
122
|
+
RiskId id,
|
123
|
+
IRisk.RiskInfo memory info
|
124
|
+
) internal {
|
125
|
+
_productService.setRiskInfo(
|
126
|
+
id,
|
127
|
+
info
|
128
|
+
);
|
129
|
+
}
|
130
|
+
|
131
|
+
function _updateRiskState(
|
132
|
+
RiskId id,
|
133
|
+
StateId state
|
134
|
+
) internal {
|
135
|
+
_productService.updateRiskState(
|
136
|
+
id,
|
137
|
+
state
|
138
|
+
);
|
139
|
+
}
|
140
|
+
|
141
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
142
|
+
return _instance.getInstanceReader().getRiskInfo(id);
|
25
143
|
}
|
26
144
|
|
27
145
|
function _createApplication(
|
28
146
|
address applicationOwner,
|
147
|
+
RiskId riskId,
|
29
148
|
uint256 sumInsuredAmount,
|
30
|
-
uint256 premiumAmount,
|
31
149
|
uint256 lifetime,
|
32
|
-
|
150
|
+
bytes memory applicationData,
|
151
|
+
NftId bundleNftId,
|
152
|
+
ReferralId referralId
|
33
153
|
) internal returns (NftId nftId) {
|
34
154
|
nftId = _productService.createApplication(
|
35
155
|
applicationOwner,
|
156
|
+
riskId,
|
36
157
|
sumInsuredAmount,
|
37
|
-
premiumAmount,
|
38
158
|
lifetime,
|
39
|
-
|
159
|
+
applicationData,
|
160
|
+
bundleNftId,
|
161
|
+
referralId
|
40
162
|
);
|
41
163
|
}
|
42
164
|
|
@@ -76,42 +198,100 @@ contract Product is BaseComponent, IProductComponent {
|
|
76
198
|
}
|
77
199
|
|
78
200
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
79
|
-
return
|
201
|
+
return getRegistry().getNftId(address(_pool));
|
202
|
+
}
|
203
|
+
|
204
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
205
|
+
return getRegistry().getNftId(_distribution);
|
80
206
|
}
|
81
207
|
|
82
208
|
// from product component
|
83
209
|
function setFees(
|
84
|
-
Fee memory
|
210
|
+
Fee memory productFee,
|
85
211
|
Fee memory processingFee
|
86
212
|
)
|
87
213
|
external
|
88
214
|
onlyOwner
|
89
215
|
override
|
90
216
|
{
|
91
|
-
_productService.setFees(
|
217
|
+
_productService.setFees(productFee, processingFee);
|
92
218
|
}
|
93
219
|
|
220
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
221
|
+
if (getNftId().eq(zeroNftId())) {
|
222
|
+
return ISetup.ProductSetupInfo(
|
223
|
+
_token,
|
224
|
+
TokenHandler(address(0)),
|
225
|
+
_distributionNftId,
|
226
|
+
_poolNftId,
|
227
|
+
FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
|
228
|
+
_initialProductFee,
|
229
|
+
_initialProcessingFee,
|
230
|
+
FeeLib.zeroFee(), //_instance.getPoolFee(_poolNftId)
|
231
|
+
FeeLib.zeroFee(), //_instance.getStakingFee(_poolNftId)
|
232
|
+
FeeLib.zeroFee() //_instance.getPerformanceFee(_poolNftId)
|
233
|
+
);
|
234
|
+
}
|
94
235
|
|
95
|
-
|
96
|
-
|
97
|
-
view
|
98
|
-
override
|
99
|
-
returns (Fee memory policyFee)
|
100
|
-
{
|
101
|
-
return _instance.getProductSetup(getNftId()).policyFee;
|
236
|
+
InstanceReader reader = _instance.getInstanceReader();
|
237
|
+
return reader.getProductSetupInfo(getNftId());
|
102
238
|
}
|
103
239
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
240
|
+
// from IRegisterable
|
241
|
+
|
242
|
+
// TODO used only once, occupies space
|
243
|
+
function getInitialInfo()
|
244
|
+
public
|
245
|
+
view
|
246
|
+
override (IRegisterable, Registerable)
|
247
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
109
248
|
{
|
110
|
-
|
111
|
-
|
249
|
+
// from Registerable
|
250
|
+
(
|
251
|
+
IRegistry.ObjectInfo memory productInfo,
|
252
|
+
bytes memory data
|
253
|
+
) = super.getInitialInfo();
|
254
|
+
|
255
|
+
// TODO read pool & distribution fees
|
256
|
+
// 1) from pool -> the only option -> pool must be registered first?
|
257
|
+
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
258
|
+
// checks are done in registryProduct() where THIS function is called
|
259
|
+
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
260
|
+
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
261
|
+
|
262
|
+
// from PoolComponent
|
263
|
+
(
|
264
|
+
IRegistry.ObjectInfo memory poolInfo,
|
265
|
+
bytes memory poolData
|
266
|
+
) = _pool.getInitialInfo();
|
112
267
|
|
113
|
-
|
114
|
-
|
115
|
-
|
268
|
+
(
|
269
|
+
/*IPool.PoolInfo memory info*/,
|
270
|
+
/*address wallet*/,
|
271
|
+
/*IERC20Metadata token*/,
|
272
|
+
Fee memory initialPoolFee,
|
273
|
+
Fee memory initialStakingFee,
|
274
|
+
Fee memory initialPerformanceFee
|
275
|
+
) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
276
|
+
|
277
|
+
// TODO from DistributionComponent
|
278
|
+
|
279
|
+
return (
|
280
|
+
productInfo,
|
281
|
+
abi.encode(
|
282
|
+
ISetup.ProductSetupInfo(
|
283
|
+
_token,
|
284
|
+
TokenHandler(address(0)),
|
285
|
+
_distributionNftId,
|
286
|
+
_poolNftId,
|
287
|
+
FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
|
288
|
+
_initialProductFee,
|
289
|
+
_initialProcessingFee,
|
290
|
+
initialPoolFee,
|
291
|
+
initialStakingFee,
|
292
|
+
initialPerformanceFee
|
293
|
+
)
|
294
|
+
)
|
295
|
+
);
|
116
296
|
}
|
117
297
|
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract Cloner {
|
8
|
+
|
9
|
+
Mock1 public mock1;
|
10
|
+
Mock2 public mock2;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
mock1 = new Mock1();
|
14
|
+
mock2 = new Mock2();
|
15
|
+
}
|
16
|
+
|
17
|
+
function createClone(address master)
|
18
|
+
external
|
19
|
+
returns (address cloned)
|
20
|
+
{
|
21
|
+
cloned = Clones.clone(master);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
contract Mock1 {
|
27
|
+
function getValue() external virtual view returns (uint256) {
|
28
|
+
return 42;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
contract Mock2 is Mock1 {
|
33
|
+
uint256 internal _value;
|
34
|
+
|
35
|
+
constructor() {
|
36
|
+
_value = 42;
|
37
|
+
}
|
38
|
+
|
39
|
+
function setValue(uint256 value) external virtual {
|
40
|
+
_value = value;
|
41
|
+
}
|
42
|
+
|
43
|
+
function getValue() external virtual override view returns (uint256) {
|
44
|
+
return _value;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
@@ -0,0 +1,122 @@
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
2
|
+
// OpenZeppelin Contracts (last updated v5.0.0) (access/manager/AccessManaged.sol)
|
3
|
+
|
4
|
+
pragma solidity ^0.8.20;
|
5
|
+
|
6
|
+
import {AuthorityUtils} from "@openzeppelin/contracts/access/manager/AuthorityUtils.sol";
|
7
|
+
import {Context} from "@openzeppelin/contracts/utils/Context.sol";
|
8
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
9
|
+
import {IAuthority} from "@openzeppelin/contracts/access/manager/IAuthority.sol";
|
10
|
+
|
11
|
+
import {IAccessManagerSimple} from "./IAccessManagerSimple.sol";
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @dev This contract module makes available a {restricted} modifier. Functions decorated with this modifier will be
|
15
|
+
* permissioned according to an "authority": a contract like {AccessManager} that follows the {IAuthority} interface,
|
16
|
+
* implementing a policy that allows certain callers to access certain functions.
|
17
|
+
*
|
18
|
+
* IMPORTANT: The `restricted` modifier should never be used on `internal` functions, judiciously used in `public`
|
19
|
+
* functions, and ideally only used in `external` functions. See {restricted}.
|
20
|
+
*/
|
21
|
+
abstract contract AccessManagedSimple is Context, IAccessManaged {
|
22
|
+
bool private _initialized;
|
23
|
+
address private _authority;
|
24
|
+
|
25
|
+
bool private _consumingSchedule;
|
26
|
+
|
27
|
+
/**
|
28
|
+
* @dev Initializes the contract connected to an initial authority.
|
29
|
+
*/
|
30
|
+
constructor(address initialAuthority) {
|
31
|
+
initialize(initialAuthority);
|
32
|
+
}
|
33
|
+
|
34
|
+
function initialize(address initialAuthority) public {
|
35
|
+
require(!_initialized, "AccessManaged: already initialized");
|
36
|
+
_setAuthority(initialAuthority);
|
37
|
+
_initialized = true;
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
/**
|
42
|
+
* @dev Restricts access to a function as defined by the connected Authority for this contract and the
|
43
|
+
* caller and selector of the function that entered the contract.
|
44
|
+
*
|
45
|
+
* [IMPORTANT]
|
46
|
+
* ====
|
47
|
+
* In general, this modifier should only be used on `external` functions. It is okay to use it on `public`
|
48
|
+
* functions that are used as external entry points and are not called internally. Unless you know what you're
|
49
|
+
* doing, it should never be used on `internal` functions. Failure to follow these rules can have critical security
|
50
|
+
* implications! This is because the permissions are determined by the function that entered the contract, i.e. the
|
51
|
+
* function at the bottom of the call stack, and not the function where the modifier is visible in the source code.
|
52
|
+
* ====
|
53
|
+
*
|
54
|
+
* [WARNING]
|
55
|
+
* ====
|
56
|
+
* Avoid adding this modifier to the https://docs.soliditylang.org/en/v0.8.20/contracts.html#receive-ether-function[`receive()`]
|
57
|
+
* function or the https://docs.soliditylang.org/en/v0.8.20/contracts.html#fallback-function[`fallback()`]. These
|
58
|
+
* functions are the only execution paths where a function selector cannot be unambiguosly determined from the calldata
|
59
|
+
* since the selector defaults to `0x00000000` in the `receive()` function and similarly in the `fallback()` function
|
60
|
+
* if no calldata is provided. (See {_checkCanCall}).
|
61
|
+
*
|
62
|
+
* The `receive()` function will always panic whereas the `fallback()` may panic depending on the calldata length.
|
63
|
+
* ====
|
64
|
+
*/
|
65
|
+
modifier restricted() {
|
66
|
+
_checkCanCall(_msgSender(), _msgData());
|
67
|
+
_;
|
68
|
+
}
|
69
|
+
|
70
|
+
/// @inheritdoc IAccessManaged
|
71
|
+
function authority() public view virtual returns (address) {
|
72
|
+
return _authority;
|
73
|
+
}
|
74
|
+
|
75
|
+
/// @inheritdoc IAccessManaged
|
76
|
+
function setAuthority(address newAuthority) public virtual {
|
77
|
+
address caller = _msgSender();
|
78
|
+
if (caller != authority()) {
|
79
|
+
revert AccessManagedUnauthorized(caller);
|
80
|
+
}
|
81
|
+
if (newAuthority.code.length == 0) {
|
82
|
+
revert AccessManagedInvalidAuthority(newAuthority);
|
83
|
+
}
|
84
|
+
_setAuthority(newAuthority);
|
85
|
+
}
|
86
|
+
|
87
|
+
/// @inheritdoc IAccessManaged
|
88
|
+
function isConsumingScheduledOp() public view returns (bytes4) {
|
89
|
+
return _consumingSchedule ? this.isConsumingScheduledOp.selector : bytes4(0);
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* @dev Transfers control to a new authority. Internal function with no access restriction. Allows bypassing the
|
94
|
+
* permissions set by the current authority.
|
95
|
+
*/
|
96
|
+
function _setAuthority(address newAuthority) internal virtual {
|
97
|
+
_authority = newAuthority;
|
98
|
+
emit AuthorityUpdated(newAuthority);
|
99
|
+
}
|
100
|
+
|
101
|
+
/**
|
102
|
+
* @dev Reverts if the caller is not allowed to call the function identified by a selector. Panics if the calldata
|
103
|
+
* is less than 4 bytes long.
|
104
|
+
*/
|
105
|
+
function _checkCanCall(address caller, bytes calldata data) internal virtual {
|
106
|
+
(bool immediate, uint32 delay) = AuthorityUtils.canCallWithDelay(
|
107
|
+
authority(),
|
108
|
+
caller,
|
109
|
+
address(this),
|
110
|
+
bytes4(data[0:4])
|
111
|
+
);
|
112
|
+
if (!immediate) {
|
113
|
+
if (delay > 0) {
|
114
|
+
_consumingSchedule = true;
|
115
|
+
IAccessManagerSimple(authority()).consumeScheduledOp(caller, data);
|
116
|
+
_consumingSchedule = false;
|
117
|
+
} else {
|
118
|
+
revert AccessManagedUnauthorized(caller);
|
119
|
+
}
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|