@etherisc/gif-next 0.0.2-6f2f76e-746 → 0.0.2-719a8f1-103
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 +80 -41
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +445 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +43 -40
- 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 +299 -84
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +250 -53
- 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 +793 -638
- 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 +1022 -716
- 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} +145 -65
- 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 +100 -56
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +456 -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 +136 -56
- 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 -38
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -38
- 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 +271 -72
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +526 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +99 -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} +125 -56
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +158 -50
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +246 -49
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +230 -52
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +361 -70
- 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 +293 -40
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +668 -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 +483 -120
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +885 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +460 -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/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +43 -40
- 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 +132 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +344 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -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 +445 -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 +299 -84
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +297 -58
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +93 -39
- 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 +161 -68
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- 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 +338 -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 +50 -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 +34 -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 +12 -22
- package/contracts/components/Distribution.sol +155 -0
- package/contracts/components/IBaseComponent.sol +2 -2
- 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 +32 -13
- 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 +43 -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 +32 -64
- package/contracts/instance/module/component/IComponent.sol +7 -32
- 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 +12 -9
- 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 +32 -51
- package/contracts/instance/module/treasury/TokenHandler.sol +2 -2
- package/contracts/instance/module/treasury/TreasuryModule.sol +68 -89
- package/contracts/instance/service/ComponentOwnerService.sol +197 -96
- 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 +43 -15
- package/contracts/registry/IChainNft.sol +3 -2
- package/contracts/registry/IRegistry.sol +44 -28
- package/contracts/registry/IRegistryService.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +384 -275
- package/contracts/registry/RegistryService.sol +375 -0
- package/contracts/registry/RegistryServiceManager.sol +52 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IRegisterable.sol +7 -9
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +87 -0
- package/contracts/shared/ProxyManager.sol +103 -0
- package/contracts/shared/Registerable.sol +74 -43
- 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 +12 -10
- package/contracts/types/StateId.sol +7 -1
- package/contracts/types/UFixed.sol +19 -16
- 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/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/instance/{service → base}/IService.sol +0 -0
@@ -1,31 +1,38 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@
|
4
|
+
import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
7
7
|
import {IInstance} from "../IInstance.sol";
|
8
8
|
|
9
|
-
import {
|
10
|
-
import {ITreasuryModule} from "../module/treasury/ITreasury.sol";
|
9
|
+
import {ITreasury, ITreasuryModule} from "../module/treasury/ITreasury.sol";
|
11
10
|
import {TreasuryModule} from "../module/treasury/TreasuryModule.sol";
|
12
11
|
import {IComponent, IComponentModule} from "../module/component/IComponent.sol";
|
13
12
|
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
14
13
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
15
|
-
|
14
|
+
import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
|
16
15
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
17
16
|
import {Versionable} from "../../shared/Versionable.sol";
|
18
17
|
|
19
|
-
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
|
20
|
-
import {ObjectType, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
|
18
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
|
19
|
+
import {ObjectType, TOKEN, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
|
21
20
|
import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
|
21
|
+
import {Key32} from "../../types/Key32.sol";
|
22
22
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
23
23
|
import {Fee} from "../../types/Fee.sol";
|
24
24
|
import {Version, VersionLib} from "../../types/Version.sol";
|
25
|
+
import {UFixed, UFixedMathLib} from "../../types/UFixed.sol";
|
25
26
|
|
27
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
28
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
26
29
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
27
|
-
import {
|
30
|
+
import {IService} from "../base/IService.sol";
|
28
31
|
import {IComponentOwnerService} from "./IComponentOwnerService.sol";
|
32
|
+
import {ServiceBase} from "../base/ServiceBase.sol";
|
33
|
+
import {IPool, IPoolModule} from "../module/pool/IPoolModule.sol";
|
34
|
+
|
35
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
29
36
|
|
30
37
|
contract ComponentOwnerService is
|
31
38
|
ServiceBase,
|
@@ -33,32 +40,35 @@ contract ComponentOwnerService is
|
|
33
40
|
{
|
34
41
|
using NftIdLib for NftId;
|
35
42
|
|
43
|
+
error MissingTypeRole();
|
44
|
+
error WalletIsZero();
|
45
|
+
error InvalidToken();
|
46
|
+
error InvalidPool();
|
47
|
+
error InvalidDistribution();
|
48
|
+
error InvalidPoolsInstance();
|
49
|
+
error InvalidDistributionsInstance();
|
50
|
+
|
51
|
+
error CollateralizationLevelIsZero();
|
52
|
+
|
36
53
|
string public constant NAME = "ComponentOwnerService";
|
37
54
|
|
38
55
|
modifier onlyRegisteredComponent(IBaseComponent component) {
|
39
|
-
NftId nftId =
|
56
|
+
NftId nftId = getRegistry().getNftId(address(component));
|
40
57
|
require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
|
41
58
|
_;
|
42
59
|
}
|
43
60
|
|
44
61
|
constructor(
|
45
62
|
address registry,
|
46
|
-
NftId registryNftId
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
function getVersion()
|
53
|
-
public
|
54
|
-
pure
|
55
|
-
virtual override (IVersionable, Versionable)
|
56
|
-
returns(Version)
|
63
|
+
NftId registryNftId,
|
64
|
+
address initialOwner
|
65
|
+
)
|
57
66
|
{
|
58
|
-
|
67
|
+
_initializeServiceBase(registry, registryNftId, initialOwner);
|
68
|
+
_registerInterface(type(IComponentOwnerService).interfaceId);
|
59
69
|
}
|
60
70
|
|
61
|
-
function getName()
|
71
|
+
function getName() public pure override(IService, ServiceBase) returns(string memory name) {
|
62
72
|
return NAME;
|
63
73
|
}
|
64
74
|
|
@@ -71,101 +81,192 @@ contract ComponentOwnerService is
|
|
71
81
|
if (cType == POOL()) {
|
72
82
|
return POOL_OWNER_ROLE();
|
73
83
|
}
|
84
|
+
if (cType == DISTRIBUTION()) {
|
85
|
+
return DISTRIBUTION_OWNER_ROLE();
|
86
|
+
}
|
74
87
|
if (cType == ORACLE()) {
|
75
88
|
return ORACLE_OWNER_ROLE();
|
76
89
|
}
|
77
90
|
}
|
78
91
|
|
79
|
-
function
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
require(
|
84
|
-
msg.sender == address(component),
|
85
|
-
"ERROR:COS-003:NOT_COMPONENT"
|
86
|
-
);
|
92
|
+
function getRegistryService() public view virtual returns (IRegistryService) {
|
93
|
+
address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
|
94
|
+
return IRegistryService(service);
|
95
|
+
}
|
87
96
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
"ERROR:CMP-004:TYPE_ROLE_MISSING"
|
94
|
-
);
|
97
|
+
// TODO if user passes type BUNDLE??? -> registerComponent() must catch this
|
98
|
+
function register(
|
99
|
+
IBaseComponent component,
|
100
|
+
ObjectType componentType
|
101
|
+
) external returns (NftId nftId) {
|
95
102
|
|
96
|
-
|
97
|
-
|
103
|
+
// TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
|
104
|
+
(
|
105
|
+
IRegistry.ObjectInfo memory info,
|
106
|
+
bytes memory data
|
107
|
+
) = getRegistryService().registerComponent(component, componentType, msg.sender);
|
98
108
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
NftId distributorNftId = zeroNftId();
|
116
|
-
instance.registerProduct(
|
117
|
-
nftId,
|
118
|
-
distributorNftId,
|
119
|
-
poolNftId,
|
120
|
-
token,
|
121
|
-
wallet,
|
122
|
-
product.getPolicyFee(),
|
123
|
-
product.getProcessingFee()
|
109
|
+
NftId instanceNftId = info.parentNftId;
|
110
|
+
address instancAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
111
|
+
IInstance instance = IInstance(instancAddress);
|
112
|
+
|
113
|
+
RoleId typeRole = getRoleForType(componentType);
|
114
|
+
if(instance.hasRole(typeRole, msg.sender) == false) {
|
115
|
+
revert MissingTypeRole();
|
116
|
+
}
|
117
|
+
|
118
|
+
// component type specific registration actions
|
119
|
+
if (componentType == PRODUCT()) {
|
120
|
+
_registerProduct(
|
121
|
+
info.nftId,
|
122
|
+
instanceNftId,
|
123
|
+
instance,
|
124
|
+
data
|
124
125
|
);
|
125
|
-
} else if (
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
// register with tresury
|
135
|
-
instance.registerPool(
|
136
|
-
nftId,
|
137
|
-
wallet,
|
138
|
-
pool.getStakingFee(),
|
139
|
-
pool.getPerformanceFee());
|
140
|
-
}
|
141
|
-
// TODO add distribution
|
126
|
+
} else if (componentType == POOL()) {
|
127
|
+
_registerPool(
|
128
|
+
info.nftId,
|
129
|
+
instanceNftId,
|
130
|
+
instance,
|
131
|
+
data
|
132
|
+
);
|
133
|
+
}
|
134
|
+
// TODO add distribution and oracle
|
142
135
|
}
|
143
136
|
|
144
137
|
function lock(
|
145
138
|
IBaseComponent component
|
146
139
|
) external override onlyRegisteredComponent(component) {
|
140
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
147
141
|
IInstance instance = component.getInstance();
|
148
|
-
|
149
|
-
|
150
|
-
);
|
151
|
-
require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
152
|
-
|
153
|
-
info.state = PAUSED();
|
154
|
-
// setComponentInfo checks for valid state changes
|
155
|
-
instance.setComponentInfo(info);
|
142
|
+
NftId nftId = component.getNftId();
|
143
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
144
|
+
instance.updateState(key, PAUSED());
|
156
145
|
}
|
157
146
|
|
158
147
|
function unlock(
|
159
148
|
IBaseComponent component
|
160
149
|
) external override onlyRegisteredComponent(component) {
|
150
|
+
// TODO use msg.sender to get component and get instance via registered parent nft id
|
161
151
|
IInstance instance = component.getInstance();
|
162
|
-
|
163
|
-
|
152
|
+
NftId nftId = component.getNftId();
|
153
|
+
Key32 key = nftId.toKey32(COMPONENT());
|
154
|
+
instance.updateState(key, ACTIVE());
|
155
|
+
}
|
156
|
+
|
157
|
+
// Internals
|
158
|
+
|
159
|
+
function _registerProduct(
|
160
|
+
NftId nftId,
|
161
|
+
NftId instanceNftId,
|
162
|
+
IInstance instance,
|
163
|
+
bytes memory data
|
164
|
+
)
|
165
|
+
internal
|
166
|
+
{
|
167
|
+
(
|
168
|
+
ITreasury.TreasuryInfo memory info,
|
169
|
+
address wallet
|
170
|
+
) = abi.decode(data, (ITreasury.TreasuryInfo, address));
|
171
|
+
|
172
|
+
IRegistry _registry = getRegistry();
|
173
|
+
|
174
|
+
if(wallet == address(0)) {
|
175
|
+
revert WalletIsZero();
|
176
|
+
}
|
177
|
+
|
178
|
+
IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
|
179
|
+
|
180
|
+
if(tokenInfo.objectType != TOKEN()) {
|
181
|
+
revert InvalidToken();
|
182
|
+
}
|
183
|
+
|
184
|
+
IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
|
185
|
+
|
186
|
+
if(poolInfo.objectType != POOL()) {
|
187
|
+
revert InvalidPool();
|
188
|
+
}
|
189
|
+
|
190
|
+
if(poolInfo.parentNftId != instanceNftId) {
|
191
|
+
revert InvalidPoolsInstance();
|
192
|
+
}
|
193
|
+
// TODO pool have the same token
|
194
|
+
//ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
|
195
|
+
//require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
|
196
|
+
// TODO pool is not linked
|
197
|
+
|
198
|
+
IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
|
199
|
+
|
200
|
+
if(distributionInfo.objectType != DISTRIBUTION()) {
|
201
|
+
revert InvalidDistribution();
|
202
|
+
}
|
203
|
+
|
204
|
+
if(distributionInfo.parentNftId != instanceNftId) {
|
205
|
+
revert InvalidDistributionsInstance();
|
206
|
+
}
|
207
|
+
// TODO distribution have the same token
|
208
|
+
// TODO distribution is not linked
|
209
|
+
|
210
|
+
// component module
|
211
|
+
instance.registerComponent(
|
212
|
+
nftId,
|
213
|
+
info.token,
|
214
|
+
wallet // TODO move wallet into TreasuryInfo?
|
215
|
+
);
|
216
|
+
|
217
|
+
// treasury module
|
218
|
+
instance.registerProductSetup(
|
219
|
+
nftId,
|
220
|
+
info
|
164
221
|
);
|
165
|
-
|
222
|
+
}
|
223
|
+
|
224
|
+
function _registerPool(
|
225
|
+
NftId nftId,
|
226
|
+
NftId instanceNftId,
|
227
|
+
IInstance instance,
|
228
|
+
bytes memory data
|
229
|
+
)
|
230
|
+
internal
|
231
|
+
{
|
232
|
+
(
|
233
|
+
IPool.PoolInfo memory info,
|
234
|
+
address wallet,
|
235
|
+
IERC20Metadata token,
|
236
|
+
/*poolFee*/,
|
237
|
+
/*stakingFee*/,
|
238
|
+
/*performanceFee*/
|
239
|
+
) = abi.decode(data, (IPool.PoolInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
240
|
+
|
241
|
+
IRegistry _registry = getRegistry();
|
242
|
+
|
243
|
+
if(wallet == address(0)) {
|
244
|
+
revert WalletIsZero();
|
245
|
+
}
|
246
|
+
|
247
|
+
ObjectType tokenType = _registry.getObjectInfo(address(token)).objectType;
|
248
|
+
|
249
|
+
if(tokenType != TOKEN()) {
|
250
|
+
revert InvalidToken();
|
251
|
+
}
|
166
252
|
|
167
|
-
info.
|
168
|
-
|
169
|
-
|
253
|
+
if(UFixedMathLib.eqz(info.collateralizationLevel)) {
|
254
|
+
revert CollateralizationLevelIsZero();
|
255
|
+
}
|
256
|
+
|
257
|
+
// TODO add more validations
|
258
|
+
|
259
|
+
// component module
|
260
|
+
instance.registerComponent(
|
261
|
+
nftId,
|
262
|
+
token,
|
263
|
+
wallet
|
264
|
+
);
|
265
|
+
|
266
|
+
// pool module
|
267
|
+
instance.registerPool(
|
268
|
+
nftId,
|
269
|
+
info
|
270
|
+
);
|
170
271
|
}
|
171
|
-
}
|
272
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
+
import {ITreasury} from "../../instance/module/treasury/ITreasury.sol";
|
7
|
+
|
8
|
+
import {NftId} from "../../types/NftId.sol";
|
9
|
+
import {Fee} from "../../types/Fee.sol";
|
10
|
+
import {DISTRIBUTION} from "../../types/ObjectType.sol";
|
11
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
12
|
+
|
13
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
14
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
15
|
+
|
16
|
+
import {IService} from "../base/IService.sol";
|
17
|
+
import {ServiceBase} from "../base/ServiceBase.sol";
|
18
|
+
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
19
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
20
|
+
|
21
|
+
contract DistributionService is
|
22
|
+
ComponentServiceBase,
|
23
|
+
IDistributionService
|
24
|
+
{
|
25
|
+
string public constant NAME = "DistributionService";
|
26
|
+
|
27
|
+
constructor(
|
28
|
+
address registry,
|
29
|
+
NftId registryNftId,
|
30
|
+
address initialOwner
|
31
|
+
) ComponentServiceBase(registry, registryNftId, initialOwner)
|
32
|
+
{
|
33
|
+
_registerInterface(type(IDistributionService).interfaceId);
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
function getName() public pure override(IService, ServiceBase) returns(string memory name) {
|
38
|
+
return NAME;
|
39
|
+
}
|
40
|
+
|
41
|
+
function setFees(
|
42
|
+
Fee memory distributionFee
|
43
|
+
)
|
44
|
+
external
|
45
|
+
override
|
46
|
+
{
|
47
|
+
(IRegistry.ObjectInfo memory distributionInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
48
|
+
|
49
|
+
NftId productNftId = instance.getProductNftId(distributionInfo.nftId);
|
50
|
+
ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
|
51
|
+
treasuryInfo.distributionFee = distributionFee;
|
52
|
+
instance.setTreasuryInfo(productNftId, treasuryInfo);
|
53
|
+
}
|
54
|
+
}
|
@@ -5,13 +5,11 @@ import {NftId} from "../../types/NftId.sol";
|
|
5
5
|
import {ObjectType} from "../../types/ObjectType.sol";
|
6
6
|
import {RoleId} from "../../types/RoleId.sol";
|
7
7
|
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
|
-
import {IService} from "
|
8
|
+
import {IService} from "../base/IService.sol";
|
9
9
|
|
10
10
|
// TODO rename to registry service
|
11
11
|
interface IComponentOwnerService is IService {
|
12
12
|
|
13
|
-
function register(IBaseComponent component) external returns(NftId componentNftId);
|
14
|
-
|
15
13
|
// TODO move to product/pool services
|
16
14
|
function lock(IBaseComponent component) external;
|
17
15
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {Fee} from "../../types/Fee.sol";
|
6
|
+
import {IService} from "../base/IService.sol";
|
7
|
+
|
8
|
+
interface IDistributionService is IService {
|
9
|
+
function setFees(
|
10
|
+
Fee memory distributionFee
|
11
|
+
) external;
|
12
|
+
}
|
@@ -3,21 +3,28 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
5
|
import {Fee} from "../../types/Fee.sol";
|
6
|
-
import {IService} from "
|
6
|
+
import {IService} from "../base/IService.sol";
|
7
7
|
|
8
8
|
interface IPoolService is IService {
|
9
9
|
function setFees(
|
10
|
+
Fee memory poolFee,
|
10
11
|
Fee memory stakingFee,
|
11
12
|
Fee memory performanceFee
|
12
13
|
) external;
|
13
14
|
|
14
15
|
function createBundle(
|
15
16
|
address owner,
|
17
|
+
Fee memory fee,
|
16
18
|
uint256 amount,
|
17
19
|
uint256 lifetime,
|
18
20
|
bytes calldata filter
|
19
21
|
) external returns(NftId bundleNftId);
|
20
22
|
|
23
|
+
function setBundleFee(
|
24
|
+
NftId bundleNftId,
|
25
|
+
Fee memory fee
|
26
|
+
) external;
|
27
|
+
|
21
28
|
// function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
22
29
|
|
23
30
|
// function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
@@ -1,27 +1,76 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {IRisk} from "../module/risk/IRisk.sol";
|
5
|
+
import {IService} from "../base/IService.sol";
|
6
|
+
|
4
7
|
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../../types/ReferralId.sol";
|
9
|
+
import {RiskId} from "../../types/RiskId.sol";
|
10
|
+
import {StateId} from "../../types/StateId.sol";
|
5
11
|
import {Timestamp} from "../../types/Timestamp.sol";
|
6
12
|
import {UFixed} from "../../types/UFixed.sol";
|
7
13
|
import {Fee} from "../../types/Fee.sol";
|
8
|
-
import {IService} from "./IService.sol";
|
9
14
|
|
10
15
|
interface IProductService is IService {
|
11
16
|
function setFees(
|
12
|
-
Fee memory
|
17
|
+
Fee memory productFee,
|
13
18
|
Fee memory processingFee
|
14
19
|
) external;
|
15
20
|
|
21
|
+
function createRisk(
|
22
|
+
RiskId riskId,
|
23
|
+
bytes memory data
|
24
|
+
) external;
|
25
|
+
|
26
|
+
|
27
|
+
function setRiskInfo(
|
28
|
+
RiskId riskId,
|
29
|
+
IRisk.RiskInfo memory data
|
30
|
+
) external;
|
31
|
+
|
32
|
+
|
33
|
+
function updateRiskState(
|
34
|
+
RiskId riskId,
|
35
|
+
StateId state
|
36
|
+
) external;
|
37
|
+
|
38
|
+
|
39
|
+
function calculatePremium(
|
40
|
+
RiskId riskId,
|
41
|
+
uint256 sumInsuredAmount,
|
42
|
+
uint256 lifetime,
|
43
|
+
bytes memory applicationData,
|
44
|
+
NftId bundleNftId,
|
45
|
+
ReferralId referralId
|
46
|
+
)
|
47
|
+
external
|
48
|
+
view
|
49
|
+
returns (
|
50
|
+
uint256 premiumAmount,
|
51
|
+
uint256 productFeeAmount,
|
52
|
+
uint256 poolFeeAmount,
|
53
|
+
uint256 bundleFeeAmount,
|
54
|
+
uint256 distributionFeeAmount
|
55
|
+
);
|
56
|
+
|
57
|
+
|
16
58
|
function createApplication(
|
17
59
|
address applicationOwner,
|
60
|
+
RiskId riskId,
|
18
61
|
uint256 sumInsuredAmount,
|
19
|
-
uint256 premiumAmount,
|
20
62
|
uint256 lifetime,
|
21
|
-
|
63
|
+
bytes memory applicationData,
|
64
|
+
NftId bundleNftId,
|
65
|
+
ReferralId referralId
|
22
66
|
) external returns (NftId nftId);
|
23
67
|
|
24
|
-
|
68
|
+
/**
|
69
|
+
* @dev revokes the application represented by {policyNftId}.
|
70
|
+
* an application can only be revoked in applied state.
|
71
|
+
* only the application holder may revoke an application.
|
72
|
+
*/
|
73
|
+
function revoke(NftId policyNftId) external;
|
25
74
|
|
26
75
|
/**
|
27
76
|
* @dev underwrites the policy represented by {policyNftId}.
|
@@ -38,9 +87,9 @@ interface IProductService is IService {
|
|
38
87
|
// function decline(uint256 nftId) external;
|
39
88
|
// function expire(uint256 nftId) external;
|
40
89
|
|
41
|
-
function collectPremium(NftId
|
90
|
+
function collectPremium(NftId policyNftId, Timestamp activateAt) external;
|
42
91
|
|
43
|
-
function activate(NftId
|
92
|
+
function activate(NftId policyNftId, Timestamp activateAt) external;
|
44
93
|
|
45
94
|
|
46
95
|
function close(NftId nftId) external;
|