@etherisc/gif-next 0.0.2-d02cb80-460 → 0.0.2-d086e6d-456
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 +78 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +853 -296
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +225 -89
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +725 -316
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +524 -240
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -220
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1038 -784
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +432 -186
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +448 -418
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +303 -138
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +278 -157
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +61 -67
- 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 +1058 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +625 -290
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +356 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +844 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1385 -247
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +646 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +278 -264
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +227 -194
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +791 -134
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +216 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +502 -133
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -157
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +474 -347
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +321 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +801 -255
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +307 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +308 -209
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
- 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 +257 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +202 -318
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +95 -157
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +195 -148
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +213 -202
- 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 +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +39 -9
- package/contracts/instance/Instance.sol +126 -75
- package/contracts/instance/InstanceAccessManager.sol +383 -166
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +312 -128
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +136 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +23 -17
- 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 +239 -68
- package/contracts/instance/service/BundleServiceManager.sol +6 -9
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +367 -50
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +199 -347
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +264 -45
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +93 -56
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +39 -19
- package/contracts/registry/IRegistryService.sol +31 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +243 -224
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +100 -173
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +8 -2
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +30 -22
- 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 +4 -3
- 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 +19 -15
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -145
- package/contracts/components/IBaseComponent.sol +0 -32
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,40 +1,42 @@
|
|
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
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
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";
|
26
29
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
30
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
28
31
|
import {IBundleService} from "./IBundleService.sol";
|
29
32
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
33
|
import {InstanceService} from "../InstanceService.sol";
|
31
34
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
33
35
|
|
34
36
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
35
37
|
|
36
38
|
contract BundleService is
|
37
|
-
|
39
|
+
ComponentService,
|
38
40
|
IBundleService
|
39
41
|
{
|
40
42
|
using NftIdLib for NftId;
|
@@ -56,39 +58,85 @@ contract BundleService is
|
|
56
58
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
59
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
60
|
// owner is PoolServiceManager deployer
|
59
|
-
|
61
|
+
initializeService(registryAddress, owner);
|
62
|
+
registerInterface(type(IBundleService).interfaceId);
|
63
|
+
}
|
60
64
|
|
61
|
-
|
65
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
66
|
+
return BUNDLE();
|
62
67
|
}
|
63
68
|
|
64
|
-
|
65
|
-
|
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
|
+
}
|
66
111
|
}
|
67
112
|
|
68
|
-
|
113
|
+
|
114
|
+
function create(
|
115
|
+
IInstance instance,
|
116
|
+
NftId poolNftId,
|
69
117
|
address owner,
|
70
118
|
Fee memory fee,
|
71
|
-
|
72
|
-
|
119
|
+
Amount stakingAmount,
|
120
|
+
Seconds lifetime,
|
73
121
|
bytes calldata filter
|
74
122
|
)
|
75
123
|
external
|
76
124
|
override
|
125
|
+
// TODO add restricted and add authz for pool service
|
77
126
|
returns(NftId bundleNftId)
|
78
127
|
{
|
79
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
80
128
|
InstanceReader instanceReader = instance.getInstanceReader();
|
81
|
-
NftId poolNftId = info.nftId;
|
82
129
|
|
130
|
+
// create initial bundle info
|
83
131
|
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
84
132
|
poolNftId,
|
85
133
|
fee,
|
86
134
|
filter,
|
87
135
|
stakingAmount,
|
88
|
-
|
89
|
-
|
136
|
+
AmountLib.zero(),
|
137
|
+
AmountLib.zero(),
|
90
138
|
lifetime,
|
91
|
-
|
139
|
+
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
92
140
|
zeroTimestamp()
|
93
141
|
);
|
94
142
|
|
@@ -101,35 +149,37 @@ contract BundleService is
|
|
101
149
|
false, // intercepting property for bundles is defined on pool
|
102
150
|
address(0),
|
103
151
|
owner,
|
104
|
-
|
152
|
+
"" // bundle data to be stored in registry
|
105
153
|
)
|
106
154
|
);
|
107
155
|
|
108
156
|
// create bundle info in instance
|
109
157
|
instance.createBundle(bundleNftId, bundleInfo);
|
110
158
|
|
159
|
+
// put bundle under bundle managemet
|
111
160
|
BundleManager bundleManager = instance.getBundleManager();
|
112
161
|
bundleManager.add(bundleNftId);
|
113
162
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
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
|
+
);
|
119
170
|
|
120
171
|
// TODO add logging
|
121
172
|
}
|
122
173
|
|
123
|
-
function
|
174
|
+
function setFee(
|
124
175
|
NftId bundleNftId,
|
125
176
|
Fee memory fee
|
126
177
|
)
|
127
178
|
external
|
128
179
|
override
|
129
180
|
{
|
130
|
-
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
181
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
131
182
|
InstanceReader instanceReader = instance.getInstanceReader();
|
132
|
-
NftId poolNftId = info.nftId;
|
133
183
|
|
134
184
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
135
185
|
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
@@ -140,36 +190,154 @@ contract BundleService is
|
|
140
190
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
141
191
|
}
|
142
192
|
|
143
|
-
|
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
|
+
)
|
144
202
|
external
|
145
|
-
onlyService
|
203
|
+
onlyService // TODO replace with restricted + appropriate granting
|
146
204
|
{
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
205
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
206
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
207
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
208
|
+
|
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
|
+
}
|
151
213
|
|
152
|
-
|
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)
|
153
264
|
external
|
265
|
+
virtual
|
154
266
|
{
|
155
|
-
(
|
267
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
268
|
+
|
269
|
+
// udpate bundle state
|
270
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
271
|
+
|
272
|
+
// update set of active bundles
|
156
273
|
BundleManager bundleManager = instance.getBundleManager();
|
157
274
|
bundleManager.lock(bundleNftId);
|
275
|
+
|
276
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
158
277
|
}
|
159
278
|
|
160
|
-
|
279
|
+
|
280
|
+
function unlock(NftId bundleNftId)
|
161
281
|
external
|
282
|
+
virtual
|
162
283
|
{
|
163
|
-
(
|
284
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
285
|
+
|
286
|
+
// udpate bundle state
|
287
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
288
|
+
|
289
|
+
// update set of active bundles
|
164
290
|
BundleManager bundleManager = instance.getBundleManager();
|
165
291
|
bundleManager.unlock(bundleNftId);
|
292
|
+
|
293
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
294
|
+
}
|
295
|
+
|
296
|
+
|
297
|
+
function close(
|
298
|
+
IInstance instance,
|
299
|
+
NftId bundleNftId
|
300
|
+
)
|
301
|
+
external
|
302
|
+
virtual
|
303
|
+
// TODO add restricted and autz for pool service
|
304
|
+
{
|
305
|
+
// udpate bundle state
|
306
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
307
|
+
|
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
|
+
}
|
314
|
+
|
315
|
+
// update set of active bundles
|
316
|
+
bundleManager.lock(bundleNftId);
|
166
317
|
}
|
167
318
|
|
168
|
-
|
319
|
+
|
320
|
+
function increaseBalance(
|
321
|
+
IInstance instance,
|
322
|
+
NftId bundleNftId,
|
323
|
+
uint256 premiumAmount
|
324
|
+
)
|
325
|
+
external
|
326
|
+
onlyService
|
327
|
+
{
|
328
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
329
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
330
|
+
|
331
|
+
// update capital and fees when premiums are involved
|
332
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
333
|
+
|
334
|
+
// TODO add logging (?)
|
335
|
+
}
|
336
|
+
|
337
|
+
function releaseCollateral(IInstance instance,
|
169
338
|
NftId policyNftId,
|
170
339
|
NftId bundleNftId,
|
171
|
-
uint256 collateralAmount
|
172
|
-
uint256 netPremiumAmount
|
340
|
+
uint256 collateralAmount
|
173
341
|
)
|
174
342
|
external
|
175
343
|
onlyService
|
@@ -177,26 +345,24 @@ contract BundleService is
|
|
177
345
|
InstanceReader instanceReader = instance.getInstanceReader();
|
178
346
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
179
347
|
|
180
|
-
//
|
181
|
-
bundleInfo.lockedAmount
|
182
|
-
bundleInfo.balanceAmount += netPremiumAmount;
|
348
|
+
// reduce locked amount by released collateral amount
|
349
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
183
350
|
|
184
351
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
185
352
|
|
186
|
-
|
353
|
+
_unlinkPolicy(instance, policyNftId);
|
187
354
|
}
|
188
355
|
|
189
356
|
/// @dev links policy to bundle
|
190
|
-
function
|
357
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
191
358
|
internal
|
192
|
-
onlyService
|
193
359
|
{
|
194
360
|
InstanceReader instanceReader = instance.getInstanceReader();
|
195
361
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
196
362
|
|
197
|
-
// ensure policy has not yet been activated
|
198
|
-
if (policyInfo.activatedAt.gtz()) {
|
199
|
-
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);
|
200
366
|
}
|
201
367
|
|
202
368
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -204,9 +370,8 @@ contract BundleService is
|
|
204
370
|
}
|
205
371
|
|
206
372
|
/// @dev unlinks policy from bundle
|
207
|
-
function
|
373
|
+
function _unlinkPolicy(IInstance instance, NftId policyNftId)
|
208
374
|
internal
|
209
|
-
onlyService
|
210
375
|
{
|
211
376
|
InstanceReader instanceReader = instance.getInstanceReader();
|
212
377
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -219,8 +384,8 @@ contract BundleService is
|
|
219
384
|
}
|
220
385
|
|
221
386
|
// ensure policy is closeable
|
222
|
-
if (
|
223
|
-
|
387
|
+
if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
|
388
|
+
&& policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
|
224
389
|
{
|
225
390
|
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
226
391
|
}
|
@@ -229,32 +394,38 @@ contract BundleService is
|
|
229
394
|
bundleManager.unlinkPolicy(policyNftId);
|
230
395
|
}
|
231
396
|
|
397
|
+
// TODO move this to pool service
|
232
398
|
function _processStakingByTreasury(
|
233
399
|
InstanceReader instanceReader,
|
234
400
|
NftId poolNftId,
|
235
401
|
NftId bundleNftId,
|
236
|
-
|
402
|
+
Amount stakingAmount
|
237
403
|
)
|
238
404
|
internal
|
239
405
|
{
|
240
406
|
// process token transfer(s)
|
241
|
-
if(stakingAmount
|
242
|
-
|
243
|
-
|
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;
|
244
412
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
245
413
|
Fee memory stakingFee = poolInfo.stakingFee;
|
246
414
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
stakingAmount
|
251
|
-
);
|
415
|
+
// pool fee and bundle capital book keeping
|
416
|
+
if (FeeLib.gtz(stakingFee)) {
|
417
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount.toInt());
|
252
418
|
|
253
419
|
|
254
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
255
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
256
420
|
// TODO: track staking fees in pool's state (issue #177)
|
257
421
|
}
|
422
|
+
|
423
|
+
// transfer full staking amount to pool wallet
|
424
|
+
tokenHandler.transfer(
|
425
|
+
bundleOwner,
|
426
|
+
componentInfo.wallet,
|
427
|
+
stakingAmount.toInt()
|
428
|
+
);
|
258
429
|
}
|
259
430
|
}
|
260
431
|
}
|
@@ -6,7 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
6
|
import {BundleService} from "./BundleService.sol";
|
7
7
|
import {Registry} from "../../registry/Registry.sol";
|
8
8
|
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
-
import {
|
9
|
+
import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
|
10
10
|
|
11
11
|
contract BundleServiceManager is ProxyManager {
|
12
12
|
|
@@ -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));
|
@@ -26,10 +26,10 @@ contract BundleServiceManager is ProxyManager {
|
|
26
26
|
|
27
27
|
_bundleService = BundleService(address(versionable));
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
//
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _bundleService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
33
|
//registryService.registerService(_poolService);
|
34
34
|
|
35
35
|
// TODO no nft to link yet
|
@@ -37,9 +37,6 @@ contract BundleServiceManager is ProxyManager {
|
|
37
37
|
//_linkToNftOwnable(
|
38
38
|
// address(registryAddress),
|
39
39
|
// address(_poolService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
_isDeployed = true;
|
43
40
|
}
|
44
41
|
|
45
42
|
//--- view functions ----------------------------------------------------//
|
@@ -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, owner);
|
68
|
+
registerInterface(type(IClaimService).interfaceId);
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
function getDomain() public pure override(IService, Service) 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
|
+
}
|