@etherisc/gif-next 0.0.2-6f2f76e-746 → 0.0.2-716a895-659
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 +73 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +166 -39
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +557 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +119 -39
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +177 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +108 -156
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +67 -139
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +417 -88
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +360 -51
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +847 -615
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1107 -697
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +225 -57
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +175 -54
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +544 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/compensation/ICompensation.sol/ICompensation.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +221 -53
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -51
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -51
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +29 -14
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +28 -13
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +326 -221
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +326 -221
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +400 -64
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +630 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +176 -74
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → 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/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +335 -53
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +471 -71
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
- 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 +1245 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +490 -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/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/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/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +557 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +417 -88
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +407 -56
- 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 +38 -4
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +267 -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 +89 -25
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
- 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/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +55 -11
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- 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/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -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 +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +39 -8
- 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 +11 -21
- package/contracts/components/Distribution.sol +155 -0
- package/contracts/components/IBaseComponent.sol +1 -1
- package/contracts/components/IDistributionComponent.sol +46 -0
- package/contracts/components/IPoolComponent.sol +15 -8
- package/contracts/components/IProductComponent.sol +26 -8
- package/contracts/components/Pool.sol +99 -27
- package/contracts/components/Product.sol +204 -22
- package/contracts/instance/IInstance.sol +17 -16
- package/contracts/instance/Instance.sol +35 -14
- package/contracts/instance/{service → base}/ComponentServiceBase.sol +13 -5
- package/contracts/instance/base/IInstanceBase.sol +23 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/InstanceBase.sol +89 -0
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
- package/contracts/instance/base/ModuleBase.sol +57 -0
- package/contracts/instance/base/ServiceBase.sol +44 -0
- package/contracts/instance/module/access/Access.sol +6 -6
- package/contracts/instance/module/bundle/BundleModule.sol +24 -118
- package/contracts/instance/module/bundle/IBundle.sol +9 -9
- package/contracts/instance/module/component/ComponentModule.sol +31 -63
- package/contracts/instance/module/component/IComponent.sol +6 -31
- package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
- package/contracts/instance/module/distribution/IDistribution.sol +10 -0
- package/contracts/instance/module/policy/IPolicy.sol +13 -10
- package/contracts/instance/module/policy/PolicyModule.sol +33 -26
- package/contracts/instance/module/pool/IPoolModule.sol +4 -4
- package/contracts/instance/module/pool/PoolModule.sol +23 -15
- package/contracts/instance/module/risk/IRisk.sol +18 -2
- package/contracts/instance/module/risk/RiskModule.sol +56 -2
- package/contracts/instance/module/treasury/ITreasury.sol +31 -50
- package/contracts/instance/module/treasury/TokenHandler.sol +1 -1
- package/contracts/instance/module/treasury/TreasuryModule.sol +67 -88
- package/contracts/instance/service/ComponentOwnerService.sol +234 -93
- package/contracts/instance/service/DistributionService.sol +54 -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/instance/service/PoolService.sol +50 -24
- package/contracts/instance/service/ProductService.sol +249 -94
- package/contracts/registry/ChainNft.sol +42 -14
- package/contracts/registry/IChainNft.sol +2 -1
- package/contracts/registry/IRegistry.sol +27 -27
- package/contracts/registry/IRegistryService.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +314 -269
- package/contracts/registry/RegistryService.sol +441 -0
- package/contracts/registry/RegistryServiceManager.sol +63 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- 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/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +112 -54
- package/contracts/test/TestDistribution.sol +22 -0
- package/contracts/test/TestPool.sol +7 -2
- package/contracts/test/TestProduct.sol +37 -7
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +6 -12
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/Fee.sol +8 -3
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +16 -1
- package/contracts/types/ObjectType.sol +24 -8
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +18 -9
- package/contracts/types/StateId.sol +7 -1
- package/contracts/types/UFixed.sol +22 -19
- package/contracts/types/Version.sol +9 -0
- package/package.json +1 -1
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- 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/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- 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/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IServiceLinked.sol +0 -12
- package/contracts/instance/InstanceBase.sol +0 -71
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/service/ServiceBase.sol +0 -39
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -41,6 +41,25 @@
|
|
41
41
|
"stateMutability": "pure",
|
42
42
|
"type": "function"
|
43
43
|
},
|
44
|
+
{
|
45
|
+
"inputs": [
|
46
|
+
{
|
47
|
+
"internalType": "Version",
|
48
|
+
"name": "version",
|
49
|
+
"type": "uint24"
|
50
|
+
}
|
51
|
+
],
|
52
|
+
"name": "toUint64",
|
53
|
+
"outputs": [
|
54
|
+
{
|
55
|
+
"internalType": "uint64",
|
56
|
+
"name": "",
|
57
|
+
"type": "uint64"
|
58
|
+
}
|
59
|
+
],
|
60
|
+
"stateMutability": "pure",
|
61
|
+
"type": "function"
|
62
|
+
},
|
44
63
|
{
|
45
64
|
"inputs": [
|
46
65
|
{
|
@@ -70,6 +89,25 @@
|
|
70
89
|
"stateMutability": "pure",
|
71
90
|
"type": "function"
|
72
91
|
},
|
92
|
+
{
|
93
|
+
"inputs": [
|
94
|
+
{
|
95
|
+
"internalType": "uint64",
|
96
|
+
"name": "versionNumber",
|
97
|
+
"type": "uint64"
|
98
|
+
}
|
99
|
+
],
|
100
|
+
"name": "toVersion",
|
101
|
+
"outputs": [
|
102
|
+
{
|
103
|
+
"internalType": "Version",
|
104
|
+
"name": "",
|
105
|
+
"type": "uint24"
|
106
|
+
}
|
107
|
+
],
|
108
|
+
"stateMutability": "pure",
|
109
|
+
"type": "function"
|
110
|
+
},
|
73
111
|
{
|
74
112
|
"inputs": [
|
75
113
|
{
|
@@ -132,8 +170,8 @@
|
|
132
170
|
"type": "function"
|
133
171
|
}
|
134
172
|
],
|
135
|
-
"bytecode": "
|
136
|
-
"deployedBytecode": "
|
173
|
+
"bytecode": "0x61039161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea2646970667358221220e42f77cfda39708b26a423d08fb99d9e3d65c337357ab7291eb4fdfec94256eb64736f6c63430008140033",
|
174
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea2646970667358221220e42f77cfda39708b26a423d08fb99d9e3d65c337357ab7291eb4fdfec94256eb64736f6c63430008140033",
|
137
175
|
"linkReferences": {},
|
138
176
|
"deployedLinkReferences": {}
|
139
177
|
}
|
@@ -23,8 +23,8 @@
|
|
23
23
|
"type": "function"
|
24
24
|
}
|
25
25
|
],
|
26
|
-
"bytecode": "
|
27
|
-
"deployedBytecode": "
|
26
|
+
"bytecode": "0x60b9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea264697066735822122028c6578af7cf354c26921be53c7bafd817914c3fa380a53d5f0e3935a1b47c8b64736f6c63430008140033",
|
27
|
+
"deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea264697066735822122028c6578af7cf354c26921be53c7bafd817914c3fa380a53d5f0e3935a1b47c8b64736f6c63430008140033",
|
28
28
|
"linkReferences": {},
|
29
29
|
"deployedLinkReferences": {}
|
30
30
|
}
|
@@ -1,20 +1,18 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
7
6
|
import {Registerable} from "../shared/Registerable.sol";
|
8
7
|
|
9
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
10
9
|
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IServiceLinked} from "../instance/IServiceLinked.sol";
|
12
10
|
|
13
11
|
import {IInstance} from "../instance/IInstance.sol";
|
14
|
-
import {IComponent, IComponentModule} from "../instance/module/component/IComponent.sol";
|
15
12
|
import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
|
16
13
|
import {IBaseComponent} from "./IBaseComponent.sol";
|
17
14
|
import {NftId} from "../types/NftId.sol";
|
15
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
18
16
|
|
19
17
|
abstract contract BaseComponent is
|
20
18
|
Registerable,
|
@@ -30,11 +28,16 @@ abstract contract BaseComponent is
|
|
30
28
|
constructor(
|
31
29
|
address registry,
|
32
30
|
NftId instanceNftId,
|
33
|
-
address token
|
31
|
+
address token,
|
32
|
+
ObjectType componentType,
|
33
|
+
bool isInterceptor,
|
34
|
+
address initialOwner
|
34
35
|
)
|
35
|
-
Registerable(registry, instanceNftId)
|
36
36
|
{
|
37
|
-
|
37
|
+
bytes memory data = "";
|
38
|
+
_initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, data);
|
39
|
+
|
40
|
+
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
38
41
|
_instance = IInstance(instanceInfo.objectAddress);
|
39
42
|
require(
|
40
43
|
_instance.supportsInterface(type(IInstance).interfaceId),
|
@@ -44,21 +47,8 @@ abstract contract BaseComponent is
|
|
44
47
|
_componentOwnerService = _instance.getComponentOwnerService();
|
45
48
|
_wallet = address(this);
|
46
49
|
_token = IERC20Metadata(token);
|
47
|
-
}
|
48
|
-
|
49
|
-
// from registerable
|
50
|
-
function register() public override(IRegisterable, Registerable) returns (NftId componentId) {
|
51
|
-
require(msg.sender == getOwner(), "");
|
52
|
-
require(
|
53
|
-
address(_registry) != address(0),
|
54
|
-
"ERROR:COB-001:REGISTRY_ZERO"
|
55
|
-
);
|
56
|
-
require(
|
57
|
-
_registry.isRegistered(address(_instance)),
|
58
|
-
"ERROR:COB:INSTANCE_NOT_REGISTERED"
|
59
|
-
);
|
60
50
|
|
61
|
-
|
51
|
+
_registerInterface(type(IBaseComponent).interfaceId);
|
62
52
|
}
|
63
53
|
|
64
54
|
// from component contract
|
@@ -0,0 +1,155 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {DISTRIBUTION} from "../types/ObjectType.sol";
|
5
|
+
import {IDistributionService} from "../instance/service/IDistributionService.sol";
|
6
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
+
import {NftId} from "../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
9
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
|
+
import {BaseComponent} from "./BaseComponent.sol";
|
11
|
+
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
12
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
|
+
import {Registerable} from "../shared/Registerable.sol";
|
15
|
+
|
16
|
+
contract Distribution is
|
17
|
+
BaseComponent,
|
18
|
+
IDistributionComponent
|
19
|
+
{
|
20
|
+
|
21
|
+
Fee internal _initialDistributionFee;
|
22
|
+
bool internal _isVerifying;
|
23
|
+
|
24
|
+
IDistributionService private _distributionService;
|
25
|
+
IProductService private _productService;
|
26
|
+
|
27
|
+
modifier onlyProductService() {
|
28
|
+
require(
|
29
|
+
msg.sender == address(_productService),
|
30
|
+
"ERROR:POL-002:NOT_PRODUCT_SERVICE");
|
31
|
+
_;
|
32
|
+
}
|
33
|
+
|
34
|
+
constructor(
|
35
|
+
address registry,
|
36
|
+
NftId instanceNftId,
|
37
|
+
// TODO refactor into tokenNftId
|
38
|
+
address token,
|
39
|
+
bool verifying,
|
40
|
+
Fee memory distributionFee,
|
41
|
+
address initialOwner
|
42
|
+
)
|
43
|
+
BaseComponent(registry, instanceNftId, token, DISTRIBUTION(), true, initialOwner)
|
44
|
+
{
|
45
|
+
_isVerifying = verifying;
|
46
|
+
_initialDistributionFee = distributionFee;
|
47
|
+
|
48
|
+
_distributionService = _instance.getDistributionService();
|
49
|
+
_productService = _instance.getProductService();
|
50
|
+
|
51
|
+
_registerInterface(type(IDistributionComponent).interfaceId);
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
function setFees(
|
56
|
+
Fee memory distributionFee
|
57
|
+
)
|
58
|
+
external
|
59
|
+
override
|
60
|
+
{
|
61
|
+
_distributionService.setFees(distributionFee);
|
62
|
+
}
|
63
|
+
|
64
|
+
function calculateFeeAmount(
|
65
|
+
ReferralId referralId,
|
66
|
+
uint256 netPremiumAmount
|
67
|
+
)
|
68
|
+
external
|
69
|
+
view
|
70
|
+
virtual override
|
71
|
+
returns (uint256 feeAmount)
|
72
|
+
{
|
73
|
+
Fee memory fee = getDistributionFee();
|
74
|
+
(feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
function calculateRenewalFeeAmount(
|
79
|
+
ReferralId referralId,
|
80
|
+
uint256 netPremiumAmount
|
81
|
+
)
|
82
|
+
external
|
83
|
+
view
|
84
|
+
virtual override
|
85
|
+
returns (uint256 feeAmount)
|
86
|
+
{
|
87
|
+
// default is no fees
|
88
|
+
return 0 * netPremiumAmount;
|
89
|
+
}
|
90
|
+
|
91
|
+
function processSale(
|
92
|
+
ReferralId referralId,
|
93
|
+
uint256 feeAmount
|
94
|
+
)
|
95
|
+
external
|
96
|
+
onlyProductService
|
97
|
+
virtual override
|
98
|
+
{
|
99
|
+
// default is no action
|
100
|
+
}
|
101
|
+
|
102
|
+
function processRenewal(
|
103
|
+
ReferralId referralId,
|
104
|
+
uint256 feeAmount
|
105
|
+
)
|
106
|
+
external
|
107
|
+
onlyProductService
|
108
|
+
virtual override
|
109
|
+
{
|
110
|
+
// default is no action
|
111
|
+
}
|
112
|
+
|
113
|
+
function referralIsValid(ReferralId referralId) external view returns (bool isValid) {
|
114
|
+
// default is invalid
|
115
|
+
return false;
|
116
|
+
}
|
117
|
+
|
118
|
+
/// @dev default distribution fee, ie when not using any valid referralId
|
119
|
+
function getDistributionFee() public view returns (Fee memory distributionFee) {
|
120
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
121
|
+
if (_instance.hasTreasuryInfo(productNftId)) {
|
122
|
+
return _instance.getTreasuryInfo(productNftId).distributionFee;
|
123
|
+
} else {
|
124
|
+
return _initialDistributionFee;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
|
129
|
+
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
130
|
+
function isVerifying() external view returns (bool verifying) {
|
131
|
+
return _isVerifying;
|
132
|
+
}
|
133
|
+
|
134
|
+
// from IRegisterable
|
135
|
+
|
136
|
+
function getInitialInfo()
|
137
|
+
public
|
138
|
+
view
|
139
|
+
override (IRegisterable, Registerable)
|
140
|
+
returns(IRegistry.ObjectInfo memory, bytes memory)
|
141
|
+
{
|
142
|
+
(
|
143
|
+
IRegistry.ObjectInfo memory info,
|
144
|
+
bytes memory data
|
145
|
+
) = super.getInitialInfo();
|
146
|
+
|
147
|
+
return (
|
148
|
+
info,
|
149
|
+
abi.encode(
|
150
|
+
_initialDistributionFee,
|
151
|
+
_isVerifying
|
152
|
+
)
|
153
|
+
);
|
154
|
+
}
|
155
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Fee} from "../types/Fee.sol";
|
5
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
6
|
+
import {NftId} from "../types/NftId.sol";
|
7
|
+
|
8
|
+
interface IDistributionComponent {
|
9
|
+
|
10
|
+
function setFees(
|
11
|
+
Fee memory distributionFee
|
12
|
+
) external;
|
13
|
+
|
14
|
+
function calculateFeeAmount(
|
15
|
+
ReferralId referralId,
|
16
|
+
uint256 netPremiumAmount
|
17
|
+
) external view returns (uint256 feeAmount);
|
18
|
+
|
19
|
+
function calculateRenewalFeeAmount(
|
20
|
+
ReferralId referralId,
|
21
|
+
uint256 netPremiumAmount
|
22
|
+
) external view returns (uint256 feeAmount);
|
23
|
+
|
24
|
+
/// @dev callback from product service when selling a policy for a specific referralId
|
25
|
+
/// the used referral id and the collected fee are provided as parameters
|
26
|
+
/// the component implementation can then process this information accordingly
|
27
|
+
function processSale(
|
28
|
+
ReferralId referralId,
|
29
|
+
uint256 feeAmount
|
30
|
+
) external;
|
31
|
+
|
32
|
+
/// @dev callback from product service when a policy is renews for a specific referralId
|
33
|
+
function processRenewal(
|
34
|
+
ReferralId referralId,
|
35
|
+
uint256 feeAmount
|
36
|
+
) external;
|
37
|
+
|
38
|
+
/// @dev returns true iff the referral id is valid
|
39
|
+
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
40
|
+
|
41
|
+
/// @dev default distribution fee, ie when not using any valid referralId
|
42
|
+
function getDistributionFee() external view returns (Fee memory distributionFee);
|
43
|
+
|
44
|
+
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
45
|
+
function isVerifying() external view returns (bool verifying);
|
46
|
+
}
|
@@ -1,24 +1,35 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {NftId} from "../types/NftId.sol";
|
5
5
|
import {Fee} from "../types/Fee.sol";
|
6
6
|
import {UFixed} from "../types/UFixed.sol";
|
7
|
-
import {IBaseComponent} from "./IBaseComponent.sol";
|
8
7
|
|
9
|
-
interface IPoolComponent
|
8
|
+
interface IPoolComponent {
|
10
9
|
|
11
10
|
event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
|
12
11
|
|
12
|
+
function setFees(
|
13
|
+
Fee memory poolFee,
|
14
|
+
Fee memory stakingFee,
|
15
|
+
Fee memory performanceFee
|
16
|
+
) external;
|
17
|
+
|
13
18
|
/**
|
14
19
|
* @dev creates a new bundle for this pool.
|
15
20
|
*/
|
16
21
|
function createBundle(
|
22
|
+
Fee memory fee,
|
17
23
|
uint256 initialAmount,
|
18
24
|
uint256 lifetime,
|
19
25
|
bytes memory filter
|
20
26
|
) external returns(NftId bundleNftId);
|
21
27
|
|
28
|
+
function setBundleFee(
|
29
|
+
NftId policyNftId,
|
30
|
+
Fee memory fee
|
31
|
+
) external;
|
32
|
+
|
22
33
|
/**
|
23
34
|
* @dev this is a callback function that is called by the product service when underwriting a policy.
|
24
35
|
* the pool has the option to check the details and object to underwriting by reverting.
|
@@ -48,10 +59,6 @@ interface IPoolComponent is IBaseComponent {
|
|
48
59
|
|
49
60
|
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
50
61
|
|
51
|
-
function
|
62
|
+
function getFees() external view returns (Fee memory poolFee, Fee memory stakingFee, Fee memory performanceFee);
|
52
63
|
|
53
|
-
function getPerformanceFee()
|
54
|
-
external
|
55
|
-
view
|
56
|
-
returns (Fee memory performanceFee);
|
57
64
|
}
|
@@ -1,19 +1,37 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "../types/NftId.sol";
|
5
4
|
import {Fee} from "../types/Fee.sol";
|
6
|
-
import {
|
5
|
+
import {NftId} from "../types/NftId.sol";
|
6
|
+
import {ReferralId} from "../types/ReferralId.sol";
|
7
|
+
import {RiskId} from "../types/RiskId.sol";
|
8
|
+
|
9
|
+
interface IProductComponent {
|
7
10
|
|
8
|
-
interface IProductComponent is IBaseComponent {
|
9
11
|
function setFees(
|
10
|
-
Fee memory
|
12
|
+
Fee memory productFee,
|
11
13
|
Fee memory processingFee
|
12
14
|
) external;
|
13
15
|
|
14
|
-
function
|
15
|
-
|
16
|
-
|
16
|
+
function calculatePremium(
|
17
|
+
uint256 sumInsuredAmount,
|
18
|
+
RiskId riskId,
|
19
|
+
uint256 lifetime,
|
20
|
+
bytes memory applicationData,
|
21
|
+
ReferralId referralId,
|
22
|
+
NftId bundleNftId
|
23
|
+
) external view returns (uint256 premiumAmount);
|
17
24
|
|
25
|
+
function calculateNetPremium(
|
26
|
+
uint256 sumInsuredAmount,
|
27
|
+
RiskId riskId,
|
28
|
+
uint256 lifetime,
|
29
|
+
bytes memory applicationData
|
30
|
+
) external view returns (uint256 netPremiumAmount);
|
31
|
+
|
32
|
+
function getProductFee() external view returns (Fee memory productFee);
|
18
33
|
function getProcessingFee() external view returns (Fee memory processingFee);
|
34
|
+
|
35
|
+
function getPoolNftId() external view returns (NftId poolNftId);
|
36
|
+
function getDistributionNftId() external view returns (NftId distributionNftId);
|
19
37
|
}
|
@@ -1,5 +1,5 @@
|
|
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";
|
@@ -10,11 +10,22 @@ import {UFixed} from "../types/UFixed.sol";
|
|
10
10
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
11
|
import {BaseComponent} from "./BaseComponent.sol";
|
12
12
|
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
15
|
+
import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
|
16
|
+
|
17
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
18
|
+
import {Registerable} from "../shared/Registerable.sol";
|
19
|
+
|
13
20
|
contract Pool is BaseComponent, IPoolComponent {
|
14
21
|
|
15
22
|
bool internal _isVerifying;
|
16
23
|
UFixed internal _collateralizationLevel;
|
17
24
|
|
25
|
+
Fee internal _initialPoolFee;
|
26
|
+
Fee internal _initialStakingFee;
|
27
|
+
Fee internal _initialPerformanceFee;
|
28
|
+
|
18
29
|
// may be used to interact with instance by derived contracts
|
19
30
|
IPoolService internal _poolService;
|
20
31
|
|
@@ -40,20 +51,31 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
40
51
|
NftId instanceNftId,
|
41
52
|
// TODO refactor into tokenNftId
|
42
53
|
address token,
|
54
|
+
bool isInterceptor,
|
43
55
|
bool verifying,
|
44
|
-
UFixed collateralizationLevel
|
56
|
+
UFixed collateralizationLevel,
|
57
|
+
Fee memory poolFee,
|
58
|
+
Fee memory stakingFee,
|
59
|
+
Fee memory performanceFee,
|
60
|
+
address initialOwner
|
45
61
|
)
|
46
|
-
BaseComponent(registry, instanceNftId, token)
|
62
|
+
BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
|
47
63
|
{
|
48
64
|
_isVerifying = verifying;
|
49
65
|
// TODO add validation
|
50
66
|
_collateralizationLevel = collateralizationLevel;
|
67
|
+
_initialPoolFee = poolFee;
|
68
|
+
_initialStakingFee = stakingFee;
|
69
|
+
_initialPerformanceFee = performanceFee;
|
51
70
|
|
52
71
|
_poolService = _instance.getPoolService();
|
53
72
|
_productService = _instance.getProductService();
|
73
|
+
|
74
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
54
75
|
}
|
55
76
|
|
56
77
|
function createBundle(
|
78
|
+
Fee memory fee,
|
57
79
|
uint256 initialAmount,
|
58
80
|
uint256 lifetime,
|
59
81
|
bytes memory filter
|
@@ -65,6 +87,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
65
87
|
address owner = msg.sender;
|
66
88
|
bundleNftId = _poolService.createBundle(
|
67
89
|
owner,
|
90
|
+
fee,
|
68
91
|
initialAmount,
|
69
92
|
lifetime,
|
70
93
|
filter
|
@@ -115,6 +138,77 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
115
138
|
return _collateralizationLevel;
|
116
139
|
}
|
117
140
|
|
141
|
+
function setFees(
|
142
|
+
Fee memory poolFee,
|
143
|
+
Fee memory stakingFee,
|
144
|
+
Fee memory performanceFee
|
145
|
+
)
|
146
|
+
external
|
147
|
+
onlyOwner
|
148
|
+
override
|
149
|
+
{
|
150
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
151
|
+
}
|
152
|
+
|
153
|
+
function setBundleFee(
|
154
|
+
NftId bundleNftId,
|
155
|
+
Fee memory fee
|
156
|
+
)
|
157
|
+
external
|
158
|
+
override
|
159
|
+
// TODO add onlyBundleOwner
|
160
|
+
{
|
161
|
+
_poolService.setBundleFee(bundleNftId, fee);
|
162
|
+
}
|
163
|
+
// TODO delete, call instance instead
|
164
|
+
function getFees()
|
165
|
+
external
|
166
|
+
view
|
167
|
+
override
|
168
|
+
returns (Fee memory, Fee memory, Fee memory)
|
169
|
+
{
|
170
|
+
NftId productNftId = _instance.getProductNftId(getNftId());
|
171
|
+
//if (_instance.hasTreasuryInfo(productNftId)) {
|
172
|
+
ITreasury.TreasuryInfo memory info = _instance.getTreasuryInfo(productNftId);
|
173
|
+
return (info.poolFee, info.stakingFee, info.performanceFee);
|
174
|
+
//} else {
|
175
|
+
// return (_initialPoolFee, _initialStakingFee, _initialPerformanceFee);
|
176
|
+
//}
|
177
|
+
}
|
178
|
+
|
179
|
+
// from IRegisterable
|
180
|
+
|
181
|
+
// TODO used only once, occupies space
|
182
|
+
// TODO do not use super
|
183
|
+
function getInitialInfo()
|
184
|
+
public
|
185
|
+
view
|
186
|
+
override (IRegisterable, Registerable)
|
187
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
188
|
+
{
|
189
|
+
(
|
190
|
+
IRegistry.ObjectInfo memory info,
|
191
|
+
bytes memory data
|
192
|
+
) = super.getInitialInfo();
|
193
|
+
|
194
|
+
return (
|
195
|
+
info,
|
196
|
+
abi.encode(
|
197
|
+
IPool.PoolInfo(
|
198
|
+
_isVerifying,
|
199
|
+
_collateralizationLevel
|
200
|
+
),
|
201
|
+
_wallet,
|
202
|
+
_token,
|
203
|
+
_initialPoolFee,
|
204
|
+
_initialStakingFee,
|
205
|
+
_initialPerformanceFee
|
206
|
+
)
|
207
|
+
);
|
208
|
+
}
|
209
|
+
|
210
|
+
// Internals
|
211
|
+
|
118
212
|
function _underwrite(
|
119
213
|
NftId policyNftId,
|
120
214
|
bytes memory policyData,
|
@@ -133,6 +227,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
133
227
|
|
134
228
|
function _createBundle(
|
135
229
|
address bundleOwner,
|
230
|
+
Fee memory fee,
|
136
231
|
uint256 amount,
|
137
232
|
uint256 lifetime,
|
138
233
|
bytes calldata filter
|
@@ -142,33 +237,10 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
142
237
|
{
|
143
238
|
bundleNftId = _poolService.createBundle(
|
144
239
|
bundleOwner,
|
240
|
+
fee,
|
145
241
|
amount,
|
146
242
|
lifetime,
|
147
243
|
filter
|
148
244
|
);
|
149
245
|
}
|
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
246
|
}
|