@etherisc/gif-next 0.0.2-d5522f6-712 → 0.0.2-d5b7b78-706
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +832 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +747 -103
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +137 -114
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +743 -26
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +737 -58
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +582 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +692 -178
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +517 -135
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- 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 +1003 -393
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +194 -197
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1015 -781
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +440 -176
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -263
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +369 -299
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -89
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +178 -158
- 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 +61 -78
- 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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +363 -301
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -80
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1211 -172
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +456 -71
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +275 -185
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +155 -245
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +159 -147
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +728 -161
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +60 -291
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +81 -152
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -174
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +244 -379
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -114
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +289 -192
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +313 -76
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +206 -206
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
- 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 +117 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -198
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/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 +131 -27
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +18 -18
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +216 -234
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +70 -69
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +22 -174
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +114 -157
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +2 -152
- 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 +129 -51
- 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 +135 -214
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/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 +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/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 +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 +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 +251 -0
- package/contracts/components/Distribution.sol +199 -83
- package/contracts/components/IComponent.sol +74 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +209 -182
- package/contracts/components/Product.sol +118 -126
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -16
- package/contracts/instance/IInstanceService.sol +37 -5
- package/contracts/instance/Instance.sol +126 -75
- package/contracts/instance/InstanceAccessManager.sol +383 -164
- package/contracts/instance/InstanceReader.sol +9 -34
- package/contracts/instance/InstanceService.sol +277 -127
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +22 -16
- 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 +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +84 -42
- 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 +393 -46
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +30 -12
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +27 -49
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +149 -285
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +136 -61
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +62 -34
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +18 -8
- package/contracts/registry/IRegistryService.sol +19 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +142 -71
- package/contracts/registry/RegistryAccessManager.sol +31 -25
- package/contracts/registry/RegistryService.sol +94 -130
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +94 -120
- package/contracts/registry/TokenRegistry.sol +19 -13
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +19 -19
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +1 -0
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +18 -11
- 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 +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -159
- package/contracts/components/IBaseComponent.sol +0 -34
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -76
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -0,0 +1,350 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRisk} from "../module/IRisk.sol";
|
5
|
+
import {IService} from "./IApplicationService.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
8
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
9
|
+
import {Product} from "../../components/Product.sol";
|
10
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
11
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
12
|
+
import {IInstance} from "../IInstance.sol";
|
13
|
+
import {IComponents} from "../module/IComponents.sol";
|
14
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
15
|
+
import {IRisk} from "../module/IRisk.sol";
|
16
|
+
import {IBundle} from "../module/IBundle.sol";
|
17
|
+
import {IProductService} from "./IProductService.sol";
|
18
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
19
|
+
import {ISetup} from "../module/ISetup.sol";
|
20
|
+
|
21
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
22
|
+
|
23
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
24
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
25
|
+
|
26
|
+
import {Seconds} from "../../types/Seconds.sol";
|
27
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
28
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
29
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.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";
|
32
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
33
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
34
|
+
import {ReferralId} from "../../types/Referral.sol";
|
35
|
+
import {RiskId} from "../../types/RiskId.sol";
|
36
|
+
import {StateId} from "../../types/StateId.sol";
|
37
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
38
|
+
|
39
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
40
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
41
|
+
import {IApplicationService} from "./IApplicationService.sol";
|
42
|
+
import {IBundleService} from "./IBundleService.sol";
|
43
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
44
|
+
import {IPoolService} from "./IPoolService.sol";
|
45
|
+
import {IService} from "../../shared/IService.sol";
|
46
|
+
import {Service} from "../../shared/Service.sol";
|
47
|
+
|
48
|
+
|
49
|
+
contract ApplicationService is
|
50
|
+
ComponentService,
|
51
|
+
IApplicationService
|
52
|
+
{
|
53
|
+
IDistributionService internal _distributionService;
|
54
|
+
|
55
|
+
function _initialize(
|
56
|
+
address owner,
|
57
|
+
bytes memory data
|
58
|
+
)
|
59
|
+
internal
|
60
|
+
virtual override
|
61
|
+
initializer()
|
62
|
+
{
|
63
|
+
// TODO check this, might no longer be the way, refactor if necessary
|
64
|
+
address registryAddress;
|
65
|
+
address initialOwner;
|
66
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
67
|
+
|
68
|
+
initializeService(registryAddress, owner);
|
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();
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
function create(
|
81
|
+
address applicationOwner,
|
82
|
+
RiskId riskId,
|
83
|
+
uint256 sumInsuredAmount,
|
84
|
+
Seconds lifetime,
|
85
|
+
NftId bundleNftId,
|
86
|
+
ReferralId referralId,
|
87
|
+
bytes memory applicationData
|
88
|
+
)
|
89
|
+
external
|
90
|
+
virtual
|
91
|
+
returns (NftId applicationNftId)
|
92
|
+
{
|
93
|
+
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
94
|
+
// TODO: add validations (see create bundle in pool service)
|
95
|
+
|
96
|
+
applicationNftId = getRegistryService().registerPolicy(
|
97
|
+
IRegistry.ObjectInfo(
|
98
|
+
zeroNftId(),
|
99
|
+
productInfo.nftId,
|
100
|
+
POLICY(),
|
101
|
+
false, // intercepting property for policies is defined on product
|
102
|
+
address(0),
|
103
|
+
applicationOwner,
|
104
|
+
""
|
105
|
+
)
|
106
|
+
);
|
107
|
+
|
108
|
+
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
109
|
+
IPolicy.Premium memory premium = calculatePremium(
|
110
|
+
productInfo.nftId,
|
111
|
+
riskId,
|
112
|
+
sumInsuredAmount,
|
113
|
+
lifetime,
|
114
|
+
applicationData,
|
115
|
+
bundleNftId,
|
116
|
+
referralId
|
117
|
+
);
|
118
|
+
|
119
|
+
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
120
|
+
productInfo.nftId,
|
121
|
+
bundleNftId,
|
122
|
+
referralId,
|
123
|
+
riskId,
|
124
|
+
sumInsuredAmount,
|
125
|
+
premium.premiumAmount,
|
126
|
+
0,
|
127
|
+
lifetime,
|
128
|
+
applicationData,
|
129
|
+
"",
|
130
|
+
0,
|
131
|
+
0,
|
132
|
+
0,
|
133
|
+
zeroTimestamp(),
|
134
|
+
zeroTimestamp(),
|
135
|
+
zeroTimestamp()
|
136
|
+
);
|
137
|
+
|
138
|
+
instance.createApplication(applicationNftId, policyInfo);
|
139
|
+
|
140
|
+
// TODO: add logging
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
function renew(
|
145
|
+
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
146
|
+
NftId bundleNftId // will likely need a newer bundle for underwriting
|
147
|
+
)
|
148
|
+
external
|
149
|
+
virtual override
|
150
|
+
returns (NftId applicationNftId)
|
151
|
+
{
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
function adjust(
|
157
|
+
NftId applicationNftId,
|
158
|
+
RiskId riskId,
|
159
|
+
NftId bundleNftId,
|
160
|
+
ReferralId referralId,
|
161
|
+
uint256 sumInsuredAmount,
|
162
|
+
uint256 lifetime,
|
163
|
+
bytes memory applicationData
|
164
|
+
)
|
165
|
+
external
|
166
|
+
virtual override
|
167
|
+
{
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
function revoke(NftId applicationNftId)
|
172
|
+
external
|
173
|
+
virtual override
|
174
|
+
{
|
175
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
176
|
+
instance.updateApplicationState(applicationNftId, REVOKED());
|
177
|
+
}
|
178
|
+
|
179
|
+
// TODO: maybe move this to a pricing service later
|
180
|
+
function calculatePremium(
|
181
|
+
NftId productNftId,
|
182
|
+
RiskId riskId,
|
183
|
+
uint256 sumInsuredAmount,
|
184
|
+
Seconds lifetime,
|
185
|
+
bytes memory applicationData,
|
186
|
+
NftId bundleNftId,
|
187
|
+
ReferralId referralId
|
188
|
+
)
|
189
|
+
public
|
190
|
+
view
|
191
|
+
virtual override
|
192
|
+
returns (
|
193
|
+
IPolicy.Premium memory premium
|
194
|
+
)
|
195
|
+
{
|
196
|
+
uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
|
197
|
+
sumInsuredAmount,
|
198
|
+
riskId,
|
199
|
+
lifetime,
|
200
|
+
applicationData
|
201
|
+
);
|
202
|
+
|
203
|
+
premium = _getFixedFeeAmounts(
|
204
|
+
netPremiumAmount,
|
205
|
+
_getAndVerifyProduct(productNftId),
|
206
|
+
bundleNftId,
|
207
|
+
referralId
|
208
|
+
);
|
209
|
+
|
210
|
+
(
|
211
|
+
premium
|
212
|
+
) = _calculateVariableFeeAmounts(
|
213
|
+
premium,
|
214
|
+
_getAndVerifyProduct(productNftId),
|
215
|
+
bundleNftId,
|
216
|
+
referralId
|
217
|
+
);
|
218
|
+
}
|
219
|
+
|
220
|
+
|
221
|
+
// internal functions
|
222
|
+
function _getFixedFeeAmounts(
|
223
|
+
uint256 netPremiumAmount,
|
224
|
+
Product product,
|
225
|
+
NftId bundleNftId,
|
226
|
+
ReferralId referralId
|
227
|
+
)
|
228
|
+
internal
|
229
|
+
view
|
230
|
+
returns (
|
231
|
+
IPolicy.Premium memory premium
|
232
|
+
)
|
233
|
+
{
|
234
|
+
InstanceReader instanceReader;
|
235
|
+
{
|
236
|
+
IInstance instance = product.getInstance();
|
237
|
+
instanceReader = instance.getInstanceReader();
|
238
|
+
}
|
239
|
+
|
240
|
+
NftId poolNftId = product.getPoolNftId();
|
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
|
248
|
+
|
249
|
+
{
|
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
|
+
}
|
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;
|
294
|
+
{
|
295
|
+
IInstance instance = product.getInstance();
|
296
|
+
instanceReader = instance.getInstanceReader();
|
297
|
+
}
|
298
|
+
|
299
|
+
NftId poolNftId = product.getPoolNftId();
|
300
|
+
uint256 netPremiumAmount = premium.netPremiumAmount;
|
301
|
+
|
302
|
+
{
|
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
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
return premium;
|
335
|
+
}
|
336
|
+
|
337
|
+
|
338
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
339
|
+
IRegistry.ObjectInfo memory productInfo;
|
340
|
+
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
341
|
+
product = Product(productInfo.objectAddress);
|
342
|
+
}
|
343
|
+
|
344
|
+
function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
|
345
|
+
IRegistry registry = getRegistry();
|
346
|
+
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
|
347
|
+
require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
|
348
|
+
product = Product(productInfo.objectAddress);
|
349
|
+
}
|
350
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {ApplicationService} from "./ApplicationService.sol";
|
7
|
+
|
8
|
+
contract ApplicationServiceManager is ProxyManager {
|
9
|
+
|
10
|
+
ApplicationService private _applicationService;
|
11
|
+
|
12
|
+
/// @dev initializes proxy manager with service implementation
|
13
|
+
constructor(
|
14
|
+
address registryAddress
|
15
|
+
)
|
16
|
+
ProxyManager(registryAddress)
|
17
|
+
{
|
18
|
+
ApplicationService svc = new ApplicationService();
|
19
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
20
|
+
IVersionable versionable = deploy(
|
21
|
+
address(svc),
|
22
|
+
data);
|
23
|
+
|
24
|
+
_applicationService = ApplicationService(address(versionable));
|
25
|
+
}
|
26
|
+
|
27
|
+
//--- view functions ----------------------------------------------------//
|
28
|
+
function getApplicationService()
|
29
|
+
external
|
30
|
+
view
|
31
|
+
returns (ApplicationService)
|
32
|
+
{
|
33
|
+
return _applicationService;
|
34
|
+
}
|
35
|
+
}
|
@@ -1,40 +1,41 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
5
|
+
import {IComponents} from "../module/IComponents.sol";
|
5
6
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
7
|
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
-
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
8
|
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
9
|
import {ISetup} from "../module/ISetup.sol";
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
11
11
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
14
13
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
|
-
|
16
14
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
15
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
16
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
17
|
+
import {Pool} from "../../components/Pool.sol";
|
18
|
+
|
19
19
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
-
import {
|
21
|
-
import {
|
20
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
21
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
22
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
24
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
23
25
|
|
24
26
|
import {IService} from "../../shared/IService.sol";
|
25
27
|
import {Service} from "../../shared/Service.sol";
|
26
28
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
29
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
28
30
|
import {IBundleService} from "./IBundleService.sol";
|
29
31
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
32
|
import {InstanceService} from "../InstanceService.sol";
|
31
33
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
33
34
|
|
34
35
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
35
36
|
|
36
37
|
contract BundleService is
|
37
|
-
|
38
|
+
ComponentService,
|
38
39
|
IBundleService
|
39
40
|
{
|
40
41
|
using NftIdLib for NftId;
|
@@ -56,20 +57,19 @@ contract BundleService is
|
|
56
57
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
58
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
59
|
// owner is PoolServiceManager deployer
|
59
|
-
|
60
|
-
|
61
|
-
_registerInterface(type(IBundleService).interfaceId);
|
60
|
+
initializeService(registryAddress, owner);
|
61
|
+
registerInterface(type(IBundleService).interfaceId);
|
62
62
|
}
|
63
63
|
|
64
64
|
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
65
65
|
return BUNDLE();
|
66
66
|
}
|
67
67
|
|
68
|
-
function
|
68
|
+
function create(
|
69
69
|
address owner,
|
70
70
|
Fee memory fee,
|
71
71
|
uint256 stakingAmount,
|
72
|
-
|
72
|
+
Seconds lifetime,
|
73
73
|
bytes calldata filter
|
74
74
|
)
|
75
75
|
external
|
@@ -120,7 +120,7 @@ contract BundleService is
|
|
120
120
|
// TODO add logging
|
121
121
|
}
|
122
122
|
|
123
|
-
function
|
123
|
+
function setFee(
|
124
124
|
NftId bundleNftId,
|
125
125
|
Fee memory fee
|
126
126
|
)
|
@@ -140,52 +140,92 @@ contract BundleService is
|
|
140
140
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
141
141
|
}
|
142
142
|
|
143
|
-
|
143
|
+
|
144
|
+
function lockCollateral(
|
145
|
+
IInstance instance,
|
146
|
+
NftId policyNftId,
|
147
|
+
NftId bundleNftId,
|
148
|
+
uint256 collateralAmount,
|
149
|
+
uint256 netPremiumAmount
|
150
|
+
)
|
144
151
|
external
|
145
152
|
onlyService
|
153
|
+
returns (
|
154
|
+
IBundle.BundleInfo memory bundleInfo
|
155
|
+
)
|
146
156
|
{
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
157
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
158
|
+
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
159
|
+
|
160
|
+
// TODO add validation
|
161
|
+
|
162
|
+
// lock collateral
|
163
|
+
bundleInfo.lockedAmount += collateralAmount;
|
164
|
+
bundleInfo.balanceAmount += netPremiumAmount;
|
151
165
|
|
152
|
-
|
166
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
167
|
+
|
168
|
+
linkPolicy(instance, policyNftId);
|
169
|
+
}
|
170
|
+
|
171
|
+
|
172
|
+
function lock(NftId bundleNftId)
|
153
173
|
external
|
174
|
+
virtual
|
154
175
|
{
|
155
176
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
177
|
+
|
178
|
+
// udpate bundle state
|
179
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
180
|
+
|
181
|
+
// update set of active bundles
|
156
182
|
BundleManager bundleManager = instance.getBundleManager();
|
157
183
|
bundleManager.lock(bundleNftId);
|
184
|
+
|
185
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
158
186
|
}
|
159
187
|
|
160
|
-
|
188
|
+
|
189
|
+
function unlock(NftId bundleNftId)
|
161
190
|
external
|
191
|
+
virtual
|
162
192
|
{
|
163
193
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
194
|
+
|
195
|
+
// udpate bundle state
|
196
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
197
|
+
|
198
|
+
// update set of active bundles
|
164
199
|
BundleManager bundleManager = instance.getBundleManager();
|
165
200
|
bundleManager.unlock(bundleNftId);
|
201
|
+
|
202
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
166
203
|
}
|
167
204
|
|
168
|
-
|
169
|
-
|
170
|
-
NftId bundleNftId,
|
171
|
-
uint256 collateralAmount,
|
172
|
-
uint256 netPremiumAmount
|
173
|
-
)
|
205
|
+
|
206
|
+
function close(NftId bundleNftId)
|
174
207
|
external
|
175
|
-
|
208
|
+
virtual
|
176
209
|
{
|
177
|
-
|
178
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
210
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
179
211
|
|
180
|
-
//
|
181
|
-
|
182
|
-
bundleInfo.balanceAmount += netPremiumAmount;
|
212
|
+
// udpate bundle state
|
213
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
183
214
|
|
184
|
-
|
185
|
-
|
186
|
-
|
215
|
+
// ensure no open policies attached to bundle
|
216
|
+
BundleManager bundleManager = instance.getBundleManager();
|
217
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
218
|
+
if(openPolicies > 0) {
|
219
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
220
|
+
}
|
221
|
+
|
222
|
+
// update set of active bundles
|
223
|
+
bundleManager.lock(bundleNftId);
|
224
|
+
|
225
|
+
emit LogBundleServiceBundleClosed(bundleNftId);
|
187
226
|
}
|
188
227
|
|
228
|
+
|
189
229
|
function increaseBalance(IInstance instance,
|
190
230
|
NftId bundleNftId,
|
191
231
|
uint256 amount
|
@@ -230,7 +270,7 @@ contract BundleService is
|
|
230
270
|
|
231
271
|
// ensure policy has not yet been activated
|
232
272
|
if (policyInfo.activatedAt.gtz()) {
|
233
|
-
revert BundleManager.
|
273
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
234
274
|
}
|
235
275
|
|
236
276
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -273,18 +313,20 @@ contract BundleService is
|
|
273
313
|
{
|
274
314
|
// process token transfer(s)
|
275
315
|
if(stakingAmount > 0) {
|
276
|
-
|
277
|
-
|
316
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
317
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(
|
318
|
+
componentInfo.data, (IComponents.PoolInfo));
|
319
|
+
|
320
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
278
321
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
279
322
|
Fee memory stakingFee = poolInfo.stakingFee;
|
280
323
|
|
281
324
|
tokenHandler.transfer(
|
282
325
|
bundleOwner,
|
283
|
-
|
326
|
+
componentInfo.wallet,
|
284
327
|
stakingAmount
|
285
328
|
);
|
286
329
|
|
287
|
-
|
288
330
|
if (! FeeLib.feeIsZero(stakingFee)) {
|
289
331
|
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
290
332
|
// TODO: track staking fees in pool's state (issue #177)
|
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
BundleService bundleSrv = new BundleService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|