@etherisc/gif-next 0.0.2-f7be756-963 → 0.0.2-f7c17b4-297
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 +403 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +604 -35
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1310 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +234 -239
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +877 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1029 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +740 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +1253 -130
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +978 -157
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1791 -776
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +498 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2497 -824
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +541 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -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/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +935 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +480 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +336 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +373 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +716 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +766 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +578 -29
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +879 -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 +651 -68
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1166 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -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 +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/IPool.sol/IPoolComponent.json → shared/IService.sol/IService.json} +120 -117
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +414 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +510 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
- 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 +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -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 +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -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/Timestamp.sol/TimestampLib.json +97 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
- package/contracts/components/Component.sol +195 -51
- package/contracts/components/Distribution.sol +308 -0
- package/contracts/components/IComponent.sol +68 -0
- package/contracts/components/IDistributionComponent.sol +100 -0
- package/contracts/components/IPoolComponent.sol +151 -0
- package/contracts/components/IProductComponent.sol +40 -0
- package/contracts/components/Pool.sol +356 -30
- package/contracts/components/Product.sol +252 -48
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +91 -24
- package/contracts/instance/IInstanceService.sol +59 -0
- package/contracts/instance/Instance.sol +270 -51
- package/contracts/instance/InstanceAccessManager.sol +297 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +490 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +172 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/module/IAccess.sol +47 -0
- package/contracts/instance/module/IBundle.sol +21 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +48 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +48 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ApplicationService.sol +269 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +299 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +277 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +83 -0
- package/contracts/instance/service/IBundleService.sol +55 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +65 -0
- package/contracts/instance/service/IPolicyService.sol +90 -0
- package/contracts/instance/service/IPoolService.sol +20 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +476 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +109 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +233 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +129 -62
- package/contracts/registry/IRegistry.sol +73 -41
- package/contracts/registry/IRegistryService.sol +67 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +408 -126
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +283 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/NftOwnable.sol +120 -0
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +169 -0
- package/contracts/shared/Registerable.sol +74 -0
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestRegisterable.sol +18 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +25 -0
- package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/{mock → test}/Usdc.sol +1 -1
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +44 -20
- package/contracts/types/Key32.sol +50 -0
- package/contracts/types/NftId.sol +22 -1
- package/contracts/types/NftIdSet.sol +62 -0
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +64 -15
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +95 -0
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +18 -4
- package/contracts/types/Timestamp.sol +30 -6
- package/contracts/types/UFixed.sol +138 -23
- package/contracts/types/Version.sol +107 -0
- package/package.json +11 -5
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
- package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
- package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
- package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
- package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
- package/contracts/components/IPool.sol +0 -15
- package/contracts/components/IProduct.sol +0 -16
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/ITreasury.sol +0 -91
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
- package/contracts/instance/treasury/TreasuryModule.sol +0 -168
- package/contracts/mock/TestPool.sol +0 -16
- package/contracts/mock/TestProduct.sol +0 -39
- package/contracts/registry/IChainNft.sol +0 -21
@@ -0,0 +1,48 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {Fee} from "../../types/Fee.sol";
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {UFixed} from "../../types/UFixed.sol";
|
9
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
10
|
+
|
11
|
+
interface ISetup {
|
12
|
+
struct ProductSetupInfo {
|
13
|
+
IERC20Metadata token;
|
14
|
+
TokenHandler tokenHandler;
|
15
|
+
NftId distributionNftId;
|
16
|
+
NftId poolNftId;
|
17
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
18
|
+
Fee productFee; // product fee on net premium
|
19
|
+
Fee processingFee; // product fee on payout amounts
|
20
|
+
Fee poolFee; // pool fee on net premium
|
21
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
22
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
23
|
+
bool isIntercepting; // intercepts nft transfers (for products)
|
24
|
+
address wallet;
|
25
|
+
}
|
26
|
+
|
27
|
+
struct DistributionSetupInfo {
|
28
|
+
NftId productNftId;
|
29
|
+
TokenHandler tokenHandler;
|
30
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
31
|
+
address wallet;
|
32
|
+
}
|
33
|
+
|
34
|
+
struct PoolSetupInfo {
|
35
|
+
NftId productNftId;
|
36
|
+
TokenHandler tokenHandler;
|
37
|
+
uint256 maxCapitalAmount; // max capital amount allowed for pool
|
38
|
+
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
39
|
+
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
40
|
+
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
41
|
+
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
42
|
+
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
43
|
+
Fee poolFee; // pool fee on net premium
|
44
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
45
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
46
|
+
address wallet;
|
47
|
+
}
|
48
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {Fee} from "../../types/Fee.sol";
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
9
|
+
|
10
|
+
interface ITreasury {
|
11
|
+
struct TreasuryInfo {
|
12
|
+
IERC20Metadata token;
|
13
|
+
TokenHandler tokenHandler;
|
14
|
+
NftId distributionNftId;
|
15
|
+
NftId poolNftId;
|
16
|
+
Fee distributionFee; // default distribution fee (no referral id)
|
17
|
+
Fee productFee; // product fee on net premium
|
18
|
+
Fee processingFee; // product fee on payout amounts
|
19
|
+
Fee poolFee; // pool fee on net premium
|
20
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
21
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,269 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRisk} from "../module/IRisk.sol";
|
5
|
+
import {IService} from "./IApplicationService.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
8
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
9
|
+
import {Product} from "../../components/Product.sol";
|
10
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
11
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
12
|
+
import {IInstance} from "../IInstance.sol";
|
13
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
14
|
+
import {IRisk} from "../module/IRisk.sol";
|
15
|
+
import {IBundle} from "../module/IBundle.sol";
|
16
|
+
import {IProductService} from "./IProductService.sol";
|
17
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
18
|
+
import {ISetup} from "../module/ISetup.sol";
|
19
|
+
|
20
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
21
|
+
|
22
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
23
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
24
|
+
|
25
|
+
import {Seconds} from "../../types/Seconds.sol";
|
26
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
27
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
28
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
29
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
30
|
+
import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
31
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
32
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
33
|
+
import {ReferralId} from "../../types/Referral.sol";
|
34
|
+
import {RiskId} from "../../types/RiskId.sol";
|
35
|
+
import {StateId} from "../../types/StateId.sol";
|
36
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
37
|
+
|
38
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
39
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
40
|
+
import {IApplicationService} from "./IApplicationService.sol";
|
41
|
+
import {IBundleService} from "./IBundleService.sol";
|
42
|
+
import {IPoolService} from "./IPoolService.sol";
|
43
|
+
import {IService} from "../../shared/IService.sol";
|
44
|
+
import {Service} from "../../shared/Service.sol";
|
45
|
+
|
46
|
+
|
47
|
+
contract ApplicationService is
|
48
|
+
ComponentService,
|
49
|
+
IApplicationService
|
50
|
+
{
|
51
|
+
|
52
|
+
function _initialize(
|
53
|
+
address owner,
|
54
|
+
bytes memory data
|
55
|
+
)
|
56
|
+
internal
|
57
|
+
virtual override
|
58
|
+
initializer()
|
59
|
+
{
|
60
|
+
// TODO check this, might no longer be the way, refactor if necessary
|
61
|
+
address registryAddress;
|
62
|
+
address initialOwner;
|
63
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
64
|
+
|
65
|
+
initializeService(registryAddress, owner);
|
66
|
+
registerInterface(type(IApplicationService).interfaceId);
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
71
|
+
return APPLICATION();
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
function create(
|
76
|
+
address applicationOwner,
|
77
|
+
RiskId riskId,
|
78
|
+
uint256 sumInsuredAmount,
|
79
|
+
Seconds lifetime,
|
80
|
+
NftId bundleNftId,
|
81
|
+
ReferralId referralId,
|
82
|
+
bytes memory applicationData
|
83
|
+
)
|
84
|
+
external
|
85
|
+
virtual
|
86
|
+
returns (NftId applicationNftId)
|
87
|
+
{
|
88
|
+
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
89
|
+
// TODO: add validations (see create bundle in pool service)
|
90
|
+
|
91
|
+
applicationNftId = getRegistryService().registerPolicy(
|
92
|
+
IRegistry.ObjectInfo(
|
93
|
+
zeroNftId(),
|
94
|
+
productInfo.nftId,
|
95
|
+
POLICY(),
|
96
|
+
false, // intercepting property for policies is defined on product
|
97
|
+
address(0),
|
98
|
+
applicationOwner,
|
99
|
+
""
|
100
|
+
)
|
101
|
+
);
|
102
|
+
|
103
|
+
(uint256 premiumAmount,,,,) = calculatePremium(
|
104
|
+
riskId,
|
105
|
+
sumInsuredAmount,
|
106
|
+
lifetime,
|
107
|
+
applicationData,
|
108
|
+
bundleNftId,
|
109
|
+
referralId
|
110
|
+
);
|
111
|
+
|
112
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
113
|
+
productInfo.nftId,
|
114
|
+
bundleNftId,
|
115
|
+
referralId,
|
116
|
+
riskId,
|
117
|
+
sumInsuredAmount,
|
118
|
+
premiumAmount,
|
119
|
+
0,
|
120
|
+
lifetime,
|
121
|
+
applicationData,
|
122
|
+
"",
|
123
|
+
0,
|
124
|
+
0,
|
125
|
+
0,
|
126
|
+
zeroTimestamp(),
|
127
|
+
zeroTimestamp(),
|
128
|
+
zeroTimestamp()
|
129
|
+
);
|
130
|
+
|
131
|
+
instance.createApplication(applicationNftId, policyInfo);
|
132
|
+
instance.updateApplicationState(applicationNftId, APPLIED());
|
133
|
+
|
134
|
+
// TODO: add logging
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
function renew(
|
139
|
+
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
140
|
+
NftId bundleNftId // will likely need a newer bundle for underwriting
|
141
|
+
)
|
142
|
+
external
|
143
|
+
virtual override
|
144
|
+
returns (NftId applicationNftId)
|
145
|
+
{
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
function adjust(
|
151
|
+
NftId applicationNftId,
|
152
|
+
RiskId riskId,
|
153
|
+
NftId bundleNftId,
|
154
|
+
ReferralId referralId,
|
155
|
+
uint256 sumInsuredAmount,
|
156
|
+
uint256 lifetime,
|
157
|
+
bytes memory applicationData
|
158
|
+
)
|
159
|
+
external
|
160
|
+
virtual override
|
161
|
+
{
|
162
|
+
|
163
|
+
}
|
164
|
+
|
165
|
+
function revoke(NftId applicationNftId)
|
166
|
+
external
|
167
|
+
virtual override
|
168
|
+
{
|
169
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
170
|
+
instance.updateApplicationState(applicationNftId, REVOKED());
|
171
|
+
}
|
172
|
+
|
173
|
+
|
174
|
+
function calculatePremium(
|
175
|
+
RiskId riskId,
|
176
|
+
uint256 sumInsuredAmount,
|
177
|
+
Seconds lifetime,
|
178
|
+
bytes memory applicationData,
|
179
|
+
NftId bundleNftId,
|
180
|
+
ReferralId referralId
|
181
|
+
)
|
182
|
+
public
|
183
|
+
view
|
184
|
+
virtual override
|
185
|
+
returns (
|
186
|
+
uint256 premiumAmount,
|
187
|
+
uint256 distributionFeeAmount,
|
188
|
+
uint256 productFeeAmount,
|
189
|
+
uint256 poolFeeAmount,
|
190
|
+
uint256 bundleFeeAmount
|
191
|
+
)
|
192
|
+
{
|
193
|
+
Product product = _getAndVerifyInstanceAndProduct();
|
194
|
+
uint256 netPremiumAmount = product.calculateNetPremium(
|
195
|
+
sumInsuredAmount,
|
196
|
+
riskId,
|
197
|
+
lifetime,
|
198
|
+
applicationData
|
199
|
+
);
|
200
|
+
|
201
|
+
(
|
202
|
+
productFeeAmount,
|
203
|
+
poolFeeAmount,
|
204
|
+
bundleFeeAmount,
|
205
|
+
distributionFeeAmount
|
206
|
+
) = _calculateFeeAmounts(
|
207
|
+
netPremiumAmount,
|
208
|
+
product,
|
209
|
+
bundleNftId,
|
210
|
+
referralId
|
211
|
+
);
|
212
|
+
|
213
|
+
premiumAmount = netPremiumAmount + productFeeAmount;
|
214
|
+
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
215
|
+
premiumAmount += distributionFeeAmount;
|
216
|
+
}
|
217
|
+
|
218
|
+
|
219
|
+
// internal functions
|
220
|
+
|
221
|
+
function _calculateFeeAmounts(
|
222
|
+
uint256 netPremiumAmount,
|
223
|
+
Product product,
|
224
|
+
NftId bundleNftId,
|
225
|
+
ReferralId referralId
|
226
|
+
)
|
227
|
+
internal
|
228
|
+
view
|
229
|
+
returns (
|
230
|
+
uint256 productFeeAmount,
|
231
|
+
uint256 poolFeeAmount,
|
232
|
+
uint256 bundleFeeAmount,
|
233
|
+
uint256 distributionFeeAmount
|
234
|
+
)
|
235
|
+
{
|
236
|
+
InstanceReader instanceReader;
|
237
|
+
{
|
238
|
+
IInstance instance = product.getInstance();
|
239
|
+
instanceReader = instance.getInstanceReader();
|
240
|
+
}
|
241
|
+
|
242
|
+
NftId poolNftId = product.getPoolNftId();
|
243
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
244
|
+
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
245
|
+
|
246
|
+
{
|
247
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
248
|
+
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
249
|
+
}
|
250
|
+
{
|
251
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
252
|
+
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
253
|
+
}
|
254
|
+
{
|
255
|
+
NftId distributionNftId = product.getDistributionNftId();
|
256
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
257
|
+
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
258
|
+
}
|
259
|
+
|
260
|
+
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
265
|
+
IRegistry.ObjectInfo memory productInfo;
|
266
|
+
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
267
|
+
product = Product(productInfo.objectAddress);
|
268
|
+
}
|
269
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {ApplicationService} from "./ApplicationService.sol";
|
7
|
+
|
8
|
+
contract ApplicationServiceManager is ProxyManager {
|
9
|
+
|
10
|
+
ApplicationService private _applicationService;
|
11
|
+
|
12
|
+
/// @dev initializes proxy manager with service implementation
|
13
|
+
constructor(
|
14
|
+
address registryAddress
|
15
|
+
)
|
16
|
+
ProxyManager(registryAddress)
|
17
|
+
{
|
18
|
+
ApplicationService svc = new ApplicationService();
|
19
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
20
|
+
IVersionable versionable = deploy(
|
21
|
+
address(svc),
|
22
|
+
data);
|
23
|
+
|
24
|
+
_applicationService = ApplicationService(address(versionable));
|
25
|
+
}
|
26
|
+
|
27
|
+
//--- view functions ----------------------------------------------------//
|
28
|
+
function getApplicationService()
|
29
|
+
external
|
30
|
+
view
|
31
|
+
returns (ApplicationService)
|
32
|
+
{
|
33
|
+
return _applicationService;
|
34
|
+
}
|
35
|
+
}
|
@@ -0,0 +1,299 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Pool} from "../../components/Pool.sol";
|
5
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
|
+
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
|
+
import {ISetup} from "../module/ISetup.sol";
|
10
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
11
|
+
|
12
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
+
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
14
|
+
|
15
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
16
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
17
|
+
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
18
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
19
|
+
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
20
|
+
import {Seconds} from "../../types/Seconds.sol";
|
21
|
+
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
22
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
23
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
24
|
+
|
25
|
+
import {IService} from "../../shared/IService.sol";
|
26
|
+
import {Service} from "../../shared/Service.sol";
|
27
|
+
import {BundleManager} from "../BundleManager.sol";
|
28
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
29
|
+
import {IBundleService} from "./IBundleService.sol";
|
30
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
31
|
+
import {InstanceService} from "../InstanceService.sol";
|
32
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
33
|
+
|
34
|
+
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
35
|
+
|
36
|
+
contract BundleService is
|
37
|
+
ComponentService,
|
38
|
+
IBundleService
|
39
|
+
{
|
40
|
+
using NftIdLib for NftId;
|
41
|
+
|
42
|
+
string public constant NAME = "BundleService";
|
43
|
+
|
44
|
+
address internal _registryAddress;
|
45
|
+
|
46
|
+
function _initialize(
|
47
|
+
address owner,
|
48
|
+
bytes memory data
|
49
|
+
)
|
50
|
+
internal
|
51
|
+
initializer
|
52
|
+
virtual override
|
53
|
+
{
|
54
|
+
address registryAddress;
|
55
|
+
address initialOwner;
|
56
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
|
+
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
|
+
// owner is PoolServiceManager deployer
|
59
|
+
initializeService(registryAddress, owner);
|
60
|
+
registerInterface(type(IBundleService).interfaceId);
|
61
|
+
}
|
62
|
+
|
63
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
64
|
+
return BUNDLE();
|
65
|
+
}
|
66
|
+
|
67
|
+
function createBundle(
|
68
|
+
address owner,
|
69
|
+
Fee memory fee,
|
70
|
+
uint256 stakingAmount,
|
71
|
+
Seconds lifetime,
|
72
|
+
bytes calldata filter
|
73
|
+
)
|
74
|
+
external
|
75
|
+
override
|
76
|
+
returns(NftId bundleNftId)
|
77
|
+
{
|
78
|
+
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
79
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
80
|
+
NftId poolNftId = info.nftId;
|
81
|
+
|
82
|
+
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
83
|
+
poolNftId,
|
84
|
+
fee,
|
85
|
+
filter,
|
86
|
+
stakingAmount,
|
87
|
+
0,
|
88
|
+
stakingAmount,
|
89
|
+
lifetime,
|
90
|
+
zeroTimestamp(),
|
91
|
+
zeroTimestamp()
|
92
|
+
);
|
93
|
+
|
94
|
+
// register bundle with registry
|
95
|
+
bundleNftId = getRegistryService().registerBundle(
|
96
|
+
IRegistry.ObjectInfo(
|
97
|
+
zeroNftId(),
|
98
|
+
poolNftId,
|
99
|
+
BUNDLE(),
|
100
|
+
false, // intercepting property for bundles is defined on pool
|
101
|
+
address(0),
|
102
|
+
owner,
|
103
|
+
abi.encode(bundleInfo)
|
104
|
+
)
|
105
|
+
);
|
106
|
+
|
107
|
+
// create bundle info in instance
|
108
|
+
instance.createBundle(bundleNftId, bundleInfo);
|
109
|
+
|
110
|
+
BundleManager bundleManager = instance.getBundleManager();
|
111
|
+
bundleManager.add(bundleNftId);
|
112
|
+
|
113
|
+
_processStakingByTreasury(
|
114
|
+
instanceReader,
|
115
|
+
poolNftId,
|
116
|
+
bundleNftId,
|
117
|
+
stakingAmount);
|
118
|
+
|
119
|
+
// TODO add logging
|
120
|
+
}
|
121
|
+
|
122
|
+
function setBundleFee(
|
123
|
+
NftId bundleNftId,
|
124
|
+
Fee memory fee
|
125
|
+
)
|
126
|
+
external
|
127
|
+
override
|
128
|
+
{
|
129
|
+
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
130
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
131
|
+
NftId poolNftId = info.nftId;
|
132
|
+
|
133
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
134
|
+
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
135
|
+
require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
|
136
|
+
|
137
|
+
bundleInfo.fee = fee;
|
138
|
+
|
139
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
140
|
+
}
|
141
|
+
|
142
|
+
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
|
143
|
+
external
|
144
|
+
onlyService
|
145
|
+
{
|
146
|
+
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
147
|
+
IInstance instance = IInstance(instanceInfo.objectAddress);
|
148
|
+
instance.updateBundle(bundleNftId, bundleInfo, state);
|
149
|
+
}
|
150
|
+
|
151
|
+
function lockBundle(NftId bundleNftId)
|
152
|
+
external
|
153
|
+
{
|
154
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
155
|
+
BundleManager bundleManager = instance.getBundleManager();
|
156
|
+
bundleManager.lock(bundleNftId);
|
157
|
+
}
|
158
|
+
|
159
|
+
function unlockBundle(NftId bundleNftId)
|
160
|
+
external
|
161
|
+
{
|
162
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
163
|
+
BundleManager bundleManager = instance.getBundleManager();
|
164
|
+
bundleManager.unlock(bundleNftId);
|
165
|
+
}
|
166
|
+
|
167
|
+
function lockCollateral(
|
168
|
+
IInstance instance,
|
169
|
+
NftId policyNftId,
|
170
|
+
NftId bundleNftId,
|
171
|
+
uint256 collateralAmount,
|
172
|
+
uint256 netPremiumAmount
|
173
|
+
)
|
174
|
+
external
|
175
|
+
onlyService
|
176
|
+
returns (
|
177
|
+
IBundle.BundleInfo memory bundleInfo
|
178
|
+
)
|
179
|
+
{
|
180
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
181
|
+
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
182
|
+
|
183
|
+
// TODO add validation
|
184
|
+
|
185
|
+
// lock collateral
|
186
|
+
bundleInfo.lockedAmount += collateralAmount;
|
187
|
+
bundleInfo.balanceAmount += netPremiumAmount;
|
188
|
+
|
189
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
190
|
+
|
191
|
+
linkPolicy(instance, policyNftId);
|
192
|
+
}
|
193
|
+
|
194
|
+
function increaseBalance(IInstance instance,
|
195
|
+
NftId bundleNftId,
|
196
|
+
uint256 amount
|
197
|
+
)
|
198
|
+
external
|
199
|
+
onlyService
|
200
|
+
{
|
201
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
202
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
203
|
+
|
204
|
+
bundleInfo.balanceAmount += amount;
|
205
|
+
|
206
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
207
|
+
}
|
208
|
+
|
209
|
+
function closePolicy(IInstance instance,
|
210
|
+
NftId policyNftId,
|
211
|
+
NftId bundleNftId,
|
212
|
+
uint256 collateralAmount
|
213
|
+
)
|
214
|
+
external
|
215
|
+
onlyService
|
216
|
+
{
|
217
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
218
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
219
|
+
|
220
|
+
// lock collateral
|
221
|
+
bundleInfo.lockedAmount -= collateralAmount;
|
222
|
+
|
223
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
224
|
+
|
225
|
+
unlinkPolicy(instance, policyNftId);
|
226
|
+
}
|
227
|
+
|
228
|
+
/// @dev links policy to bundle
|
229
|
+
function linkPolicy(IInstance instance, NftId policyNftId)
|
230
|
+
internal
|
231
|
+
onlyService
|
232
|
+
{
|
233
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
234
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
235
|
+
|
236
|
+
// ensure policy has not yet been activated
|
237
|
+
if (policyInfo.activatedAt.gtz()) {
|
238
|
+
revert BundleManager.ErrorBundleManagerErrorPolicyAlreadyActivated(policyNftId);
|
239
|
+
}
|
240
|
+
|
241
|
+
BundleManager bundleManager = instance.getBundleManager();
|
242
|
+
bundleManager.linkPolicy(policyNftId);
|
243
|
+
}
|
244
|
+
|
245
|
+
/// @dev unlinks policy from bundle
|
246
|
+
function unlinkPolicy(IInstance instance, NftId policyNftId)
|
247
|
+
internal
|
248
|
+
onlyService
|
249
|
+
{
|
250
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
251
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
252
|
+
|
253
|
+
// ensure policy has no open claims
|
254
|
+
if (policyInfo.openClaimsCount > 0) {
|
255
|
+
revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
|
256
|
+
policyNftId,
|
257
|
+
policyInfo.openClaimsCount);
|
258
|
+
}
|
259
|
+
|
260
|
+
// ensure policy is closeable
|
261
|
+
if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
|
262
|
+
&& policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
|
263
|
+
{
|
264
|
+
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
265
|
+
}
|
266
|
+
|
267
|
+
BundleManager bundleManager = instance.getBundleManager();
|
268
|
+
bundleManager.unlinkPolicy(policyNftId);
|
269
|
+
}
|
270
|
+
|
271
|
+
function _processStakingByTreasury(
|
272
|
+
InstanceReader instanceReader,
|
273
|
+
NftId poolNftId,
|
274
|
+
NftId bundleNftId,
|
275
|
+
uint256 stakingAmount
|
276
|
+
)
|
277
|
+
internal
|
278
|
+
{
|
279
|
+
// process token transfer(s)
|
280
|
+
if(stakingAmount > 0) {
|
281
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
282
|
+
TokenHandler tokenHandler = poolInfo.tokenHandler;
|
283
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
284
|
+
Fee memory stakingFee = poolInfo.stakingFee;
|
285
|
+
|
286
|
+
tokenHandler.transfer(
|
287
|
+
bundleOwner,
|
288
|
+
poolInfo.wallet,
|
289
|
+
stakingAmount
|
290
|
+
);
|
291
|
+
|
292
|
+
|
293
|
+
if (! FeeLib.feeIsZero(stakingFee)) {
|
294
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
295
|
+
// TODO: track staking fees in pool's state (issue #177)
|
296
|
+
}
|
297
|
+
}
|
298
|
+
}
|
299
|
+
}
|