@etherisc/gif-next 0.0.2-e5a2253-213 → 0.0.2-e69072e-892
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 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → Component.sol/Component.json} +340 -59
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +804 -211
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IBaseComponent.sol/IBaseComponent.json → IComponent.sol/IComponent.json} +95 -56
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +699 -22
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +814 -60
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +519 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +896 -298
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +442 -129
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +910 -289
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +110 -171
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +874 -557
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +52 -115
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +101 -168
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +346 -263
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -86
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +119 -189
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -13
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +258 -283
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -80
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -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 +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +983 -221
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +441 -72
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -217
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/service/IClaimService.sol/IClaimService.json} +146 -179
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +552 -140
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -292
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -174
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -174
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +161 -407
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -114
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +139 -237
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +302 -77
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +139 -237
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +302 -77
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -198
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +112 -27
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +18 -18
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +216 -234
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +70 -53
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +22 -174
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- 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 +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- 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 +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +114 -157
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +135 -214
- 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/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- 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/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 +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +221 -0
- package/contracts/components/Distribution.sol +206 -67
- package/contracts/components/IComponent.sol +68 -0
- package/contracts/components/IDistributionComponent.sol +44 -9
- package/contracts/components/IPoolComponent.sol +124 -39
- package/contracts/components/IProductComponent.sol +8 -3
- package/contracts/components/Pool.sol +284 -164
- package/contracts/components/Product.sol +110 -116
- package/contracts/instance/BundleManager.sol +8 -12
- package/contracts/instance/IInstance.sol +41 -9
- package/contracts/instance/IInstanceService.sol +20 -1
- package/contracts/instance/Instance.sol +90 -61
- package/contracts/instance/InstanceAccessManager.sol +18 -24
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +195 -50
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/{ComponentServiceBase.sol → ComponentService.sol} +9 -13
- package/contracts/instance/module/IAccess.sol +3 -4
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +10 -10
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +17 -12
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +312 -33
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +14 -3
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +74 -0
- package/contracts/instance/service/IPolicyService.sol +26 -50
- package/contracts/instance/service/PolicyService.sol +127 -262
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +12 -45
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +50 -26
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistry.sol +16 -8
- package/contracts/registry/IRegistryService.sol +19 -10
- package/contracts/registry/Registry.sol +120 -52
- package/contracts/registry/RegistryAccessManager.sol +31 -25
- package/contracts/registry/RegistryService.sol +91 -128
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +86 -106
- package/contracts/registry/TokenRegistry.sol +19 -13
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -4
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +19 -19
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +12 -7
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/Timestamp.sol +12 -13
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- 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/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/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -168
- package/contracts/components/IBaseComponent.sol +0 -35
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- 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/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/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -25
- package/contracts/instance/InstanceBase.sol +0 -39
- package/contracts/instance/base/IInstanceBase.sol +0 -21
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -2,12 +2,39 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
|
-
import {
|
5
|
+
import {ClaimId} from "../../types/ClaimId.sol";
|
6
6
|
import {ReferralId} from "../../types/Referral.sol";
|
7
7
|
import {RiskId} from "../../types/RiskId.sol";
|
8
|
+
import {Seconds} from "../../types/Seconds.sol";
|
8
9
|
import {Timestamp} from "../../types/Timestamp.sol";
|
9
10
|
|
10
11
|
interface IPolicy {
|
12
|
+
|
13
|
+
struct Premium {
|
14
|
+
// this is the net premium calculated by the product
|
15
|
+
uint256 netPremiumAmount;
|
16
|
+
// fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
|
17
|
+
uint256 fullPremiumAmount;
|
18
|
+
// premium = fullPremium - discount
|
19
|
+
uint256 premiumAmount;
|
20
|
+
uint256 productFeeFixAmount;
|
21
|
+
uint256 poolFeeFixAmount;
|
22
|
+
uint256 bundleFeeFixAmount;
|
23
|
+
uint256 distributionFeeFixAmount;
|
24
|
+
uint256 productFeeVarAmount;
|
25
|
+
uint256 poolFeeVarAmount;
|
26
|
+
uint256 bundleFeeVarAmount;
|
27
|
+
uint256 distributionFeeVarAmount;
|
28
|
+
uint256 distributionOwnerFeeFixAmount;
|
29
|
+
// this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
|
30
|
+
uint256 distributionOwnerFeeVarAmount;
|
31
|
+
// this value is based on distributor type referenced in the referral
|
32
|
+
uint256 commissionAmount;
|
33
|
+
// this is based on referral used
|
34
|
+
uint256 discountAmount;
|
35
|
+
}
|
36
|
+
|
37
|
+
/// @dev policy data for the full policy lifecycle
|
11
38
|
struct PolicyInfo {
|
12
39
|
NftId productNftId;
|
13
40
|
NftId bundleNftId;
|
@@ -16,7 +43,7 @@ interface IPolicy {
|
|
16
43
|
uint256 sumInsuredAmount;
|
17
44
|
uint256 premiumAmount;
|
18
45
|
uint256 premiumPaidAmount;
|
19
|
-
|
46
|
+
Seconds lifetime;
|
20
47
|
bytes applicationData;
|
21
48
|
bytes policyData;
|
22
49
|
uint16 claimsCount;
|
@@ -37,7 +64,7 @@ interface IPolicy {
|
|
37
64
|
|
38
65
|
// claimId neeeds to be encoded policyNftId:claimId combination
|
39
66
|
struct PayoutInfo {
|
40
|
-
|
67
|
+
ClaimId claimId;
|
41
68
|
uint256 amount;
|
42
69
|
bytes data;
|
43
70
|
Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
|
@@ -14,12 +14,8 @@ interface ISetup {
|
|
14
14
|
TokenHandler tokenHandler;
|
15
15
|
NftId distributionNftId;
|
16
16
|
NftId poolNftId;
|
17
|
-
Fee distributionFee; // default distribution fee (no referral id)
|
18
17
|
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
|
18
|
+
Fee processingFee; // product fee on payout amounts
|
23
19
|
bool isIntercepting; // intercepts nft transfers (for products)
|
24
20
|
address wallet;
|
25
21
|
}
|
@@ -27,20 +23,24 @@ interface ISetup {
|
|
27
23
|
struct DistributionSetupInfo {
|
28
24
|
NftId productNftId;
|
29
25
|
TokenHandler tokenHandler;
|
30
|
-
Fee
|
31
|
-
|
26
|
+
Fee minDistributionOwnerFee;
|
27
|
+
Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
|
32
28
|
address wallet;
|
29
|
+
uint256 sumDistributionFees;
|
33
30
|
}
|
34
31
|
|
35
32
|
struct PoolSetupInfo {
|
36
33
|
NftId productNftId;
|
37
34
|
TokenHandler tokenHandler;
|
38
|
-
|
35
|
+
uint256 maxCapitalAmount; // max capital amount allowed for pool
|
36
|
+
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
37
|
+
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
38
|
+
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
39
|
+
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
40
|
+
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
39
41
|
Fee poolFee; // pool fee on net premium
|
40
42
|
Fee stakingFee; // pool fee on staked capital from investor
|
41
43
|
Fee performanceFee; // pool fee on profits from capital investors
|
42
|
-
bool isIntercepting; // intercepts nft transfers (for bundles)
|
43
|
-
bool isConfirmingApplication; // confirms applications before they are underwritten
|
44
44
|
address wallet;
|
45
45
|
}
|
46
46
|
}
|
@@ -0,0 +1,350 @@
|
|
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, DISTRIBUTION, 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 {IDistributionService} from "./IDistributionService.sol";
|
43
|
+
import {IPoolService} from "./IPoolService.sol";
|
44
|
+
import {IService} from "../../shared/IService.sol";
|
45
|
+
import {Service} from "../../shared/Service.sol";
|
46
|
+
|
47
|
+
|
48
|
+
contract ApplicationService is
|
49
|
+
ComponentService,
|
50
|
+
IApplicationService
|
51
|
+
{
|
52
|
+
IDistributionService internal _distributionService;
|
53
|
+
|
54
|
+
function _initialize(
|
55
|
+
address owner,
|
56
|
+
bytes memory data
|
57
|
+
)
|
58
|
+
internal
|
59
|
+
virtual override
|
60
|
+
initializer()
|
61
|
+
{
|
62
|
+
// TODO check this, might no longer be the way, refactor if necessary
|
63
|
+
address registryAddress;
|
64
|
+
address initialOwner;
|
65
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
66
|
+
|
67
|
+
initializeService(registryAddress, owner);
|
68
|
+
registerInterface(type(IApplicationService).interfaceId);
|
69
|
+
|
70
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
75
|
+
return APPLICATION();
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
function create(
|
80
|
+
address applicationOwner,
|
81
|
+
RiskId riskId,
|
82
|
+
uint256 sumInsuredAmount,
|
83
|
+
Seconds lifetime,
|
84
|
+
NftId bundleNftId,
|
85
|
+
ReferralId referralId,
|
86
|
+
bytes memory applicationData
|
87
|
+
)
|
88
|
+
external
|
89
|
+
virtual
|
90
|
+
returns (NftId applicationNftId)
|
91
|
+
{
|
92
|
+
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
93
|
+
// TODO: add validations (see create bundle in pool service)
|
94
|
+
|
95
|
+
applicationNftId = getRegistryService().registerPolicy(
|
96
|
+
IRegistry.ObjectInfo(
|
97
|
+
zeroNftId(),
|
98
|
+
productInfo.nftId,
|
99
|
+
POLICY(),
|
100
|
+
false, // intercepting property for policies is defined on product
|
101
|
+
address(0),
|
102
|
+
applicationOwner,
|
103
|
+
""
|
104
|
+
)
|
105
|
+
);
|
106
|
+
|
107
|
+
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
108
|
+
IPolicy.Premium memory premium = calculatePremium(
|
109
|
+
productInfo.nftId,
|
110
|
+
riskId,
|
111
|
+
sumInsuredAmount,
|
112
|
+
lifetime,
|
113
|
+
applicationData,
|
114
|
+
bundleNftId,
|
115
|
+
referralId
|
116
|
+
);
|
117
|
+
|
118
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
119
|
+
productInfo.nftId,
|
120
|
+
bundleNftId,
|
121
|
+
referralId,
|
122
|
+
riskId,
|
123
|
+
sumInsuredAmount,
|
124
|
+
premium.premiumAmount,
|
125
|
+
0,
|
126
|
+
lifetime,
|
127
|
+
applicationData,
|
128
|
+
"",
|
129
|
+
0,
|
130
|
+
0,
|
131
|
+
0,
|
132
|
+
zeroTimestamp(),
|
133
|
+
zeroTimestamp(),
|
134
|
+
zeroTimestamp()
|
135
|
+
);
|
136
|
+
|
137
|
+
instance.createApplication(applicationNftId, policyInfo);
|
138
|
+
instance.updateApplicationState(applicationNftId, APPLIED());
|
139
|
+
|
140
|
+
// TODO: add logging
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
function renew(
|
145
|
+
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
146
|
+
NftId bundleNftId // will likely need a newer bundle for underwriting
|
147
|
+
)
|
148
|
+
external
|
149
|
+
virtual override
|
150
|
+
returns (NftId applicationNftId)
|
151
|
+
{
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
function adjust(
|
157
|
+
NftId applicationNftId,
|
158
|
+
RiskId riskId,
|
159
|
+
NftId bundleNftId,
|
160
|
+
ReferralId referralId,
|
161
|
+
uint256 sumInsuredAmount,
|
162
|
+
uint256 lifetime,
|
163
|
+
bytes memory applicationData
|
164
|
+
)
|
165
|
+
external
|
166
|
+
virtual override
|
167
|
+
{
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
function revoke(NftId applicationNftId)
|
172
|
+
external
|
173
|
+
virtual override
|
174
|
+
{
|
175
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
176
|
+
instance.updateApplicationState(applicationNftId, REVOKED());
|
177
|
+
}
|
178
|
+
|
179
|
+
// TODO: maybe move this to a pricing service later
|
180
|
+
// FIXME: this !!
|
181
|
+
function calculatePremium(
|
182
|
+
NftId productNftId,
|
183
|
+
RiskId riskId,
|
184
|
+
uint256 sumInsuredAmount,
|
185
|
+
Seconds lifetime,
|
186
|
+
bytes memory applicationData,
|
187
|
+
NftId bundleNftId,
|
188
|
+
ReferralId referralId
|
189
|
+
)
|
190
|
+
public
|
191
|
+
view
|
192
|
+
virtual override
|
193
|
+
returns (
|
194
|
+
IPolicy.Premium memory premium
|
195
|
+
)
|
196
|
+
{
|
197
|
+
uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
|
198
|
+
sumInsuredAmount,
|
199
|
+
riskId,
|
200
|
+
lifetime,
|
201
|
+
applicationData
|
202
|
+
);
|
203
|
+
// TODO: add all fixed fee parts on top of the netPremium
|
204
|
+
premium = _getFixedFeeAmounts(
|
205
|
+
netPremiumAmount,
|
206
|
+
_getAndVerifyProduct(productNftId),
|
207
|
+
bundleNftId,
|
208
|
+
referralId
|
209
|
+
);
|
210
|
+
|
211
|
+
(
|
212
|
+
premium
|
213
|
+
) = _calculateVariableFeeAmounts(
|
214
|
+
premium,
|
215
|
+
_getAndVerifyProduct(productNftId),
|
216
|
+
bundleNftId,
|
217
|
+
referralId
|
218
|
+
);
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
// internal functions
|
223
|
+
function _getFixedFeeAmounts(
|
224
|
+
uint256 netPremiumAmount,
|
225
|
+
Product product,
|
226
|
+
NftId bundleNftId,
|
227
|
+
ReferralId referralId
|
228
|
+
)
|
229
|
+
internal
|
230
|
+
view
|
231
|
+
returns (
|
232
|
+
IPolicy.Premium memory premium
|
233
|
+
)
|
234
|
+
{
|
235
|
+
InstanceReader instanceReader;
|
236
|
+
{
|
237
|
+
IInstance instance = product.getInstance();
|
238
|
+
instanceReader = instance.getInstanceReader();
|
239
|
+
}
|
240
|
+
|
241
|
+
NftId poolNftId = product.getPoolNftId();
|
242
|
+
premium = IPolicy.Premium(
|
243
|
+
netPremiumAmount, // net premium
|
244
|
+
netPremiumAmount, // full premium
|
245
|
+
0, // premium
|
246
|
+
0, 0, 0, 0, // fix fees
|
247
|
+
0, 0, 0, 0, // variable fees
|
248
|
+
0, 0, 0, 0); // distribution owner fee/commission/discount
|
249
|
+
|
250
|
+
{
|
251
|
+
{
|
252
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
253
|
+
uint256 t = productSetupInfo.productFee.fixedFee;
|
254
|
+
premium.productFeeFixAmount = t;
|
255
|
+
premium.fullPremiumAmount += t;
|
256
|
+
}
|
257
|
+
{
|
258
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
259
|
+
uint256 t = poolSetupInfo.poolFee.fixedFee;
|
260
|
+
premium.poolFeeFixAmount = t;
|
261
|
+
premium.fullPremiumAmount += t;
|
262
|
+
}
|
263
|
+
{
|
264
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
265
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
266
|
+
revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
267
|
+
}
|
268
|
+
uint256 t = bundleInfo.fee.fixedFee;
|
269
|
+
premium.bundleFeeFixAmount = t;
|
270
|
+
premium.fullPremiumAmount += t;
|
271
|
+
}
|
272
|
+
{
|
273
|
+
ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
|
274
|
+
uint256 t = distInto.distributionFee.fixedFee;
|
275
|
+
premium.distributionFeeFixAmount = t;
|
276
|
+
premium.fullPremiumAmount += t;
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
}
|
281
|
+
|
282
|
+
function _calculateVariableFeeAmounts(
|
283
|
+
IPolicy.Premium memory premium,
|
284
|
+
Product product,
|
285
|
+
NftId bundleNftId,
|
286
|
+
ReferralId referralId
|
287
|
+
)
|
288
|
+
internal
|
289
|
+
view
|
290
|
+
returns (
|
291
|
+
IPolicy.Premium memory finalPremium
|
292
|
+
)
|
293
|
+
{
|
294
|
+
InstanceReader instanceReader;
|
295
|
+
{
|
296
|
+
IInstance instance = product.getInstance();
|
297
|
+
instanceReader = instance.getInstanceReader();
|
298
|
+
}
|
299
|
+
|
300
|
+
NftId poolNftId = product.getPoolNftId();
|
301
|
+
uint256 netPremiumAmount = premium.netPremiumAmount;
|
302
|
+
|
303
|
+
{
|
304
|
+
{
|
305
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
306
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
|
307
|
+
premium.productFeeVarAmount = t;
|
308
|
+
premium.fullPremiumAmount += t;
|
309
|
+
}
|
310
|
+
{
|
311
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
312
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolSetupInfo.poolFee.fractionalFee).toInt();
|
313
|
+
premium.poolFeeVarAmount = t;
|
314
|
+
premium.fullPremiumAmount += t;
|
315
|
+
}
|
316
|
+
{
|
317
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
318
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
319
|
+
revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
320
|
+
}
|
321
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
|
322
|
+
premium.bundleFeeVarAmount = t;
|
323
|
+
premium.fullPremiumAmount += t;
|
324
|
+
}
|
325
|
+
{
|
326
|
+
premium = _distributionService.calculateFeeAmount(
|
327
|
+
product.getDistributionNftId(),
|
328
|
+
referralId,
|
329
|
+
premium
|
330
|
+
);
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
return premium;
|
335
|
+
}
|
336
|
+
|
337
|
+
|
338
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
339
|
+
IRegistry.ObjectInfo memory productInfo;
|
340
|
+
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
341
|
+
product = Product(productInfo.objectAddress);
|
342
|
+
}
|
343
|
+
|
344
|
+
function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
|
345
|
+
IRegistry registry = getRegistry();
|
346
|
+
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
|
347
|
+
require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
|
348
|
+
product = Product(productInfo.objectAddress);
|
349
|
+
}
|
350
|
+
}
|
@@ -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
|
+
}
|
@@ -10,31 +10,31 @@ import {ISetup} from "../module/ISetup.sol";
|
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
11
11
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
14
13
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
14
|
|
16
15
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
16
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
17
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
18
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
-
import {Version, VersionLib} from "../../types/Version.sol";
|
21
19
|
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
20
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
21
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
22
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
23
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
23
24
|
|
24
25
|
import {IService} from "../../shared/IService.sol";
|
25
26
|
import {Service} from "../../shared/Service.sol";
|
26
27
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
28
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
28
29
|
import {IBundleService} from "./IBundleService.sol";
|
29
30
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
31
|
import {InstanceService} from "../InstanceService.sol";
|
31
32
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
33
33
|
|
34
34
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
35
35
|
|
36
36
|
contract BundleService is
|
37
|
-
|
37
|
+
ComponentService,
|
38
38
|
IBundleService
|
39
39
|
{
|
40
40
|
using NftIdLib for NftId;
|
@@ -56,9 +56,8 @@ contract BundleService is
|
|
56
56
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
57
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
58
|
// owner is PoolServiceManager deployer
|
59
|
-
|
60
|
-
|
61
|
-
_registerInterface(type(IBundleService).interfaceId);
|
59
|
+
initializeService(registryAddress, owner);
|
60
|
+
registerInterface(type(IBundleService).interfaceId);
|
62
61
|
}
|
63
62
|
|
64
63
|
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
@@ -69,7 +68,7 @@ contract BundleService is
|
|
69
68
|
address owner,
|
70
69
|
Fee memory fee,
|
71
70
|
uint256 stakingAmount,
|
72
|
-
|
71
|
+
Seconds lifetime,
|
73
72
|
bytes calldata filter
|
74
73
|
)
|
75
74
|
external
|
@@ -165,17 +164,23 @@ contract BundleService is
|
|
165
164
|
bundleManager.unlock(bundleNftId);
|
166
165
|
}
|
167
166
|
|
168
|
-
function
|
167
|
+
function lockCollateral(
|
168
|
+
IInstance instance,
|
169
169
|
NftId policyNftId,
|
170
170
|
NftId bundleNftId,
|
171
171
|
uint256 collateralAmount,
|
172
172
|
uint256 netPremiumAmount
|
173
173
|
)
|
174
174
|
external
|
175
|
-
onlyService
|
175
|
+
onlyService
|
176
|
+
returns (
|
177
|
+
IBundle.BundleInfo memory bundleInfo
|
178
|
+
)
|
176
179
|
{
|
177
180
|
InstanceReader instanceReader = instance.getInstanceReader();
|
178
|
-
|
181
|
+
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
182
|
+
|
183
|
+
// TODO add validation
|
179
184
|
|
180
185
|
// lock collateral
|
181
186
|
bundleInfo.lockedAmount += collateralAmount;
|
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
BundleService bundleSrv = new BundleService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|