@etherisc/gif-next 0.0.2-bfb44e0-483 → 0.0.2-c0b400a-177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +80 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +125 -239
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +77 -92
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +102 -183
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +261 -201
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +81 -164
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +278 -288
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +85 -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 +496 -536
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -212
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +567 -621
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +448 -121
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -227
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +170 -397
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +207 -116
- 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 +18 -220
- 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 +54 -71
- 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 +182 -331
- 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 +141 -366
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +824 -268
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +312 -109
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +89 -257
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +514 -157
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +45 -289
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +69 -153
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +85 -442
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +116 -249
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +187 -104
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
- 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 +71 -180
- 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 +90 -264
- 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 +11 -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 +12 -177
- 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 +13 -215
- 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 +31 -269
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +96 -81
- package/contracts/components/Distribution.sol +29 -47
- package/contracts/components/IComponent.sol +40 -16
- 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 +171 -126
- package/contracts/components/Product.sol +38 -23
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +7 -5
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +23 -11
- package/contracts/instance/IInstanceService.sol +18 -5
- package/contracts/instance/Instance.sol +62 -16
- package/contracts/instance/InstanceAccessManager.sol +382 -157
- package/contracts/instance/InstanceReader.sol +7 -10
- package/contracts/instance/InstanceService.sol +222 -160
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +5 -5
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +20 -13
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IComponents.sol +35 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +7 -21
- package/contracts/instance/service/ApplicationService.sol +139 -57
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +76 -38
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +224 -31
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -9
- package/contracts/instance/service/IBundleService.sol +19 -11
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +36 -3
- package/contracts/instance/service/IPolicyService.sol +18 -34
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +74 -195
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +128 -17
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +10 -2
- 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 +10 -8
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +26 -21
- package/contracts/registry/RegistryService.sol +62 -40
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +18 -28
- 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 +2 -0
- 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 +10 -12
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/Fee.sol +1 -0
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +5 -4
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +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
@@ -10,6 +10,7 @@ import {Product} from "../../components/Product.sol";
|
|
10
10
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
11
11
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
12
12
|
import {IInstance} from "../IInstance.sol";
|
13
|
+
import {IComponents} from "../module/IComponents.sol";
|
13
14
|
import {IPolicy} from "../module/IPolicy.sol";
|
14
15
|
import {IRisk} from "../module/IRisk.sol";
|
15
16
|
import {IBundle} from "../module/IBundle.sol";
|
@@ -22,11 +23,12 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
22
23
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
23
24
|
import {Versionable} from "../../shared/Versionable.sol";
|
24
25
|
|
26
|
+
import {Seconds} from "../../types/Seconds.sol";
|
25
27
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
26
28
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
27
29
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
28
|
-
import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
29
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
30
|
+
import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
31
|
+
import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
30
32
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
31
33
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
32
34
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -38,6 +40,7 @@ import {ComponentService} from "../base/ComponentService.sol";
|
|
38
40
|
import {InstanceReader} from "../InstanceReader.sol";
|
39
41
|
import {IApplicationService} from "./IApplicationService.sol";
|
40
42
|
import {IBundleService} from "./IBundleService.sol";
|
43
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
41
44
|
import {IPoolService} from "./IPoolService.sol";
|
42
45
|
import {IService} from "../../shared/IService.sol";
|
43
46
|
import {Service} from "../../shared/Service.sol";
|
@@ -47,14 +50,14 @@ contract ApplicationService is
|
|
47
50
|
ComponentService,
|
48
51
|
IApplicationService
|
49
52
|
{
|
53
|
+
IDistributionService internal _distributionService;
|
50
54
|
|
51
|
-
|
52
|
-
function initialize(
|
55
|
+
function _initialize(
|
53
56
|
address owner,
|
54
57
|
bytes memory data
|
55
58
|
)
|
56
|
-
|
57
|
-
virtual
|
59
|
+
internal
|
60
|
+
virtual override
|
58
61
|
initializer()
|
59
62
|
{
|
60
63
|
// TODO check this, might no longer be the way, refactor if necessary
|
@@ -64,20 +67,27 @@ contract ApplicationService is
|
|
64
67
|
|
65
68
|
initializeService(registryAddress, owner);
|
66
69
|
registerInterface(type(IApplicationService).interfaceId);
|
70
|
+
|
71
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
76
|
+
return APPLICATION();
|
67
77
|
}
|
68
78
|
|
69
79
|
|
70
80
|
function create(
|
71
81
|
address applicationOwner,
|
72
82
|
RiskId riskId,
|
83
|
+
uint256 sumInsuredAmount,
|
84
|
+
Seconds lifetime,
|
73
85
|
NftId bundleNftId,
|
74
86
|
ReferralId referralId,
|
75
|
-
uint256 sumInsuredAmount,
|
76
|
-
uint256 lifetime,
|
77
87
|
bytes memory applicationData
|
78
88
|
)
|
79
89
|
external
|
80
|
-
virtual
|
90
|
+
virtual
|
81
91
|
returns (NftId applicationNftId)
|
82
92
|
{
|
83
93
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
@@ -95,7 +105,9 @@ contract ApplicationService is
|
|
95
105
|
)
|
96
106
|
);
|
97
107
|
|
98
|
-
(uint256 premiumAmount
|
108
|
+
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
109
|
+
IPolicy.Premium memory premium = calculatePremium(
|
110
|
+
productInfo.nftId,
|
99
111
|
riskId,
|
100
112
|
sumInsuredAmount,
|
101
113
|
lifetime,
|
@@ -110,7 +122,7 @@ contract ApplicationService is
|
|
110
122
|
referralId,
|
111
123
|
riskId,
|
112
124
|
sumInsuredAmount,
|
113
|
-
premiumAmount,
|
125
|
+
premium.premiumAmount,
|
114
126
|
0,
|
115
127
|
lifetime,
|
116
128
|
applicationData,
|
@@ -123,8 +135,7 @@ contract ApplicationService is
|
|
123
135
|
zeroTimestamp()
|
124
136
|
);
|
125
137
|
|
126
|
-
instance.
|
127
|
-
instance.updatePolicyState(applicationNftId, APPLIED());
|
138
|
+
instance.createApplication(applicationNftId, policyInfo);
|
128
139
|
|
129
140
|
// TODO: add logging
|
130
141
|
}
|
@@ -142,7 +153,7 @@ contract ApplicationService is
|
|
142
153
|
}
|
143
154
|
|
144
155
|
|
145
|
-
function
|
156
|
+
function adjust(
|
146
157
|
NftId applicationNftId,
|
147
158
|
RiskId riskId,
|
148
159
|
NftId bundleNftId,
|
@@ -157,18 +168,20 @@ contract ApplicationService is
|
|
157
168
|
|
158
169
|
}
|
159
170
|
|
160
|
-
function revoke(NftId
|
171
|
+
function revoke(NftId applicationNftId)
|
161
172
|
external
|
162
173
|
virtual override
|
163
174
|
{
|
164
|
-
|
175
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
176
|
+
instance.updateApplicationState(applicationNftId, REVOKED());
|
165
177
|
}
|
166
178
|
|
167
|
-
|
179
|
+
// TODO: maybe move this to a pricing service later
|
168
180
|
function calculatePremium(
|
181
|
+
NftId productNftId,
|
169
182
|
RiskId riskId,
|
170
183
|
uint256 sumInsuredAmount,
|
171
|
-
|
184
|
+
Seconds lifetime,
|
172
185
|
bytes memory applicationData,
|
173
186
|
NftId bundleNftId,
|
174
187
|
ReferralId referralId
|
@@ -177,47 +190,36 @@ contract ApplicationService is
|
|
177
190
|
view
|
178
191
|
virtual override
|
179
192
|
returns (
|
180
|
-
|
181
|
-
uint256 distributionFeeAmount,
|
182
|
-
uint256 productFeeAmount,
|
183
|
-
uint256 poolFeeAmount,
|
184
|
-
uint256 bundleFeeAmount
|
193
|
+
IPolicy.Premium memory premium
|
185
194
|
)
|
186
195
|
{
|
187
|
-
|
188
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
196
|
+
uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
|
189
197
|
sumInsuredAmount,
|
190
198
|
riskId,
|
191
199
|
lifetime,
|
192
200
|
applicationData
|
193
201
|
);
|
194
202
|
|
195
|
-
(
|
196
|
-
productFeeAmount,
|
197
|
-
poolFeeAmount,
|
198
|
-
bundleFeeAmount,
|
199
|
-
distributionFeeAmount
|
200
|
-
) = _calculateFeeAmounts(
|
203
|
+
premium = _getFixedFeeAmounts(
|
201
204
|
netPremiumAmount,
|
202
|
-
|
205
|
+
_getAndVerifyProduct(productNftId),
|
203
206
|
bundleNftId,
|
204
207
|
referralId
|
205
208
|
);
|
206
209
|
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
210
|
+
(
|
211
|
+
premium
|
212
|
+
) = _calculateVariableFeeAmounts(
|
213
|
+
premium,
|
214
|
+
_getAndVerifyProduct(productNftId),
|
215
|
+
bundleNftId,
|
216
|
+
referralId
|
217
|
+
);
|
215
218
|
}
|
216
219
|
|
217
220
|
|
218
221
|
// internal functions
|
219
|
-
|
220
|
-
function _calculateFeeAmounts(
|
222
|
+
function _getFixedFeeAmounts(
|
221
223
|
uint256 netPremiumAmount,
|
222
224
|
Product product,
|
223
225
|
NftId bundleNftId,
|
@@ -226,10 +228,7 @@ contract ApplicationService is
|
|
226
228
|
internal
|
227
229
|
view
|
228
230
|
returns (
|
229
|
-
|
230
|
-
uint256 poolFeeAmount,
|
231
|
-
uint256 bundleFeeAmount,
|
232
|
-
uint256 distributionFeeAmount
|
231
|
+
IPolicy.Premium memory premium
|
233
232
|
)
|
234
233
|
{
|
235
234
|
InstanceReader instanceReader;
|
@@ -239,24 +238,100 @@ contract ApplicationService is
|
|
239
238
|
}
|
240
239
|
|
241
240
|
NftId poolNftId = product.getPoolNftId();
|
242
|
-
|
243
|
-
|
241
|
+
premium = IPolicy.Premium(
|
242
|
+
netPremiumAmount, // net premium
|
243
|
+
netPremiumAmount, // full premium
|
244
|
+
0, // premium
|
245
|
+
0, 0, 0, 0, // fix fees
|
246
|
+
0, 0, 0, 0, // variable fees
|
247
|
+
0, 0, 0, 0); // distribution owner fee/commission/discount
|
244
248
|
|
245
249
|
{
|
246
|
-
|
247
|
-
|
250
|
+
{
|
251
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
252
|
+
uint256 t = productSetupInfo.productFee.fixedFee;
|
253
|
+
premium.productFeeFixAmount = t;
|
254
|
+
premium.fullPremiumAmount += t;
|
255
|
+
}
|
256
|
+
{
|
257
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
258
|
+
uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fixedFee;
|
259
|
+
premium.poolFeeFixAmount = t;
|
260
|
+
premium.fullPremiumAmount += t;
|
261
|
+
}
|
262
|
+
{
|
263
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
264
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
265
|
+
revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
266
|
+
}
|
267
|
+
uint256 t = bundleInfo.fee.fixedFee;
|
268
|
+
premium.bundleFeeFixAmount = t;
|
269
|
+
premium.fullPremiumAmount += t;
|
270
|
+
}
|
271
|
+
{
|
272
|
+
ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
|
273
|
+
uint256 t = distInto.distributionFee.fixedFee;
|
274
|
+
premium.distributionFeeFixAmount = t;
|
275
|
+
premium.fullPremiumAmount += t;
|
276
|
+
}
|
248
277
|
}
|
278
|
+
|
279
|
+
}
|
280
|
+
|
281
|
+
function _calculateVariableFeeAmounts(
|
282
|
+
IPolicy.Premium memory premium,
|
283
|
+
Product product,
|
284
|
+
NftId bundleNftId,
|
285
|
+
ReferralId referralId
|
286
|
+
)
|
287
|
+
internal
|
288
|
+
view
|
289
|
+
returns (
|
290
|
+
IPolicy.Premium memory finalPremium
|
291
|
+
)
|
292
|
+
{
|
293
|
+
InstanceReader instanceReader;
|
249
294
|
{
|
250
|
-
|
251
|
-
|
295
|
+
IInstance instance = product.getInstance();
|
296
|
+
instanceReader = instance.getInstanceReader();
|
252
297
|
}
|
298
|
+
|
299
|
+
NftId poolNftId = product.getPoolNftId();
|
300
|
+
uint256 netPremiumAmount = premium.netPremiumAmount;
|
301
|
+
|
253
302
|
{
|
254
|
-
|
255
|
-
|
256
|
-
|
303
|
+
{
|
304
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
305
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
|
306
|
+
premium.productFeeVarAmount = t;
|
307
|
+
premium.fullPremiumAmount += t;
|
308
|
+
}
|
309
|
+
{
|
310
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
311
|
+
UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
|
312
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).toInt();
|
313
|
+
premium.poolFeeVarAmount = t;
|
314
|
+
premium.fullPremiumAmount += t;
|
315
|
+
}
|
316
|
+
{
|
317
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
318
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
319
|
+
revert IApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
320
|
+
}
|
321
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
|
322
|
+
premium.bundleFeeVarAmount = t;
|
323
|
+
premium.fullPremiumAmount += t;
|
324
|
+
}
|
325
|
+
{
|
326
|
+
premium = _distributionService.calculateFeeAmount(
|
327
|
+
product.getDistributionNftId(),
|
328
|
+
referralId,
|
329
|
+
premium
|
330
|
+
);
|
331
|
+
}
|
257
332
|
}
|
258
|
-
|
259
|
-
|
333
|
+
|
334
|
+
return premium;
|
260
335
|
}
|
261
336
|
|
262
337
|
|
@@ -265,4 +340,11 @@ contract ApplicationService is
|
|
265
340
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
266
341
|
product = Product(productInfo.objectAddress);
|
267
342
|
}
|
343
|
+
|
344
|
+
function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
|
345
|
+
IRegistry registry = getRegistry();
|
346
|
+
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
|
347
|
+
require(productInfo.objectType == PRODUCT(), "OBJECT_TYPE_INVALID");
|
348
|
+
product = Product(productInfo.objectAddress);
|
349
|
+
}
|
268
350
|
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {ApplicationService} from "./ApplicationService.sol";
|
7
|
+
|
8
|
+
contract ApplicationServiceManager is ProxyManager {
|
9
|
+
|
10
|
+
ApplicationService private _applicationService;
|
11
|
+
|
12
|
+
/// @dev initializes proxy manager with service implementation
|
13
|
+
constructor(
|
14
|
+
address registryAddress
|
15
|
+
)
|
16
|
+
ProxyManager(registryAddress)
|
17
|
+
{
|
18
|
+
ApplicationService svc = new ApplicationService();
|
19
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
20
|
+
IVersionable versionable = deploy(
|
21
|
+
address(svc),
|
22
|
+
data);
|
23
|
+
|
24
|
+
_applicationService = ApplicationService(address(versionable));
|
25
|
+
}
|
26
|
+
|
27
|
+
//--- view functions ----------------------------------------------------//
|
28
|
+
function getApplicationService()
|
29
|
+
external
|
30
|
+
view
|
31
|
+
returns (ApplicationService)
|
32
|
+
{
|
33
|
+
return _applicationService;
|
34
|
+
}
|
35
|
+
}
|
@@ -1,25 +1,27 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
5
|
+
import {IComponents} from "../module/IComponents.sol";
|
5
6
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
7
|
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
-
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
8
|
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
9
|
import {ISetup} from "../module/ISetup.sol";
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
11
11
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
14
13
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
|
-
|
16
14
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
15
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
16
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
17
|
+
import {Pool} from "../../components/Pool.sol";
|
18
|
+
|
19
19
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
-
import {
|
21
|
-
import {
|
20
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
21
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
22
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
24
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
23
25
|
|
24
26
|
import {IService} from "../../shared/IService.sol";
|
25
27
|
import {Service} from "../../shared/Service.sol";
|
@@ -63,11 +65,11 @@ contract BundleService is
|
|
63
65
|
return BUNDLE();
|
64
66
|
}
|
65
67
|
|
66
|
-
function
|
68
|
+
function create(
|
67
69
|
address owner,
|
68
70
|
Fee memory fee,
|
69
71
|
uint256 stakingAmount,
|
70
|
-
|
72
|
+
Seconds lifetime,
|
71
73
|
bytes calldata filter
|
72
74
|
)
|
73
75
|
external
|
@@ -118,7 +120,7 @@ contract BundleService is
|
|
118
120
|
// TODO add logging
|
119
121
|
}
|
120
122
|
|
121
|
-
function
|
123
|
+
function setFee(
|
122
124
|
NftId bundleNftId,
|
123
125
|
Fee memory fee
|
124
126
|
)
|
@@ -138,30 +140,6 @@ contract BundleService is
|
|
138
140
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
139
141
|
}
|
140
142
|
|
141
|
-
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
|
142
|
-
external
|
143
|
-
onlyService
|
144
|
-
{
|
145
|
-
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
146
|
-
IInstance instance = IInstance(instanceInfo.objectAddress);
|
147
|
-
instance.updateBundle(bundleNftId, bundleInfo, state);
|
148
|
-
}
|
149
|
-
|
150
|
-
function lockBundle(NftId bundleNftId)
|
151
|
-
external
|
152
|
-
{
|
153
|
-
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
154
|
-
BundleManager bundleManager = instance.getBundleManager();
|
155
|
-
bundleManager.lock(bundleNftId);
|
156
|
-
}
|
157
|
-
|
158
|
-
function unlockBundle(NftId bundleNftId)
|
159
|
-
external
|
160
|
-
{
|
161
|
-
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
162
|
-
BundleManager bundleManager = instance.getBundleManager();
|
163
|
-
bundleManager.unlock(bundleNftId);
|
164
|
-
}
|
165
143
|
|
166
144
|
function lockCollateral(
|
167
145
|
IInstance instance,
|
@@ -190,6 +168,64 @@ contract BundleService is
|
|
190
168
|
linkPolicy(instance, policyNftId);
|
191
169
|
}
|
192
170
|
|
171
|
+
|
172
|
+
function lock(NftId bundleNftId)
|
173
|
+
external
|
174
|
+
virtual
|
175
|
+
{
|
176
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
177
|
+
|
178
|
+
// udpate bundle state
|
179
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
180
|
+
|
181
|
+
// update set of active bundles
|
182
|
+
BundleManager bundleManager = instance.getBundleManager();
|
183
|
+
bundleManager.lock(bundleNftId);
|
184
|
+
|
185
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
function unlock(NftId bundleNftId)
|
190
|
+
external
|
191
|
+
virtual
|
192
|
+
{
|
193
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
194
|
+
|
195
|
+
// udpate bundle state
|
196
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
197
|
+
|
198
|
+
// update set of active bundles
|
199
|
+
BundleManager bundleManager = instance.getBundleManager();
|
200
|
+
bundleManager.unlock(bundleNftId);
|
201
|
+
|
202
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
203
|
+
}
|
204
|
+
|
205
|
+
|
206
|
+
function close(NftId bundleNftId)
|
207
|
+
external
|
208
|
+
virtual
|
209
|
+
{
|
210
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
211
|
+
|
212
|
+
// udpate bundle state
|
213
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
214
|
+
|
215
|
+
// ensure no open policies attached to bundle
|
216
|
+
BundleManager bundleManager = instance.getBundleManager();
|
217
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
218
|
+
if(openPolicies > 0) {
|
219
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
220
|
+
}
|
221
|
+
|
222
|
+
// update set of active bundles
|
223
|
+
bundleManager.lock(bundleNftId);
|
224
|
+
|
225
|
+
emit LogBundleServiceBundleClosed(bundleNftId);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
193
229
|
function increaseBalance(IInstance instance,
|
194
230
|
NftId bundleNftId,
|
195
231
|
uint256 amount
|
@@ -234,7 +270,7 @@ contract BundleService is
|
|
234
270
|
|
235
271
|
// ensure policy has not yet been activated
|
236
272
|
if (policyInfo.activatedAt.gtz()) {
|
237
|
-
revert BundleManager.
|
273
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
238
274
|
}
|
239
275
|
|
240
276
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -277,18 +313,20 @@ contract BundleService is
|
|
277
313
|
{
|
278
314
|
// process token transfer(s)
|
279
315
|
if(stakingAmount > 0) {
|
280
|
-
|
281
|
-
|
316
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
317
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(
|
318
|
+
componentInfo.data, (IComponents.PoolInfo));
|
319
|
+
|
320
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
282
321
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
283
322
|
Fee memory stakingFee = poolInfo.stakingFee;
|
284
323
|
|
285
324
|
tokenHandler.transfer(
|
286
325
|
bundleOwner,
|
287
|
-
|
326
|
+
componentInfo.wallet,
|
288
327
|
stakingAmount
|
289
328
|
);
|
290
329
|
|
291
|
-
|
292
330
|
if (! FeeLib.feeIsZero(stakingFee)) {
|
293
331
|
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
294
332
|
// TODO: track staking fees in pool's state (issue #177)
|
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
BundleService bundleSrv = new BundleService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|