@etherisc/gif-next 0.0.2-4e6a781-730 → 0.0.2-4e99ed1-062
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +280 -94
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +632 -152
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +208 -58
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +407 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +446 -151
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +212 -130
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +591 -185
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +384 -166
- 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 +845 -458
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +240 -193
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1013 -783
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +463 -167
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +136 -228
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +455 -300
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +370 -102
- 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 +181 -177
- 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 +58 -75
- 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 +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +474 -345
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +363 -91
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1224 -198
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +453 -85
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +223 -279
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +796 -147
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +91 -251
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +476 -126
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +73 -154
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +250 -385
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +317 -125
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +634 -203
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +317 -93
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +217 -233
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +309 -93
- 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 +34 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +75 -190
- 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 +47 -15
- 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 +191 -233
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -94
- 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 +141 -37
- 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 -29
- 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 +73 -154
- 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 +113 -33
- 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 -74
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -55
- 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 +178 -158
- 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 +125 -55
- 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 +195 -207
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -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 +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 +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 +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 +115 -78
- package/contracts/components/Distribution.sol +187 -57
- package/contracts/components/IComponent.sol +50 -17
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +84 -31
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +224 -148
- package/contracts/components/Product.sol +97 -69
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +7 -5
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +36 -10
- package/contracts/instance/IInstanceService.sol +35 -4
- package/contracts/instance/Instance.sol +101 -43
- package/contracts/instance/InstanceAccessManager.sol +389 -160
- package/contracts/instance/InstanceReader.sol +8 -10
- package/contracts/instance/InstanceService.sol +243 -190
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +17 -30
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +22 -16
- 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 +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 +215 -77
- 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 +348 -19
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +70 -21
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +27 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +145 -321
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +214 -21
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +34 -58
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +5 -2
- package/contracts/registry/IRegistryService.sol +14 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +43 -28
- package/contracts/registry/RegistryService.sol +70 -50
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- 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 +3 -3
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +4 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -85
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +7 -19
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +32 -20
- 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/Amount.sol +60 -0
- 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 +13 -5
- 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 +16 -9
- 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/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/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,25 +1,28 @@
|
|
|
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
|
+
import {Amount, AmountLib} from "../../types/Amount.sol";
|
|
19
20
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
21
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
|
22
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
22
23
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
24
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
|
25
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
|
23
26
|
|
|
24
27
|
import {IService} from "../../shared/IService.sol";
|
|
25
28
|
import {Service} from "../../shared/Service.sol";
|
|
@@ -55,39 +58,85 @@ contract BundleService is
|
|
|
55
58
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
|
56
59
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
|
57
60
|
// owner is PoolServiceManager deployer
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
_registerInterface(type(IBundleService).interfaceId);
|
|
61
|
+
initializeService(registryAddress, address(0), owner);
|
|
62
|
+
registerInterface(type(IBundleService).interfaceId);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
function getDomain() public pure override
|
|
65
|
+
function getDomain() public pure override returns(ObjectType) {
|
|
64
66
|
return BUNDLE();
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
// TODO staking/unstaking as well as collateralize need to go to pool service
|
|
70
|
+
// it will also be the pool service that is updating the pool info data
|
|
71
|
+
// collateralize -> potentially accumulate pool fees
|
|
72
|
+
// collateralize: additional reason to move to pool, pool might has retential level < 1 ...
|
|
73
|
+
// staking -> potentially accumulate staking fees
|
|
74
|
+
// unstaking -> potentially accumulate performance fees
|
|
75
|
+
function _updatePoolWithStakes(
|
|
76
|
+
IInstance instance,
|
|
77
|
+
NftId poolNftId,
|
|
78
|
+
uint256 stakingAmount
|
|
79
|
+
)
|
|
80
|
+
internal
|
|
81
|
+
returns (
|
|
82
|
+
TokenHandler tokenHandler,
|
|
83
|
+
address wallet,
|
|
84
|
+
uint256 netStakingAmount
|
|
85
|
+
)
|
|
86
|
+
{
|
|
87
|
+
if(stakingAmount > 0) {
|
|
88
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
89
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
90
|
+
|
|
91
|
+
tokenHandler = componentInfo.tokenHandler;
|
|
92
|
+
wallet = componentInfo.wallet;
|
|
93
|
+
|
|
94
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
95
|
+
uint256 poolFeeAmount;
|
|
96
|
+
|
|
97
|
+
// calculate pool fee and net staking amount
|
|
98
|
+
(poolFeeAmount, netStakingAmount) = FeeLib.calculateFee(poolInfo.stakingFee, stakingAmount);
|
|
99
|
+
|
|
100
|
+
// update pool balance and fee amount
|
|
101
|
+
poolInfo.balanceAmount += netStakingAmount;
|
|
102
|
+
|
|
103
|
+
if(poolFeeAmount > 0) {
|
|
104
|
+
poolInfo.feeAmount += poolFeeAmount;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// save updated pool info
|
|
108
|
+
componentInfo.data = abi.encode(poolInfo);
|
|
109
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
function create(
|
|
115
|
+
IInstance instance,
|
|
116
|
+
NftId poolNftId,
|
|
68
117
|
address owner,
|
|
69
118
|
Fee memory fee,
|
|
70
|
-
|
|
71
|
-
|
|
119
|
+
Amount stakingAmount,
|
|
120
|
+
Seconds lifetime,
|
|
72
121
|
bytes calldata filter
|
|
73
122
|
)
|
|
74
123
|
external
|
|
75
124
|
override
|
|
125
|
+
// TODO add restricted and add authz for pool service
|
|
76
126
|
returns(NftId bundleNftId)
|
|
77
127
|
{
|
|
78
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
79
128
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
80
|
-
NftId poolNftId = info.nftId;
|
|
81
129
|
|
|
130
|
+
// create initial bundle info
|
|
82
131
|
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
|
83
132
|
poolNftId,
|
|
84
133
|
fee,
|
|
85
134
|
filter,
|
|
86
135
|
stakingAmount,
|
|
87
|
-
|
|
88
|
-
|
|
136
|
+
AmountLib.zero(),
|
|
137
|
+
AmountLib.zero(),
|
|
89
138
|
lifetime,
|
|
90
|
-
|
|
139
|
+
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
|
91
140
|
zeroTimestamp()
|
|
92
141
|
);
|
|
93
142
|
|
|
@@ -100,35 +149,37 @@ contract BundleService is
|
|
|
100
149
|
false, // intercepting property for bundles is defined on pool
|
|
101
150
|
address(0),
|
|
102
151
|
owner,
|
|
103
|
-
|
|
152
|
+
"" // bundle data to be stored in registry
|
|
104
153
|
)
|
|
105
154
|
);
|
|
106
155
|
|
|
107
156
|
// create bundle info in instance
|
|
108
157
|
instance.createBundle(bundleNftId, bundleInfo);
|
|
109
158
|
|
|
159
|
+
// put bundle under bundle managemet
|
|
110
160
|
BundleManager bundleManager = instance.getBundleManager();
|
|
111
161
|
bundleManager.add(bundleNftId);
|
|
112
162
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
163
|
+
// transfer full staking amount to pool wallet
|
|
164
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
165
|
+
componentInfo.tokenHandler.transfer(
|
|
166
|
+
owner,
|
|
167
|
+
componentInfo.wallet,
|
|
168
|
+
stakingAmount.toInt()
|
|
169
|
+
);
|
|
118
170
|
|
|
119
171
|
// TODO add logging
|
|
120
172
|
}
|
|
121
173
|
|
|
122
|
-
function
|
|
174
|
+
function setFee(
|
|
123
175
|
NftId bundleNftId,
|
|
124
176
|
Fee memory fee
|
|
125
177
|
)
|
|
126
178
|
external
|
|
127
179
|
override
|
|
128
180
|
{
|
|
129
|
-
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
181
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
130
182
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
131
|
-
NftId poolNftId = info.nftId;
|
|
132
183
|
|
|
133
184
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
134
185
|
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
|
@@ -139,55 +190,137 @@ contract BundleService is
|
|
|
139
190
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
140
191
|
}
|
|
141
192
|
|
|
142
|
-
|
|
193
|
+
|
|
194
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
|
195
|
+
function lockCollateral(
|
|
196
|
+
IInstance instance,
|
|
197
|
+
NftId policyNftId,
|
|
198
|
+
NftId bundleNftId,
|
|
199
|
+
uint256 collateralAmount, // required amount to collateralize policy
|
|
200
|
+
uint256 premiumAmount // premium part that reaches bundle for this policy
|
|
201
|
+
)
|
|
143
202
|
external
|
|
144
|
-
onlyService
|
|
203
|
+
onlyService // TODO replace with restricted + appropriate granting
|
|
145
204
|
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
205
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
206
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
|
207
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
150
208
|
|
|
151
|
-
|
|
209
|
+
// ensure bundle is active and not yet expired
|
|
210
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
|
211
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
|
215
|
+
uint capacity = bundleInfo.capitalAmount.toInt() + premiumAmount - bundleInfo.lockedAmount.toInt();
|
|
216
|
+
if(capacity < collateralAmount) {
|
|
217
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// TODO add more validation
|
|
221
|
+
|
|
222
|
+
// updated locked amount
|
|
223
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() + collateralAmount);
|
|
224
|
+
|
|
225
|
+
// update capital and fees when premiums are involved
|
|
226
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
|
227
|
+
|
|
228
|
+
// link policy to bundle in bundle manger
|
|
229
|
+
_linkPolicy(instance, policyNftId);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
function _updateBundleWithPremium(
|
|
234
|
+
IInstance instance,
|
|
235
|
+
NftId bundleNftId,
|
|
236
|
+
IBundle.BundleInfo memory bundleInfo,
|
|
237
|
+
uint256 premiumAmount
|
|
238
|
+
)
|
|
239
|
+
internal
|
|
240
|
+
{
|
|
241
|
+
// update bundle capital and fee amounts
|
|
242
|
+
if(premiumAmount > 0) {
|
|
243
|
+
// calculate fees and net premium amounts
|
|
244
|
+
(
|
|
245
|
+
uint256 feeAmount,
|
|
246
|
+
uint256 netPremiumAmount
|
|
247
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
|
248
|
+
|
|
249
|
+
// update bundle info with additional capital
|
|
250
|
+
bundleInfo.capitalAmount = AmountLib.toAmount(bundleInfo.capitalAmount.toInt() + netPremiumAmount);
|
|
251
|
+
|
|
252
|
+
// update bundle info with additional fees
|
|
253
|
+
if(feeAmount > 0) {
|
|
254
|
+
bundleInfo.feeAmount = AmountLib.toAmount(bundleInfo.feeAmount.toInt() + feeAmount);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// save updated bundle info
|
|
259
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
function lock(NftId bundleNftId)
|
|
152
264
|
external
|
|
265
|
+
virtual
|
|
153
266
|
{
|
|
154
|
-
(
|
|
267
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
268
|
+
|
|
269
|
+
// udpate bundle state
|
|
270
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
|
271
|
+
|
|
272
|
+
// update set of active bundles
|
|
155
273
|
BundleManager bundleManager = instance.getBundleManager();
|
|
156
274
|
bundleManager.lock(bundleNftId);
|
|
275
|
+
|
|
276
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
|
157
277
|
}
|
|
158
278
|
|
|
159
|
-
|
|
279
|
+
|
|
280
|
+
function unlock(NftId bundleNftId)
|
|
160
281
|
external
|
|
282
|
+
virtual
|
|
161
283
|
{
|
|
162
|
-
(
|
|
284
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
285
|
+
|
|
286
|
+
// udpate bundle state
|
|
287
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
|
288
|
+
|
|
289
|
+
// update set of active bundles
|
|
163
290
|
BundleManager bundleManager = instance.getBundleManager();
|
|
164
291
|
bundleManager.unlock(bundleNftId);
|
|
292
|
+
|
|
293
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
|
165
294
|
}
|
|
166
295
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
uint256 netPremiumAmount
|
|
296
|
+
|
|
297
|
+
function close(
|
|
298
|
+
IInstance instance,
|
|
299
|
+
NftId bundleNftId
|
|
172
300
|
)
|
|
173
301
|
external
|
|
174
|
-
|
|
302
|
+
virtual
|
|
303
|
+
// TODO add restricted and autz for pool service
|
|
175
304
|
{
|
|
176
|
-
|
|
177
|
-
|
|
305
|
+
// udpate bundle state
|
|
306
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
|
178
307
|
|
|
179
|
-
//
|
|
180
|
-
|
|
181
|
-
|
|
308
|
+
// ensure no open policies attached to bundle
|
|
309
|
+
BundleManager bundleManager = instance.getBundleManager();
|
|
310
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
|
311
|
+
if(openPolicies > 0) {
|
|
312
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
|
313
|
+
}
|
|
182
314
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
linkPolicy(instance, policyNftId);
|
|
315
|
+
// update set of active bundles
|
|
316
|
+
bundleManager.lock(bundleNftId);
|
|
186
317
|
}
|
|
187
318
|
|
|
188
|
-
|
|
319
|
+
|
|
320
|
+
function increaseBalance(
|
|
321
|
+
IInstance instance,
|
|
189
322
|
NftId bundleNftId,
|
|
190
|
-
uint256
|
|
323
|
+
uint256 premiumAmount
|
|
191
324
|
)
|
|
192
325
|
external
|
|
193
326
|
onlyService
|
|
@@ -195,12 +328,13 @@ contract BundleService is
|
|
|
195
328
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
196
329
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
197
330
|
|
|
198
|
-
|
|
331
|
+
// update capital and fees when premiums are involved
|
|
332
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
|
199
333
|
|
|
200
|
-
|
|
334
|
+
// TODO add logging (?)
|
|
201
335
|
}
|
|
202
336
|
|
|
203
|
-
function
|
|
337
|
+
function releaseCollateral(IInstance instance,
|
|
204
338
|
NftId policyNftId,
|
|
205
339
|
NftId bundleNftId,
|
|
206
340
|
uint256 collateralAmount
|
|
@@ -211,25 +345,24 @@ contract BundleService is
|
|
|
211
345
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
212
346
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
213
347
|
|
|
214
|
-
//
|
|
215
|
-
bundleInfo.lockedAmount
|
|
348
|
+
// reduce locked amount by released collateral amount
|
|
349
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
|
216
350
|
|
|
217
351
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
218
352
|
|
|
219
|
-
|
|
353
|
+
_unlinkPolicy(instance, policyNftId);
|
|
220
354
|
}
|
|
221
355
|
|
|
222
356
|
/// @dev links policy to bundle
|
|
223
|
-
function
|
|
357
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
|
224
358
|
internal
|
|
225
|
-
onlyService
|
|
226
359
|
{
|
|
227
360
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
228
361
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
229
362
|
|
|
230
|
-
// ensure policy has not yet been activated
|
|
231
|
-
if (policyInfo.activatedAt.gtz()) {
|
|
232
|
-
revert BundleManager.
|
|
363
|
+
// ensure policy has not yet been activated in a previous tx already
|
|
364
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
|
365
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
|
233
366
|
}
|
|
234
367
|
|
|
235
368
|
BundleManager bundleManager = instance.getBundleManager();
|
|
@@ -237,9 +370,8 @@ contract BundleService is
|
|
|
237
370
|
}
|
|
238
371
|
|
|
239
372
|
/// @dev unlinks policy from bundle
|
|
240
|
-
function
|
|
373
|
+
function _unlinkPolicy(IInstance instance, NftId policyNftId)
|
|
241
374
|
internal
|
|
242
|
-
onlyService
|
|
243
375
|
{
|
|
244
376
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
245
377
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
@@ -262,32 +394,38 @@ contract BundleService is
|
|
|
262
394
|
bundleManager.unlinkPolicy(policyNftId);
|
|
263
395
|
}
|
|
264
396
|
|
|
397
|
+
// TODO move this to pool service
|
|
265
398
|
function _processStakingByTreasury(
|
|
266
399
|
InstanceReader instanceReader,
|
|
267
400
|
NftId poolNftId,
|
|
268
401
|
NftId bundleNftId,
|
|
269
|
-
|
|
402
|
+
Amount stakingAmount
|
|
270
403
|
)
|
|
271
404
|
internal
|
|
272
405
|
{
|
|
273
406
|
// process token transfer(s)
|
|
274
|
-
if(stakingAmount
|
|
275
|
-
|
|
276
|
-
|
|
407
|
+
if(stakingAmount.gtz()) {
|
|
408
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
409
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
410
|
+
|
|
411
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
|
277
412
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
|
278
413
|
Fee memory stakingFee = poolInfo.stakingFee;
|
|
279
414
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
stakingAmount
|
|
284
|
-
);
|
|
415
|
+
// pool fee and bundle capital book keeping
|
|
416
|
+
if (FeeLib.gtz(stakingFee)) {
|
|
417
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount.toInt());
|
|
285
418
|
|
|
286
419
|
|
|
287
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
|
288
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
|
289
420
|
// TODO: track staking fees in pool's state (issue #177)
|
|
290
421
|
}
|
|
422
|
+
|
|
423
|
+
// transfer full staking amount to pool wallet
|
|
424
|
+
tokenHandler.transfer(
|
|
425
|
+
bundleOwner,
|
|
426
|
+
componentInfo.wallet,
|
|
427
|
+
stakingAmount.toInt()
|
|
428
|
+
);
|
|
291
429
|
}
|
|
292
430
|
}
|
|
293
431
|
}
|
|
@@ -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));
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import {IRisk} from "../module/IRisk.sol";
|
|
5
|
+
import {IService} from "./IApplicationService.sol";
|
|
6
|
+
|
|
7
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
|
8
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
|
9
|
+
import {Product} from "../../components/Product.sol";
|
|
10
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
|
11
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
|
12
|
+
import {IInstance} from "../IInstance.sol";
|
|
13
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
|
14
|
+
import {IRisk} from "../module/IRisk.sol";
|
|
15
|
+
import {IBundle} from "../module/IBundle.sol";
|
|
16
|
+
import {IProductService} from "./IProductService.sol";
|
|
17
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
|
18
|
+
import {ISetup} from "../module/ISetup.sol";
|
|
19
|
+
|
|
20
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
21
|
+
|
|
22
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
23
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
|
24
|
+
|
|
25
|
+
import {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, CLAIM, 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 {ClaimId} from "../../types/ClaimId.sol";
|
|
36
|
+
import {PayoutId} from "../../types/PayoutId.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 {IBundleService} from "./IBundleService.sol";
|
|
42
|
+
import {IClaimService} from "./IClaimService.sol";
|
|
43
|
+
import {IPoolService} from "./IPoolService.sol";
|
|
44
|
+
import {IService} from "../../shared/IService.sol";
|
|
45
|
+
import {Service} from "../../shared/Service.sol";
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
contract ClaimService is
|
|
49
|
+
ComponentService,
|
|
50
|
+
IClaimService
|
|
51
|
+
{
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
function _initialize(
|
|
55
|
+
address owner,
|
|
56
|
+
bytes memory data
|
|
57
|
+
)
|
|
58
|
+
internal
|
|
59
|
+
virtual override
|
|
60
|
+
initializer()
|
|
61
|
+
{
|
|
62
|
+
// TODO check this, might no longer be the way, refactor if necessary
|
|
63
|
+
address registryAddress;
|
|
64
|
+
address initialOwner;
|
|
65
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
|
66
|
+
|
|
67
|
+
initializeService(registryAddress, address(0), owner);
|
|
68
|
+
registerInterface(type(IClaimService).interfaceId);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
function getDomain() public pure override returns(ObjectType) {
|
|
73
|
+
return CLAIM();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
function createClaim(
|
|
78
|
+
NftId policyNftId,
|
|
79
|
+
uint256 claimAmount,
|
|
80
|
+
bytes memory claimData
|
|
81
|
+
)
|
|
82
|
+
external
|
|
83
|
+
virtual
|
|
84
|
+
returns (ClaimId)
|
|
85
|
+
{
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
function confirmClaim(NftId policyNftId, ClaimId claimId, uint256 claimAmount)
|
|
91
|
+
external
|
|
92
|
+
virtual
|
|
93
|
+
// solhint-disable-next-line no-empty-blocks
|
|
94
|
+
{
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
function declineClaim(NftId policyNftId, ClaimId claimId)
|
|
100
|
+
external
|
|
101
|
+
virtual
|
|
102
|
+
// solhint-disable-next-line no-empty-blocks
|
|
103
|
+
{
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
function closeClaim(NftId policyNftId, ClaimId claimId)
|
|
109
|
+
external
|
|
110
|
+
virtual
|
|
111
|
+
// solhint-disable-next-line no-empty-blocks
|
|
112
|
+
{
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
function createPayout(
|
|
118
|
+
NftId policyNftId,
|
|
119
|
+
ClaimId claimId,
|
|
120
|
+
uint256 payoutAmount,
|
|
121
|
+
bytes calldata payoutData
|
|
122
|
+
)
|
|
123
|
+
external
|
|
124
|
+
virtual
|
|
125
|
+
returns(PayoutId payoutId)
|
|
126
|
+
// solhint-disable-next-line no-empty-blocks
|
|
127
|
+
{
|
|
128
|
+
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
function payoutExecuted(
|
|
133
|
+
NftId policyNftId,
|
|
134
|
+
PayoutId payoutId
|
|
135
|
+
)
|
|
136
|
+
external
|
|
137
|
+
virtual
|
|
138
|
+
// solhint-disable-next-line no-empty-blocks
|
|
139
|
+
{
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
// internal functions
|
|
145
|
+
|
|
146
|
+
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
|
147
|
+
IRegistry.ObjectInfo memory productInfo;
|
|
148
|
+
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
149
|
+
product = Product(productInfo.objectAddress);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -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 {ClaimService} from "./ClaimService.sol";
|
|
7
|
+
|
|
8
|
+
contract ClaimServiceManager is ProxyManager {
|
|
9
|
+
|
|
10
|
+
ClaimService private _claimService;
|
|
11
|
+
|
|
12
|
+
/// @dev initializes proxy manager with service implementation
|
|
13
|
+
constructor(
|
|
14
|
+
address registryAddress
|
|
15
|
+
)
|
|
16
|
+
ProxyManager(registryAddress)
|
|
17
|
+
{
|
|
18
|
+
ClaimService svc = new ClaimService();
|
|
19
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
|
20
|
+
IVersionable versionable = deploy(
|
|
21
|
+
address(svc),
|
|
22
|
+
data);
|
|
23
|
+
|
|
24
|
+
_claimService = ClaimService(address(versionable));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//--- view functions ----------------------------------------------------//
|
|
28
|
+
function getClaimService()
|
|
29
|
+
external
|
|
30
|
+
view
|
|
31
|
+
returns (ClaimService)
|
|
32
|
+
{
|
|
33
|
+
return _claimService;
|
|
34
|
+
}
|
|
35
|
+
}
|