@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2aa1035-611
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +90 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +145 -233
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -73
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +169 -150
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +350 -180
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -145
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +298 -288
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +95 -218
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -2000
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -203
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -2776
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -451
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +184 -121
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +100 -215
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +164 -379
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +433 -425
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +244 -105
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -318
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +270 -115
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +99 -236
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +235 -319
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +373 -158
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +417 -232
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +568 -120
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +64 -163
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +563 -366
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +220 -121
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +771 -247
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +237 -102
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +136 -271
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +186 -107
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +4 -193
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +28 -277
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +64 -163
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +72 -203
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +90 -253
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +100 -83
- package/contracts/components/Distribution.sol +22 -46
- package/contracts/components/IComponent.sol +43 -17
- package/contracts/components/IDistributionComponent.sol +1 -30
- package/contracts/components/IPoolComponent.sol +73 -47
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +178 -130
- package/contracts/components/Product.sol +172 -76
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +43 -49
- package/contracts/instance/IInstanceService.sol +32 -12
- package/contracts/instance/Instance.sol +129 -173
- package/contracts/instance/InstanceAccessManager.sol +404 -160
- package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
- package/contracts/instance/InstanceReader.sol +43 -16
- package/contracts/instance/InstanceService.sol +160 -293
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +208 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +23 -6
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +41 -9
- package/contracts/instance/module/ISetup.sol +7 -21
- package/contracts/instance/service/ApplicationService.sol +75 -158
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +230 -88
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +239 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +156 -96
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -30
- package/contracts/instance/service/IBundleService.sol +74 -26
- package/contracts/instance/service/IClaimService.sol +92 -0
- package/contracts/instance/service/IDistributionService.sol +26 -6
- package/contracts/instance/service/IPolicyService.sol +89 -38
- package/contracts/instance/service/IPoolService.sol +85 -3
- package/contracts/instance/service/IPricingService.sol +36 -0
- package/contracts/instance/service/PolicyService.sol +358 -305
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +246 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +37 -60
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +11 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +56 -47
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +26 -33
- package/contracts/registry/TokenRegistry.sol +13 -10
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/INftOwnable.sol +4 -9
- package/contracts/shared/IRegistryLinked.sol +0 -3
- package/contracts/shared/IService.sol +4 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +10 -80
- package/contracts/shared/ProxyManager.sol +98 -24
- package/contracts/shared/Registerable.sol +3 -10
- package/contracts/shared/RegistryLinked.sol +10 -26
- package/contracts/shared/Service.sol +29 -17
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +70 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +12 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
|
@@ -1,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,38 +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
|
-
initializeService(registryAddress, owner);
|
|
61
|
+
initializeService(registryAddress, address(0), owner);
|
|
59
62
|
registerInterface(type(IBundleService).interfaceId);
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
function getDomain() public pure override
|
|
65
|
+
function getDomain() public pure override returns(ObjectType) {
|
|
63
66
|
return BUNDLE();
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
|
|
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.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
function create(
|
|
115
|
+
IInstance instance,
|
|
116
|
+
NftId poolNftId,
|
|
67
117
|
address owner,
|
|
68
118
|
Fee memory fee,
|
|
69
|
-
|
|
70
|
-
|
|
119
|
+
Amount stakingAmount,
|
|
120
|
+
Seconds lifetime,
|
|
71
121
|
bytes calldata filter
|
|
72
122
|
)
|
|
73
123
|
external
|
|
74
124
|
override
|
|
125
|
+
// TODO add restricted and add authz for pool service
|
|
75
126
|
returns(NftId bundleNftId)
|
|
76
127
|
{
|
|
77
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
78
128
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
79
|
-
NftId poolNftId = info.nftId;
|
|
80
129
|
|
|
130
|
+
// create initial bundle info
|
|
81
131
|
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
|
82
132
|
poolNftId,
|
|
83
133
|
fee,
|
|
84
134
|
filter,
|
|
85
135
|
stakingAmount,
|
|
86
|
-
|
|
87
|
-
|
|
136
|
+
AmountLib.zero(),
|
|
137
|
+
AmountLib.zero(),
|
|
88
138
|
lifetime,
|
|
89
|
-
|
|
139
|
+
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
|
90
140
|
zeroTimestamp()
|
|
91
141
|
);
|
|
92
142
|
|
|
@@ -99,100 +149,187 @@ contract BundleService is
|
|
|
99
149
|
false, // intercepting property for bundles is defined on pool
|
|
100
150
|
address(0),
|
|
101
151
|
owner,
|
|
102
|
-
|
|
152
|
+
"" // bundle data to be stored in registry
|
|
103
153
|
)
|
|
104
154
|
);
|
|
105
155
|
|
|
106
156
|
// create bundle info in instance
|
|
107
|
-
instance.createBundle(bundleNftId, bundleInfo);
|
|
157
|
+
instance.getInstanceStore().createBundle(bundleNftId, bundleInfo);
|
|
108
158
|
|
|
159
|
+
// put bundle under bundle managemet
|
|
109
160
|
BundleManager bundleManager = instance.getBundleManager();
|
|
110
161
|
bundleManager.add(bundleNftId);
|
|
111
162
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
+
);
|
|
117
170
|
|
|
118
171
|
// TODO add logging
|
|
119
172
|
}
|
|
120
173
|
|
|
121
|
-
function
|
|
174
|
+
function setFee(
|
|
122
175
|
NftId bundleNftId,
|
|
123
176
|
Fee memory fee
|
|
124
177
|
)
|
|
125
178
|
external
|
|
126
179
|
override
|
|
127
180
|
{
|
|
128
|
-
(
|
|
181
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
|
129
182
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
130
|
-
NftId poolNftId = info.nftId;
|
|
131
|
-
|
|
132
183
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
133
|
-
|
|
134
|
-
|
|
184
|
+
if(bundleInfo.poolNftId.eqz()) {
|
|
185
|
+
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
|
189
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
|
190
|
+
}
|
|
135
191
|
|
|
136
192
|
bundleInfo.fee = fee;
|
|
193
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
|
198
|
+
function lockCollateral(
|
|
199
|
+
IInstance instance,
|
|
200
|
+
NftId policyNftId,
|
|
201
|
+
NftId bundleNftId,
|
|
202
|
+
uint256 collateralAmount, // required amount to collateralize policy
|
|
203
|
+
uint256 premiumAmount // premium part that reaches bundle for this policy
|
|
204
|
+
)
|
|
205
|
+
external
|
|
206
|
+
onlyService // TODO replace with restricted + appropriate granting
|
|
207
|
+
{
|
|
208
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
209
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
|
210
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
211
|
+
|
|
212
|
+
// ensure bundle is active and not yet expired
|
|
213
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
|
214
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
|
215
|
+
}
|
|
137
216
|
|
|
138
|
-
|
|
217
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
|
218
|
+
uint capacity = bundleInfo.capitalAmount.toInt() + premiumAmount - bundleInfo.lockedAmount.toInt();
|
|
219
|
+
if(capacity < collateralAmount) {
|
|
220
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// TODO add more validation
|
|
224
|
+
|
|
225
|
+
// updated locked amount
|
|
226
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() + collateralAmount);
|
|
227
|
+
|
|
228
|
+
// update capital and fees when premiums are involved
|
|
229
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
|
230
|
+
|
|
231
|
+
// link policy to bundle in bundle manger
|
|
232
|
+
_linkPolicy(instance, policyNftId);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
function _updateBundleWithPremium(
|
|
237
|
+
IInstance instance,
|
|
238
|
+
NftId bundleNftId,
|
|
239
|
+
IBundle.BundleInfo memory bundleInfo,
|
|
240
|
+
uint256 premiumAmount
|
|
241
|
+
)
|
|
242
|
+
internal
|
|
243
|
+
{
|
|
244
|
+
// update bundle capital and fee amounts
|
|
245
|
+
if(premiumAmount > 0) {
|
|
246
|
+
// calculate fees and net premium amounts
|
|
247
|
+
(
|
|
248
|
+
,
|
|
249
|
+
uint256 netPremiumAmount
|
|
250
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
|
251
|
+
|
|
252
|
+
// update bundle info with additional capital
|
|
253
|
+
bundleInfo.capitalAmount = AmountLib.toAmount(bundleInfo.capitalAmount.toInt() + netPremiumAmount);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// save updated bundle info
|
|
257
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
139
258
|
}
|
|
140
259
|
|
|
141
|
-
function
|
|
260
|
+
function updateBundleFees(
|
|
261
|
+
IInstance instance,
|
|
262
|
+
NftId bundleNftId,
|
|
263
|
+
Amount feeAmount
|
|
264
|
+
)
|
|
142
265
|
external
|
|
143
|
-
onlyService
|
|
144
266
|
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
instance.updateBundle(bundleNftId, bundleInfo,
|
|
148
|
-
}
|
|
267
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
|
268
|
+
bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
|
|
269
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
270
|
+
}
|
|
149
271
|
|
|
150
|
-
function
|
|
272
|
+
function lock(NftId bundleNftId)
|
|
151
273
|
external
|
|
274
|
+
virtual
|
|
152
275
|
{
|
|
153
|
-
(
|
|
276
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
|
277
|
+
|
|
278
|
+
// udpate bundle state
|
|
279
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
|
280
|
+
|
|
281
|
+
// update set of active bundles
|
|
154
282
|
BundleManager bundleManager = instance.getBundleManager();
|
|
155
283
|
bundleManager.lock(bundleNftId);
|
|
284
|
+
|
|
285
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
|
156
286
|
}
|
|
157
287
|
|
|
158
|
-
|
|
288
|
+
|
|
289
|
+
function unlock(NftId bundleNftId)
|
|
159
290
|
external
|
|
291
|
+
virtual
|
|
160
292
|
{
|
|
161
|
-
(
|
|
293
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
|
294
|
+
|
|
295
|
+
// udpate bundle state
|
|
296
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
|
297
|
+
|
|
298
|
+
// update set of active bundles
|
|
162
299
|
BundleManager bundleManager = instance.getBundleManager();
|
|
163
300
|
bundleManager.unlock(bundleNftId);
|
|
301
|
+
|
|
302
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
|
164
303
|
}
|
|
165
304
|
|
|
166
|
-
|
|
305
|
+
|
|
306
|
+
function close(
|
|
167
307
|
IInstance instance,
|
|
168
|
-
NftId
|
|
169
|
-
NftId bundleNftId,
|
|
170
|
-
uint256 collateralAmount,
|
|
171
|
-
uint256 netPremiumAmount
|
|
308
|
+
NftId bundleNftId
|
|
172
309
|
)
|
|
173
310
|
external
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
IBundle.BundleInfo memory bundleInfo
|
|
177
|
-
)
|
|
311
|
+
virtual
|
|
312
|
+
// TODO add restricted and autz for pool service
|
|
178
313
|
{
|
|
179
|
-
|
|
180
|
-
|
|
314
|
+
// udpate bundle state
|
|
315
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
|
181
316
|
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
317
|
+
// ensure no open policies attached to bundle
|
|
318
|
+
BundleManager bundleManager = instance.getBundleManager();
|
|
319
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
|
320
|
+
if(openPolicies > 0) {
|
|
321
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
|
322
|
+
}
|
|
187
323
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
linkPolicy(instance, policyNftId);
|
|
324
|
+
// update set of active bundles
|
|
325
|
+
bundleManager.lock(bundleNftId);
|
|
191
326
|
}
|
|
192
327
|
|
|
193
|
-
|
|
328
|
+
|
|
329
|
+
function increaseBalance(
|
|
330
|
+
IInstance instance,
|
|
194
331
|
NftId bundleNftId,
|
|
195
|
-
uint256
|
|
332
|
+
uint256 premiumAmount
|
|
196
333
|
)
|
|
197
334
|
external
|
|
198
335
|
onlyService
|
|
@@ -200,12 +337,13 @@ contract BundleService is
|
|
|
200
337
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
201
338
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
202
339
|
|
|
203
|
-
|
|
340
|
+
// update capital and fees when premiums are involved
|
|
341
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
|
204
342
|
|
|
205
|
-
|
|
343
|
+
// TODO add logging (?)
|
|
206
344
|
}
|
|
207
345
|
|
|
208
|
-
function
|
|
346
|
+
function releaseCollateral(IInstance instance,
|
|
209
347
|
NftId policyNftId,
|
|
210
348
|
NftId bundleNftId,
|
|
211
349
|
uint256 collateralAmount
|
|
@@ -216,25 +354,24 @@ contract BundleService is
|
|
|
216
354
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
217
355
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
218
356
|
|
|
219
|
-
//
|
|
220
|
-
bundleInfo.lockedAmount
|
|
357
|
+
// reduce locked amount by released collateral amount
|
|
358
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
|
221
359
|
|
|
222
|
-
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
360
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
|
223
361
|
|
|
224
|
-
|
|
362
|
+
_unlinkPolicy(instance, policyNftId);
|
|
225
363
|
}
|
|
226
364
|
|
|
227
365
|
/// @dev links policy to bundle
|
|
228
|
-
function
|
|
366
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
|
229
367
|
internal
|
|
230
|
-
onlyService
|
|
231
368
|
{
|
|
232
369
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
233
370
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
234
371
|
|
|
235
|
-
// ensure policy has not yet been activated
|
|
236
|
-
if (policyInfo.activatedAt.gtz()) {
|
|
237
|
-
revert BundleManager.
|
|
372
|
+
// ensure policy has not yet been activated in a previous tx already
|
|
373
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
|
374
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
|
238
375
|
}
|
|
239
376
|
|
|
240
377
|
BundleManager bundleManager = instance.getBundleManager();
|
|
@@ -242,9 +379,8 @@ contract BundleService is
|
|
|
242
379
|
}
|
|
243
380
|
|
|
244
381
|
/// @dev unlinks policy from bundle
|
|
245
|
-
function
|
|
382
|
+
function _unlinkPolicy(IInstance instance, NftId policyNftId)
|
|
246
383
|
internal
|
|
247
|
-
onlyService
|
|
248
384
|
{
|
|
249
385
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
250
386
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
@@ -258,7 +394,7 @@ contract BundleService is
|
|
|
258
394
|
|
|
259
395
|
// ensure policy is closeable
|
|
260
396
|
if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
|
|
261
|
-
&& policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
|
|
397
|
+
&& policyInfo.payoutAmount.toInt() < policyInfo.sumInsuredAmount)
|
|
262
398
|
{
|
|
263
399
|
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
|
264
400
|
}
|
|
@@ -267,32 +403,38 @@ contract BundleService is
|
|
|
267
403
|
bundleManager.unlinkPolicy(policyNftId);
|
|
268
404
|
}
|
|
269
405
|
|
|
406
|
+
// TODO move this to pool service
|
|
270
407
|
function _processStakingByTreasury(
|
|
271
408
|
InstanceReader instanceReader,
|
|
272
409
|
NftId poolNftId,
|
|
273
410
|
NftId bundleNftId,
|
|
274
|
-
|
|
411
|
+
Amount stakingAmount
|
|
275
412
|
)
|
|
276
413
|
internal
|
|
277
414
|
{
|
|
278
415
|
// process token transfer(s)
|
|
279
|
-
if(stakingAmount
|
|
280
|
-
|
|
281
|
-
|
|
416
|
+
if(stakingAmount.gtz()) {
|
|
417
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
418
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
419
|
+
|
|
420
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
|
282
421
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
|
283
422
|
Fee memory stakingFee = poolInfo.stakingFee;
|
|
284
423
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
stakingAmount
|
|
289
|
-
);
|
|
424
|
+
// pool fee and bundle capital book keeping
|
|
425
|
+
if (FeeLib.gtz(stakingFee)) {
|
|
426
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount.toInt());
|
|
290
427
|
|
|
291
428
|
|
|
292
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
|
293
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
|
294
429
|
// TODO: track staking fees in pool's state (issue #177)
|
|
295
430
|
}
|
|
431
|
+
|
|
432
|
+
// transfer full staking amount to pool wallet
|
|
433
|
+
tokenHandler.transfer(
|
|
434
|
+
bundleOwner,
|
|
435
|
+
componentInfo.wallet,
|
|
436
|
+
stakingAmount.toInt()
|
|
437
|
+
);
|
|
296
438
|
}
|
|
297
439
|
}
|
|
298
|
-
}
|
|
440
|
+
}
|
|
@@ -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));
|