@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2af39ab-356
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 +8 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +62 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +112 -226
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +59 -92
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +90 -171
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +247 -205
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +63 -164
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +264 -292
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +67 -218
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +30 -11
- 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 +415 -522
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +501 -633
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -222
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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 +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
- 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 +141 -366
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
- 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 +645 -268
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -109
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +89 -257
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -167
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +69 -153
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +65 -443
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +108 -249
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +183 -104
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
- 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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +12 -177
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +31 -261
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
- 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 +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- 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 +0 -150
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
- 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 +31 -269
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
- 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/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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/Fee.sol/FeeLib.json +2 -2
- 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 +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/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/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 +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +88 -83
- package/contracts/components/Distribution.sol +16 -31
- package/contracts/components/IComponent.sol +40 -16
- package/contracts/components/IDistributionComponent.sol +1 -22
- package/contracts/components/IPoolComponent.sol +73 -47
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +171 -126
- package/contracts/components/Product.sol +38 -23
- package/contracts/instance/BundleManager.sol +7 -5
- package/contracts/instance/IInstance.sol +10 -3
- package/contracts/instance/IInstanceService.sol +2 -1
- package/contracts/instance/Instance.sol +25 -11
- package/contracts/instance/InstanceReader.sol +4 -3
- package/contracts/instance/InstanceService.sol +59 -11
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IComponents.sol +35 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +23 -7
- package/contracts/instance/service/ApplicationService.sol +139 -57
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +76 -38
- 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 +133 -21
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -9
- package/contracts/instance/service/IBundleService.sol +19 -11
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +23 -2
- package/contracts/instance/service/IPolicyService.sol +17 -35
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +61 -175
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +72 -18
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistryService.sol +7 -7
- package/contracts/registry/RegistryService.sol +51 -45
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +10 -19
- package/contracts/registry/TokenRegistry.sol +13 -10
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/INftOwnable.sol +4 -9
- package/contracts/shared/IRegistryLinked.sol +0 -3
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +10 -80
- package/contracts/shared/ProxyManager.sol +98 -24
- package/contracts/shared/Registerable.sol +3 -10
- package/contracts/shared/RegistryLinked.sol +10 -26
- package/contracts/shared/Service.sol +10 -12
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/Fee.sol +1 -0
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +5 -4
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +10 -5
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- 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/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/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- 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
|
@@ -0,0 +1,35 @@
|
|
|
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 {RoleId} from "../../types/RoleId.sol";
|
|
9
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
10
|
+
import {UFixed} from "../../types/UFixed.sol";
|
|
11
|
+
|
|
12
|
+
interface IComponents {
|
|
13
|
+
|
|
14
|
+
struct ComponentInfo {
|
|
15
|
+
string name; // component name (needs to be unique per instance)
|
|
16
|
+
IERC20Metadata token;
|
|
17
|
+
TokenHandler tokenHandler;
|
|
18
|
+
address wallet;
|
|
19
|
+
bytes data; // will hold component type specific additional info (eg encoded pool info)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
struct PoolInfo {
|
|
23
|
+
NftId productNftId; // the nft of the product this pool is linked to
|
|
24
|
+
RoleId bundleOwnerRole; // the required role for bundle owners
|
|
25
|
+
uint256 maxCapitalAmount; // max capital amount allowed for pool
|
|
26
|
+
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
|
27
|
+
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
|
28
|
+
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
|
29
|
+
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
|
30
|
+
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
|
31
|
+
Fee poolFee; // pool fee on net premium
|
|
32
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
|
33
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -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)
|
|
@@ -5,21 +5,33 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
|
|
|
5
5
|
|
|
6
6
|
import {Fee} from "../../types/Fee.sol";
|
|
7
7
|
import {NftId} from "../../types/NftId.sol";
|
|
8
|
-
import {
|
|
8
|
+
import {RoleId} from "../../types/RoleId.sol";
|
|
9
9
|
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
10
|
+
import {UFixed} from "../../types/UFixed.sol";
|
|
10
11
|
|
|
11
12
|
interface ISetup {
|
|
13
|
+
|
|
14
|
+
struct PoolInfo {
|
|
15
|
+
NftId productNftId; // the nft of the product this pool is linked to
|
|
16
|
+
RoleId bundleOwnerRole; // the required role for bundle owners
|
|
17
|
+
uint256 maxCapitalAmount; // max capital amount allowed for pool
|
|
18
|
+
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
|
19
|
+
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
|
20
|
+
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
|
21
|
+
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
|
22
|
+
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
|
23
|
+
Fee poolFee; // pool fee on net premium
|
|
24
|
+
Fee stakingFee; // pool fee on staked capital from investor
|
|
25
|
+
Fee performanceFee; // pool fee on profits from capital investors
|
|
26
|
+
}
|
|
27
|
+
|
|
12
28
|
struct ProductSetupInfo {
|
|
13
29
|
IERC20Metadata token;
|
|
14
30
|
TokenHandler tokenHandler;
|
|
15
31
|
NftId distributionNftId;
|
|
16
32
|
NftId poolNftId;
|
|
17
|
-
Fee distributionFee; // default distribution fee (no referral id)
|
|
18
33
|
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
|
|
34
|
+
Fee processingFee; // product fee on payout amounts
|
|
23
35
|
bool isIntercepting; // intercepts nft transfers (for products)
|
|
24
36
|
address wallet;
|
|
25
37
|
}
|
|
@@ -27,13 +39,17 @@ interface ISetup {
|
|
|
27
39
|
struct DistributionSetupInfo {
|
|
28
40
|
NftId productNftId;
|
|
29
41
|
TokenHandler tokenHandler;
|
|
30
|
-
Fee
|
|
42
|
+
Fee minDistributionOwnerFee;
|
|
43
|
+
Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
|
|
31
44
|
address wallet;
|
|
45
|
+
uint256 sumDistributionFees;
|
|
32
46
|
}
|
|
33
47
|
|
|
34
48
|
struct PoolSetupInfo {
|
|
35
49
|
NftId productNftId;
|
|
36
50
|
TokenHandler tokenHandler;
|
|
51
|
+
RoleId bundleOwnerRole;
|
|
52
|
+
uint256 maxCapitalAmount; // max capital amount allowed for pool
|
|
37
53
|
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
|
38
54
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
|
39
55
|
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
|
@@ -10,6 +10,7 @@ import {Product} from "../../components/Product.sol";
|
|
|
10
10
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
|
11
11
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
|
12
12
|
import {IInstance} from "../IInstance.sol";
|
|
13
|
+
import {IComponents} from "../module/IComponents.sol";
|
|
13
14
|
import {IPolicy} from "../module/IPolicy.sol";
|
|
14
15
|
import {IRisk} from "../module/IRisk.sol";
|
|
15
16
|
import {IBundle} from "../module/IBundle.sol";
|
|
@@ -22,11 +23,12 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
|
22
23
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
23
24
|
import {Versionable} from "../../shared/Versionable.sol";
|
|
24
25
|
|
|
26
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
25
27
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
26
28
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
|
27
29
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
|
28
|
-
import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
|
29
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
|
30
|
+
import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
|
31
|
+
import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
|
30
32
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
31
33
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
32
34
|
import {ReferralId} from "../../types/Referral.sol";
|
|
@@ -38,6 +40,7 @@ import {ComponentService} from "../base/ComponentService.sol";
|
|
|
38
40
|
import {InstanceReader} from "../InstanceReader.sol";
|
|
39
41
|
import {IApplicationService} from "./IApplicationService.sol";
|
|
40
42
|
import {IBundleService} from "./IBundleService.sol";
|
|
43
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
|
41
44
|
import {IPoolService} from "./IPoolService.sol";
|
|
42
45
|
import {IService} from "../../shared/IService.sol";
|
|
43
46
|
import {Service} from "../../shared/Service.sol";
|
|
@@ -47,14 +50,14 @@ contract ApplicationService is
|
|
|
47
50
|
ComponentService,
|
|
48
51
|
IApplicationService
|
|
49
52
|
{
|
|
53
|
+
IDistributionService internal _distributionService;
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
function initialize(
|
|
55
|
+
function _initialize(
|
|
53
56
|
address owner,
|
|
54
57
|
bytes memory data
|
|
55
58
|
)
|
|
56
|
-
|
|
57
|
-
virtual
|
|
59
|
+
internal
|
|
60
|
+
virtual override
|
|
58
61
|
initializer()
|
|
59
62
|
{
|
|
60
63
|
// TODO check this, might no longer be the way, refactor if necessary
|
|
@@ -64,20 +67,27 @@ contract ApplicationService is
|
|
|
64
67
|
|
|
65
68
|
initializeService(registryAddress, owner);
|
|
66
69
|
registerInterface(type(IApplicationService).interfaceId);
|
|
70
|
+
|
|
71
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
|
76
|
+
return APPLICATION();
|
|
67
77
|
}
|
|
68
78
|
|
|
69
79
|
|
|
70
80
|
function create(
|
|
71
81
|
address applicationOwner,
|
|
72
82
|
RiskId riskId,
|
|
83
|
+
uint256 sumInsuredAmount,
|
|
84
|
+
Seconds lifetime,
|
|
73
85
|
NftId bundleNftId,
|
|
74
86
|
ReferralId referralId,
|
|
75
|
-
uint256 sumInsuredAmount,
|
|
76
|
-
uint256 lifetime,
|
|
77
87
|
bytes memory applicationData
|
|
78
88
|
)
|
|
79
89
|
external
|
|
80
|
-
virtual
|
|
90
|
+
virtual
|
|
81
91
|
returns (NftId applicationNftId)
|
|
82
92
|
{
|
|
83
93
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
@@ -95,7 +105,9 @@ contract ApplicationService is
|
|
|
95
105
|
)
|
|
96
106
|
);
|
|
97
107
|
|
|
98
|
-
(uint256 premiumAmount
|
|
108
|
+
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
|
109
|
+
IPolicy.Premium memory premium = calculatePremium(
|
|
110
|
+
productInfo.nftId,
|
|
99
111
|
riskId,
|
|
100
112
|
sumInsuredAmount,
|
|
101
113
|
lifetime,
|
|
@@ -110,7 +122,7 @@ contract ApplicationService is
|
|
|
110
122
|
referralId,
|
|
111
123
|
riskId,
|
|
112
124
|
sumInsuredAmount,
|
|
113
|
-
premiumAmount,
|
|
125
|
+
premium.premiumAmount,
|
|
114
126
|
0,
|
|
115
127
|
lifetime,
|
|
116
128
|
applicationData,
|
|
@@ -123,8 +135,7 @@ contract ApplicationService is
|
|
|
123
135
|
zeroTimestamp()
|
|
124
136
|
);
|
|
125
137
|
|
|
126
|
-
instance.
|
|
127
|
-
instance.updatePolicyState(applicationNftId, APPLIED());
|
|
138
|
+
instance.createApplication(applicationNftId, policyInfo);
|
|
128
139
|
|
|
129
140
|
// TODO: add logging
|
|
130
141
|
}
|
|
@@ -142,7 +153,7 @@ contract ApplicationService is
|
|
|
142
153
|
}
|
|
143
154
|
|
|
144
155
|
|
|
145
|
-
function
|
|
156
|
+
function adjust(
|
|
146
157
|
NftId applicationNftId,
|
|
147
158
|
RiskId riskId,
|
|
148
159
|
NftId bundleNftId,
|
|
@@ -157,18 +168,20 @@ contract ApplicationService is
|
|
|
157
168
|
|
|
158
169
|
}
|
|
159
170
|
|
|
160
|
-
function revoke(NftId
|
|
171
|
+
function revoke(NftId applicationNftId)
|
|
161
172
|
external
|
|
162
173
|
virtual override
|
|
163
174
|
{
|
|
164
|
-
|
|
175
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
176
|
+
instance.updateApplicationState(applicationNftId, REVOKED());
|
|
165
177
|
}
|
|
166
178
|
|
|
167
|
-
|
|
179
|
+
// TODO: maybe move this to a pricing service later
|
|
168
180
|
function calculatePremium(
|
|
181
|
+
NftId productNftId,
|
|
169
182
|
RiskId riskId,
|
|
170
183
|
uint256 sumInsuredAmount,
|
|
171
|
-
|
|
184
|
+
Seconds lifetime,
|
|
172
185
|
bytes memory applicationData,
|
|
173
186
|
NftId bundleNftId,
|
|
174
187
|
ReferralId referralId
|
|
@@ -177,47 +190,36 @@ contract ApplicationService is
|
|
|
177
190
|
view
|
|
178
191
|
virtual override
|
|
179
192
|
returns (
|
|
180
|
-
|
|
181
|
-
uint256 distributionFeeAmount,
|
|
182
|
-
uint256 productFeeAmount,
|
|
183
|
-
uint256 poolFeeAmount,
|
|
184
|
-
uint256 bundleFeeAmount
|
|
193
|
+
IPolicy.Premium memory premium
|
|
185
194
|
)
|
|
186
195
|
{
|
|
187
|
-
|
|
188
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
|
196
|
+
uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
|
|
189
197
|
sumInsuredAmount,
|
|
190
198
|
riskId,
|
|
191
199
|
lifetime,
|
|
192
200
|
applicationData
|
|
193
201
|
);
|
|
194
202
|
|
|
195
|
-
(
|
|
196
|
-
productFeeAmount,
|
|
197
|
-
poolFeeAmount,
|
|
198
|
-
bundleFeeAmount,
|
|
199
|
-
distributionFeeAmount
|
|
200
|
-
) = _calculateFeeAmounts(
|
|
203
|
+
premium = _getFixedFeeAmounts(
|
|
201
204
|
netPremiumAmount,
|
|
202
|
-
|
|
205
|
+
_getAndVerifyProduct(productNftId),
|
|
203
206
|
bundleNftId,
|
|
204
207
|
referralId
|
|
205
208
|
);
|
|
206
209
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
(
|
|
211
|
+
premium
|
|
212
|
+
) = _calculateVariableFeeAmounts(
|
|
213
|
+
premium,
|
|
214
|
+
_getAndVerifyProduct(productNftId),
|
|
215
|
+
bundleNftId,
|
|
216
|
+
referralId
|
|
217
|
+
);
|
|
215
218
|
}
|
|
216
219
|
|
|
217
220
|
|
|
218
221
|
// internal functions
|
|
219
|
-
|
|
220
|
-
function _calculateFeeAmounts(
|
|
222
|
+
function _getFixedFeeAmounts(
|
|
221
223
|
uint256 netPremiumAmount,
|
|
222
224
|
Product product,
|
|
223
225
|
NftId bundleNftId,
|
|
@@ -226,10 +228,7 @@ contract ApplicationService is
|
|
|
226
228
|
internal
|
|
227
229
|
view
|
|
228
230
|
returns (
|
|
229
|
-
|
|
230
|
-
uint256 poolFeeAmount,
|
|
231
|
-
uint256 bundleFeeAmount,
|
|
232
|
-
uint256 distributionFeeAmount
|
|
231
|
+
IPolicy.Premium memory premium
|
|
233
232
|
)
|
|
234
233
|
{
|
|
235
234
|
InstanceReader instanceReader;
|
|
@@ -239,24 +238,100 @@ contract ApplicationService is
|
|
|
239
238
|
}
|
|
240
239
|
|
|
241
240
|
NftId poolNftId = product.getPoolNftId();
|
|
242
|
-
|
|
243
|
-
|
|
241
|
+
premium = IPolicy.Premium(
|
|
242
|
+
netPremiumAmount, // net premium
|
|
243
|
+
netPremiumAmount, // full premium
|
|
244
|
+
0, // premium
|
|
245
|
+
0, 0, 0, 0, // fix fees
|
|
246
|
+
0, 0, 0, 0, // variable fees
|
|
247
|
+
0, 0, 0, 0); // distribution owner fee/commission/discount
|
|
244
248
|
|
|
245
249
|
{
|
|
246
|
-
|
|
247
|
-
|
|
250
|
+
{
|
|
251
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
|
252
|
+
uint256 t = productSetupInfo.productFee.fixedFee;
|
|
253
|
+
premium.productFeeFixAmount = t;
|
|
254
|
+
premium.fullPremiumAmount += t;
|
|
255
|
+
}
|
|
256
|
+
{
|
|
257
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
|
258
|
+
uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fixedFee;
|
|
259
|
+
premium.poolFeeFixAmount = t;
|
|
260
|
+
premium.fullPremiumAmount += t;
|
|
261
|
+
}
|
|
262
|
+
{
|
|
263
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
264
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
|
265
|
+
revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
|
266
|
+
}
|
|
267
|
+
uint256 t = bundleInfo.fee.fixedFee;
|
|
268
|
+
premium.bundleFeeFixAmount = t;
|
|
269
|
+
premium.fullPremiumAmount += t;
|
|
270
|
+
}
|
|
271
|
+
{
|
|
272
|
+
ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
|
|
273
|
+
uint256 t = distInto.distributionFee.fixedFee;
|
|
274
|
+
premium.distributionFeeFixAmount = t;
|
|
275
|
+
premium.fullPremiumAmount += t;
|
|
276
|
+
}
|
|
248
277
|
}
|
|
278
|
+
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function _calculateVariableFeeAmounts(
|
|
282
|
+
IPolicy.Premium memory premium,
|
|
283
|
+
Product product,
|
|
284
|
+
NftId bundleNftId,
|
|
285
|
+
ReferralId referralId
|
|
286
|
+
)
|
|
287
|
+
internal
|
|
288
|
+
view
|
|
289
|
+
returns (
|
|
290
|
+
IPolicy.Premium memory finalPremium
|
|
291
|
+
)
|
|
292
|
+
{
|
|
293
|
+
InstanceReader instanceReader;
|
|
249
294
|
{
|
|
250
|
-
|
|
251
|
-
|
|
295
|
+
IInstance instance = product.getInstance();
|
|
296
|
+
instanceReader = instance.getInstanceReader();
|
|
252
297
|
}
|
|
298
|
+
|
|
299
|
+
NftId poolNftId = product.getPoolNftId();
|
|
300
|
+
uint256 netPremiumAmount = premium.netPremiumAmount;
|
|
301
|
+
|
|
253
302
|
{
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
303
|
+
{
|
|
304
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
|
305
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
|
|
306
|
+
premium.productFeeVarAmount = t;
|
|
307
|
+
premium.fullPremiumAmount += t;
|
|
308
|
+
}
|
|
309
|
+
{
|
|
310
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
|
311
|
+
UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
|
|
312
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).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
|
+
}
|
|
257
332
|
}
|
|
258
|
-
|
|
259
|
-
|
|
333
|
+
|
|
334
|
+
return premium;
|
|
260
335
|
}
|
|
261
336
|
|
|
262
337
|
|
|
@@ -265,4 +340,11 @@ contract ApplicationService is
|
|
|
265
340
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
266
341
|
product = Product(productInfo.objectAddress);
|
|
267
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
|
+
}
|
|
268
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
|
+
}
|