@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2aa1035-611
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 +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +90 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +145 -233
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -73
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +169 -150
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +350 -180
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -145
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +298 -288
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +95 -218
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -2000
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -203
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -2776
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -451
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +184 -121
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +100 -215
- 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/IAccess.sol/IAccess.json +56 -73
- 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 +164 -379
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +433 -425
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +244 -105
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -318
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +270 -115
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +99 -236
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +235 -319
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +373 -158
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +417 -232
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +568 -120
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +64 -163
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +563 -366
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +220 -121
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +771 -247
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +237 -102
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +136 -271
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +186 -107
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +4 -193
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
- 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 +28 -277
- 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 +23 -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 +64 -163
- 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 +72 -203
- 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 +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +90 -253
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
- 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 +179 -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 +40 -9
- 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 +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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 +38 -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 +100 -83
- package/contracts/components/Distribution.sol +22 -46
- package/contracts/components/IComponent.sol +43 -17
- package/contracts/components/IDistributionComponent.sol +1 -30
- package/contracts/components/IPoolComponent.sol +73 -47
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +178 -130
- package/contracts/components/Product.sol +172 -76
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +43 -49
- package/contracts/instance/IInstanceService.sol +32 -12
- package/contracts/instance/Instance.sol +129 -173
- package/contracts/instance/InstanceAccessManager.sol +404 -160
- package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
- package/contracts/instance/InstanceReader.sol +43 -16
- package/contracts/instance/InstanceService.sol +160 -293
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +208 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +23 -6
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +41 -9
- package/contracts/instance/module/ISetup.sol +7 -21
- package/contracts/instance/service/ApplicationService.sol +75 -158
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +230 -88
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +239 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +156 -96
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -30
- package/contracts/instance/service/IBundleService.sol +74 -26
- package/contracts/instance/service/IClaimService.sol +92 -0
- package/contracts/instance/service/IDistributionService.sol +26 -6
- package/contracts/instance/service/IPolicyService.sol +89 -38
- package/contracts/instance/service/IPoolService.sol +85 -3
- package/contracts/instance/service/IPricingService.sol +36 -0
- package/contracts/instance/service/PolicyService.sol +358 -305
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +246 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +37 -60
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +11 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +56 -47
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +26 -33
- 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 +4 -4
- 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 +29 -17
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +70 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +12 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -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
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
+
import {Amount} from "../../types/Amount.sol";
|
|
4
5
|
import {NftId} from "../../types/NftId.sol";
|
|
5
|
-
import {
|
|
6
|
+
import {ClaimId} from "../../types/ClaimId.sol";
|
|
6
7
|
import {ReferralId} from "../../types/Referral.sol";
|
|
7
8
|
import {RiskId} from "../../types/RiskId.sol";
|
|
9
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
8
10
|
import {Timestamp} from "../../types/Timestamp.sol";
|
|
9
11
|
|
|
10
12
|
interface IPolicy {
|
|
13
|
+
|
|
14
|
+
struct Premium {
|
|
15
|
+
// this is the net premium calculated by the product
|
|
16
|
+
uint256 netPremiumAmount;
|
|
17
|
+
// fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
|
|
18
|
+
uint256 fullPremiumAmount;
|
|
19
|
+
// premium = fullPremium - discount
|
|
20
|
+
uint256 premiumAmount;
|
|
21
|
+
uint256 productFeeFixAmount;
|
|
22
|
+
uint256 poolFeeFixAmount;
|
|
23
|
+
uint256 bundleFeeFixAmount;
|
|
24
|
+
uint256 distributionFeeFixAmount;
|
|
25
|
+
uint256 productFeeVarAmount;
|
|
26
|
+
uint256 poolFeeVarAmount;
|
|
27
|
+
uint256 bundleFeeVarAmount;
|
|
28
|
+
uint256 distributionFeeVarAmount;
|
|
29
|
+
uint256 distributionOwnerFeeFixAmount;
|
|
30
|
+
// this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
|
|
31
|
+
uint256 distributionOwnerFeeVarAmount;
|
|
32
|
+
// this value is based on distributor type referenced in the referral
|
|
33
|
+
uint256 commissionAmount;
|
|
34
|
+
// this is based on referral used
|
|
35
|
+
uint256 discountAmount;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// @dev policy data for the full policy lifecycle
|
|
11
39
|
struct PolicyInfo {
|
|
12
40
|
NftId productNftId;
|
|
13
41
|
NftId bundleNftId;
|
|
@@ -15,13 +43,13 @@ interface IPolicy {
|
|
|
15
43
|
RiskId riskId;
|
|
16
44
|
uint256 sumInsuredAmount;
|
|
17
45
|
uint256 premiumAmount;
|
|
18
|
-
uint256 premiumPaidAmount;
|
|
19
|
-
|
|
46
|
+
uint256 premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
|
|
47
|
+
Seconds lifetime;
|
|
20
48
|
bytes applicationData;
|
|
21
49
|
bytes policyData;
|
|
22
50
|
uint16 claimsCount;
|
|
23
51
|
uint16 openClaimsCount;
|
|
24
|
-
|
|
52
|
+
Amount payoutAmount;
|
|
25
53
|
Timestamp activatedAt; // time of underwriting
|
|
26
54
|
Timestamp expiredAt; // no new claims (activatedAt + lifetime)
|
|
27
55
|
Timestamp closedAt; // no locked capital (or declinedAt)
|
|
@@ -29,16 +57,20 @@ interface IPolicy {
|
|
|
29
57
|
|
|
30
58
|
// claimId neeeds to be encoded policyNftId:claimId combination
|
|
31
59
|
struct ClaimInfo {
|
|
32
|
-
|
|
33
|
-
|
|
60
|
+
Amount claimAmount;
|
|
61
|
+
Amount paidAmount;
|
|
62
|
+
uint8 payoutsCount;
|
|
63
|
+
uint8 openPayoutsCount;
|
|
34
64
|
bytes data;
|
|
35
|
-
|
|
65
|
+
// TODO consider to add processData that may include information supporting confirm or decline
|
|
66
|
+
Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
|
|
36
67
|
}
|
|
37
68
|
|
|
38
69
|
// claimId neeeds to be encoded policyNftId:claimId combination
|
|
39
70
|
struct PayoutInfo {
|
|
40
|
-
|
|
41
|
-
|
|
71
|
+
ClaimId claimId;
|
|
72
|
+
Amount amount;
|
|
73
|
+
// TODO consider to add a beneficiary address that will be the receiver of the payout tokens
|
|
42
74
|
bytes data;
|
|
43
75
|
Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
|
|
44
76
|
}
|
|
@@ -5,21 +5,19 @@ 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
|
+
|
|
12
14
|
struct ProductSetupInfo {
|
|
13
15
|
IERC20Metadata token;
|
|
14
16
|
TokenHandler tokenHandler;
|
|
15
17
|
NftId distributionNftId;
|
|
16
18
|
NftId poolNftId;
|
|
17
|
-
Fee distributionFee; // default distribution fee (no referral id)
|
|
18
19
|
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
|
|
20
|
+
Fee processingFee; // product fee on payout amounts
|
|
23
21
|
bool isIntercepting; // intercepts nft transfers (for products)
|
|
24
22
|
address wallet;
|
|
25
23
|
}
|
|
@@ -27,21 +25,9 @@ interface ISetup {
|
|
|
27
25
|
struct DistributionSetupInfo {
|
|
28
26
|
NftId productNftId;
|
|
29
27
|
TokenHandler tokenHandler;
|
|
30
|
-
Fee
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
struct PoolSetupInfo {
|
|
35
|
-
NftId productNftId;
|
|
36
|
-
TokenHandler tokenHandler;
|
|
37
|
-
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
|
38
|
-
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
|
39
|
-
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
|
40
|
-
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
|
41
|
-
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
|
42
|
-
Fee poolFee; // pool fee on net premium
|
|
43
|
-
Fee stakingFee; // pool fee on staked capital from investor
|
|
44
|
-
Fee performanceFee; // pool fee on profits from capital investors
|
|
28
|
+
Fee minDistributionOwnerFee;
|
|
29
|
+
Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
|
|
45
30
|
address wallet;
|
|
31
|
+
uint256 sumDistributionOwnerFees;
|
|
46
32
|
}
|
|
47
33
|
}
|
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.19;
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import {AmountLib} from "../../types/Amount.sol";
|
|
5
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
6
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
7
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
|
8
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
|
9
|
+
import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE, PRICE} from "../../types/ObjectType.sol";
|
|
10
|
+
import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
|
11
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
12
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
13
|
+
import {ReferralId} from "../../types/Referral.sol";
|
|
14
|
+
import {RiskId} from "../../types/RiskId.sol";
|
|
15
|
+
import {StateId} from "../../types/StateId.sol";
|
|
16
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
|
17
|
+
import {AmountLib} from "../../types/Amount.sol";
|
|
18
|
+
|
|
19
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
20
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
21
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
|
22
|
+
import {IService} from "../../shared/IService.sol";
|
|
23
|
+
import {Service} from "../../shared/Service.sol";
|
|
6
24
|
|
|
7
25
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
|
26
|
+
|
|
8
27
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
|
9
|
-
import {Product} from "../../components/Product.sol";
|
|
10
28
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
|
11
29
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
|
12
|
-
import {
|
|
30
|
+
import {Product} from "../../components/Product.sol";
|
|
31
|
+
|
|
32
|
+
import {IComponents} from "../module/IComponents.sol";
|
|
13
33
|
import {IPolicy} from "../module/IPolicy.sol";
|
|
14
34
|
import {IRisk} from "../module/IRisk.sol";
|
|
15
35
|
import {IBundle} from "../module/IBundle.sol";
|
|
@@ -17,44 +37,31 @@ import {IProductService} from "./IProductService.sol";
|
|
|
17
37
|
import {ITreasury} from "../module/ITreasury.sol";
|
|
18
38
|
import {ISetup} from "../module/ISetup.sol";
|
|
19
39
|
|
|
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 {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
26
|
-
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
|
27
|
-
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 {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
31
|
-
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
32
|
-
import {ReferralId} from "../../types/Referral.sol";
|
|
33
|
-
import {RiskId} from "../../types/RiskId.sol";
|
|
34
|
-
import {StateId} from "../../types/StateId.sol";
|
|
35
|
-
import {Version, VersionLib} from "../../types/Version.sol";
|
|
36
|
-
|
|
37
40
|
import {ComponentService} from "../base/ComponentService.sol";
|
|
41
|
+
|
|
42
|
+
import {IInstance} from "../IInstance.sol";
|
|
38
43
|
import {InstanceReader} from "../InstanceReader.sol";
|
|
44
|
+
|
|
39
45
|
import {IApplicationService} from "./IApplicationService.sol";
|
|
40
46
|
import {IBundleService} from "./IBundleService.sol";
|
|
47
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
|
41
48
|
import {IPoolService} from "./IPoolService.sol";
|
|
42
|
-
import {
|
|
43
|
-
import {Service} from "../../shared/Service.sol";
|
|
49
|
+
import {IPricingService} from "./IPricingService.sol";
|
|
44
50
|
|
|
45
51
|
|
|
46
52
|
contract ApplicationService is
|
|
47
53
|
ComponentService,
|
|
48
54
|
IApplicationService
|
|
49
55
|
{
|
|
56
|
+
IDistributionService internal _distributionService;
|
|
57
|
+
IPricingService internal _pricingService;
|
|
50
58
|
|
|
51
|
-
|
|
52
|
-
function initialize(
|
|
59
|
+
function _initialize(
|
|
53
60
|
address owner,
|
|
54
61
|
bytes memory data
|
|
55
62
|
)
|
|
56
|
-
|
|
57
|
-
virtual
|
|
63
|
+
internal
|
|
64
|
+
virtual override
|
|
58
65
|
initializer()
|
|
59
66
|
{
|
|
60
67
|
// TODO check this, might no longer be the way, refactor if necessary
|
|
@@ -62,31 +69,39 @@ contract ApplicationService is
|
|
|
62
69
|
address initialOwner;
|
|
63
70
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
|
64
71
|
|
|
65
|
-
initializeService(registryAddress, owner);
|
|
72
|
+
initializeService(registryAddress, address(0), owner);
|
|
66
73
|
registerInterface(type(IApplicationService).interfaceId);
|
|
74
|
+
|
|
75
|
+
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
|
76
|
+
_pricingService = IPricingService(_getServiceAddress(PRICE()));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
function getDomain() public pure override returns(ObjectType) {
|
|
81
|
+
return APPLICATION();
|
|
67
82
|
}
|
|
68
83
|
|
|
69
84
|
|
|
70
85
|
function create(
|
|
71
86
|
address applicationOwner,
|
|
72
87
|
RiskId riskId,
|
|
88
|
+
uint256 sumInsuredAmount,
|
|
89
|
+
Seconds lifetime,
|
|
73
90
|
NftId bundleNftId,
|
|
74
91
|
ReferralId referralId,
|
|
75
|
-
uint256 sumInsuredAmount,
|
|
76
|
-
uint256 lifetime,
|
|
77
92
|
bytes memory applicationData
|
|
78
93
|
)
|
|
79
94
|
external
|
|
80
|
-
virtual
|
|
95
|
+
virtual
|
|
81
96
|
returns (NftId applicationNftId)
|
|
82
97
|
{
|
|
83
|
-
(
|
|
98
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
|
84
99
|
// TODO: add validations (see create bundle in pool service)
|
|
85
100
|
|
|
86
101
|
applicationNftId = getRegistryService().registerPolicy(
|
|
87
102
|
IRegistry.ObjectInfo(
|
|
88
103
|
zeroNftId(),
|
|
89
|
-
|
|
104
|
+
productNftId,
|
|
90
105
|
POLICY(),
|
|
91
106
|
false, // intercepting property for policies is defined on product
|
|
92
107
|
address(0),
|
|
@@ -95,7 +110,9 @@ contract ApplicationService is
|
|
|
95
110
|
)
|
|
96
111
|
);
|
|
97
112
|
|
|
98
|
-
(uint256 premiumAmount
|
|
113
|
+
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
|
114
|
+
IPolicy.Premium memory premium = _pricingService.calculatePremium(
|
|
115
|
+
productNftId,
|
|
99
116
|
riskId,
|
|
100
117
|
sumInsuredAmount,
|
|
101
118
|
lifetime,
|
|
@@ -104,27 +121,26 @@ contract ApplicationService is
|
|
|
104
121
|
referralId
|
|
105
122
|
);
|
|
106
123
|
|
|
107
|
-
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
|
108
|
-
|
|
109
|
-
bundleNftId,
|
|
110
|
-
referralId,
|
|
111
|
-
riskId,
|
|
112
|
-
sumInsuredAmount,
|
|
113
|
-
premiumAmount,
|
|
114
|
-
0,
|
|
115
|
-
lifetime,
|
|
116
|
-
applicationData,
|
|
117
|
-
"",
|
|
118
|
-
0,
|
|
119
|
-
0,
|
|
120
|
-
|
|
121
|
-
zeroTimestamp(),
|
|
122
|
-
zeroTimestamp(),
|
|
123
|
-
zeroTimestamp()
|
|
124
|
-
);
|
|
124
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo({
|
|
125
|
+
productNftId: productNftId,
|
|
126
|
+
bundleNftId: bundleNftId,
|
|
127
|
+
referralId: referralId,
|
|
128
|
+
riskId: riskId,
|
|
129
|
+
sumInsuredAmount: sumInsuredAmount,
|
|
130
|
+
premiumAmount: premium.premiumAmount,
|
|
131
|
+
premiumPaidAmount: 0,
|
|
132
|
+
lifetime: lifetime,
|
|
133
|
+
applicationData: applicationData,
|
|
134
|
+
policyData: "",
|
|
135
|
+
claimsCount: 0,
|
|
136
|
+
openClaimsCount: 0,
|
|
137
|
+
payoutAmount: AmountLib.zero(),
|
|
138
|
+
activatedAt: zeroTimestamp(),
|
|
139
|
+
expiredAt: zeroTimestamp(),
|
|
140
|
+
closedAt: zeroTimestamp()
|
|
141
|
+
});
|
|
125
142
|
|
|
126
|
-
instance.
|
|
127
|
-
instance.updatePolicyState(applicationNftId, APPLIED());
|
|
143
|
+
instance.getInstanceStore().createApplication(applicationNftId, policyInfo);
|
|
128
144
|
|
|
129
145
|
// TODO: add logging
|
|
130
146
|
}
|
|
@@ -142,7 +158,7 @@ contract ApplicationService is
|
|
|
142
158
|
}
|
|
143
159
|
|
|
144
160
|
|
|
145
|
-
function
|
|
161
|
+
function adjust(
|
|
146
162
|
NftId applicationNftId,
|
|
147
163
|
RiskId riskId,
|
|
148
164
|
NftId bundleNftId,
|
|
@@ -157,112 +173,13 @@ contract ApplicationService is
|
|
|
157
173
|
|
|
158
174
|
}
|
|
159
175
|
|
|
160
|
-
function revoke(NftId
|
|
176
|
+
function revoke(NftId applicationNftId)
|
|
161
177
|
external
|
|
162
178
|
virtual override
|
|
163
179
|
{
|
|
164
|
-
|
|
180
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
|
181
|
+
instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
|
|
165
182
|
}
|
|
166
183
|
|
|
167
|
-
|
|
168
|
-
function calculatePremium(
|
|
169
|
-
RiskId riskId,
|
|
170
|
-
uint256 sumInsuredAmount,
|
|
171
|
-
uint256 lifetime,
|
|
172
|
-
bytes memory applicationData,
|
|
173
|
-
NftId bundleNftId,
|
|
174
|
-
ReferralId referralId
|
|
175
|
-
)
|
|
176
|
-
public
|
|
177
|
-
view
|
|
178
|
-
virtual override
|
|
179
|
-
returns (
|
|
180
|
-
uint256 premiumAmount,
|
|
181
|
-
uint256 distributionFeeAmount,
|
|
182
|
-
uint256 productFeeAmount,
|
|
183
|
-
uint256 poolFeeAmount,
|
|
184
|
-
uint256 bundleFeeAmount
|
|
185
|
-
)
|
|
186
|
-
{
|
|
187
|
-
Product product = _getAndVerifyInstanceAndProduct();
|
|
188
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
|
189
|
-
sumInsuredAmount,
|
|
190
|
-
riskId,
|
|
191
|
-
lifetime,
|
|
192
|
-
applicationData
|
|
193
|
-
);
|
|
194
|
-
|
|
195
|
-
(
|
|
196
|
-
productFeeAmount,
|
|
197
|
-
poolFeeAmount,
|
|
198
|
-
bundleFeeAmount,
|
|
199
|
-
distributionFeeAmount
|
|
200
|
-
) = _calculateFeeAmounts(
|
|
201
|
-
netPremiumAmount,
|
|
202
|
-
product,
|
|
203
|
-
bundleNftId,
|
|
204
|
-
referralId
|
|
205
|
-
);
|
|
206
|
-
|
|
207
|
-
premiumAmount = netPremiumAmount + productFeeAmount;
|
|
208
|
-
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
|
209
|
-
premiumAmount += distributionFeeAmount;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
|
214
|
-
return APPLICATION();
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
184
|
// internal functions
|
|
219
|
-
|
|
220
|
-
function _calculateFeeAmounts(
|
|
221
|
-
uint256 netPremiumAmount,
|
|
222
|
-
Product product,
|
|
223
|
-
NftId bundleNftId,
|
|
224
|
-
ReferralId referralId
|
|
225
|
-
)
|
|
226
|
-
internal
|
|
227
|
-
view
|
|
228
|
-
returns (
|
|
229
|
-
uint256 productFeeAmount,
|
|
230
|
-
uint256 poolFeeAmount,
|
|
231
|
-
uint256 bundleFeeAmount,
|
|
232
|
-
uint256 distributionFeeAmount
|
|
233
|
-
)
|
|
234
|
-
{
|
|
235
|
-
InstanceReader instanceReader;
|
|
236
|
-
{
|
|
237
|
-
IInstance instance = product.getInstance();
|
|
238
|
-
instanceReader = instance.getInstanceReader();
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
NftId poolNftId = product.getPoolNftId();
|
|
242
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
243
|
-
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
|
244
|
-
|
|
245
|
-
{
|
|
246
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
|
247
|
-
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
|
248
|
-
}
|
|
249
|
-
{
|
|
250
|
-
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
|
251
|
-
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
|
252
|
-
}
|
|
253
|
-
{
|
|
254
|
-
NftId distributionNftId = product.getDistributionNftId();
|
|
255
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
|
256
|
-
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
|
264
|
-
IRegistry.ObjectInfo memory productInfo;
|
|
265
|
-
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
266
|
-
product = Product(productInfo.objectAddress);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
185
|
+
}
|
|
@@ -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
|
+
}
|