@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2af39ab-356
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 +62 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +112 -226
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +59 -92
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +90 -171
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +247 -205
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +63 -164
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +264 -292
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +67 -218
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +30 -11
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -522
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +501 -633
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -222
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- 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/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 +645 -268
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -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 +369 -167
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
- 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 +65 -443
- 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 +108 -249
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +183 -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/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +12 -177
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- 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 +31 -261
- 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 +2 -2
- 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 +2 -2
- 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 +88 -83
- package/contracts/components/Distribution.sol +16 -31
- package/contracts/components/IComponent.sol +40 -16
- package/contracts/components/IDistributionComponent.sol +1 -22
- 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/BundleManager.sol +7 -5
- package/contracts/instance/IInstance.sol +10 -3
- package/contracts/instance/IInstanceService.sol +2 -1
- package/contracts/instance/Instance.sol +25 -11
- package/contracts/instance/InstanceReader.sol +4 -3
- package/contracts/instance/InstanceService.sol +59 -11
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- 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 +23 -7
- 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 +133 -21
- 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 +23 -2
- package/contracts/instance/service/IPolicyService.sol +17 -35
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +61 -175
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +72 -18
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistryService.sol +7 -7
- package/contracts/registry/RegistryService.sol +51 -45
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +10 -19
- 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/RoleId.sol +10 -5
- 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
|
@@ -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
|
+
ISetup.PoolInfo memory poolInfo = abi.decode(
|
|
318
|
+
componentInfo.data, (ISetup.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));
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
|
+
import {ClaimService} from "./ClaimService.sol";
|
|
7
|
+
|
|
8
|
+
contract ClaimServiceManager is ProxyManager {
|
|
9
|
+
|
|
10
|
+
ClaimService private _claimService;
|
|
11
|
+
|
|
12
|
+
/// @dev initializes proxy manager with service implementation
|
|
13
|
+
constructor(
|
|
14
|
+
address registryAddress
|
|
15
|
+
)
|
|
16
|
+
ProxyManager(registryAddress)
|
|
17
|
+
{
|
|
18
|
+
ClaimService svc = new ClaimService();
|
|
19
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
|
20
|
+
IVersionable versionable = deploy(
|
|
21
|
+
address(svc),
|
|
22
|
+
data);
|
|
23
|
+
|
|
24
|
+
_claimService = ClaimService(address(versionable));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//--- view functions ----------------------------------------------------//
|
|
28
|
+
function getClaimService()
|
|
29
|
+
external
|
|
30
|
+
view
|
|
31
|
+
returns (ClaimService)
|
|
32
|
+
{
|
|
33
|
+
return _claimService;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -6,9 +6,10 @@ import {IInstance} from "../../instance/IInstance.sol";
|
|
|
6
6
|
import {InstanceAccessManager} from "../InstanceAccessManager.sol";
|
|
7
7
|
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
|
8
8
|
import {ISetup} from "../../instance/module/ISetup.sol";
|
|
9
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
|
9
10
|
|
|
10
11
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
11
|
-
import {Fee} from "../../types/Fee.sol";
|
|
12
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
12
13
|
import {DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
|
|
13
14
|
import {KEEP_STATE} from "../../types/StateId.sol";
|
|
14
15
|
import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR} from "../../types/ObjectType.sol";
|
|
@@ -25,7 +26,7 @@ import {IComponent} from "../../components/IComponent.sol";
|
|
|
25
26
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
|
26
27
|
import {IDistributionService} from "./IDistributionService.sol";
|
|
27
28
|
|
|
28
|
-
import {UFixed} from "../../types/UFixed.sol";
|
|
29
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
|
29
30
|
import {DistributorType, DistributorTypeLib} from "../../types/DistributorType.sol";
|
|
30
31
|
import {ReferralId, ReferralStatus, ReferralLib} from "../../types/Referral.sol";
|
|
31
32
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
@@ -38,6 +39,9 @@ contract DistributionService is
|
|
|
38
39
|
IDistributionService
|
|
39
40
|
{
|
|
40
41
|
using NftIdLib for NftId;
|
|
42
|
+
using TimestampLib for Timestamp;
|
|
43
|
+
using UFixedLib for UFixed;
|
|
44
|
+
using FeeLib for Fee;
|
|
41
45
|
|
|
42
46
|
address internal _registryAddress;
|
|
43
47
|
|
|
@@ -87,16 +91,22 @@ contract DistributionService is
|
|
|
87
91
|
}
|
|
88
92
|
|
|
89
93
|
function setFees(
|
|
94
|
+
Fee memory minDistributionOwnerFee,
|
|
90
95
|
Fee memory distributionFee
|
|
91
96
|
)
|
|
92
97
|
external
|
|
93
98
|
override
|
|
94
99
|
{
|
|
100
|
+
if (minDistributionOwnerFee.fractionalFee > distributionFee.fractionalFee) {
|
|
101
|
+
revert ErrorIDistributionServiceMinFeeTooHigh(minDistributionOwnerFee.fractionalFee.toInt(), distributionFee.fractionalFee.toInt());
|
|
102
|
+
}
|
|
103
|
+
|
|
95
104
|
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
|
96
105
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
97
106
|
NftId distributionNftId = info.nftId;
|
|
98
107
|
|
|
99
108
|
ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
|
109
|
+
distSetupInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
|
100
110
|
distSetupInfo.distributionFee = distributionFee;
|
|
101
111
|
|
|
102
112
|
instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
|
|
@@ -117,6 +127,16 @@ contract DistributionService is
|
|
|
117
127
|
returns (DistributorType distributorType)
|
|
118
128
|
{
|
|
119
129
|
(,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
|
|
130
|
+
|
|
131
|
+
{
|
|
132
|
+
ISetup.DistributionSetupInfo memory setupInfo = instance.getInstanceReader().getDistributionSetupInfo(distributionNftId);
|
|
133
|
+
UFixed variableFeesPartsTotal = setupInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
|
|
134
|
+
UFixed maxDiscountPercentageLimit = setupInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
|
|
135
|
+
if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
|
|
136
|
+
revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
120
140
|
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
|
121
141
|
Key32 key32 = distributorType.toKey32();
|
|
122
142
|
|
|
@@ -158,7 +178,9 @@ contract DistributionService is
|
|
|
158
178
|
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
|
|
159
179
|
distributorType,
|
|
160
180
|
true, // active
|
|
161
|
-
data
|
|
181
|
+
data,
|
|
182
|
+
0,
|
|
183
|
+
0);
|
|
162
184
|
|
|
163
185
|
instance.createDistributor(distributorNftId, info);
|
|
164
186
|
}
|
|
@@ -170,13 +192,11 @@ contract DistributionService is
|
|
|
170
192
|
) external virtual
|
|
171
193
|
{
|
|
172
194
|
(,, IInstance instance) = _getAndVerifyCallingDistribution();
|
|
173
|
-
|
|
174
|
-
IDistribution.DistributorInfo memory
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
instance.updateDistributor(distributorNftId, info, KEEP_STATE());
|
|
195
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
196
|
+
IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
|
|
197
|
+
distributorInfo.distributorType = distributorType;
|
|
198
|
+
distributorInfo.data = data;
|
|
199
|
+
instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
|
180
200
|
}
|
|
181
201
|
|
|
182
202
|
|
|
@@ -193,10 +213,31 @@ contract DistributionService is
|
|
|
193
213
|
returns (ReferralId referralId)
|
|
194
214
|
{
|
|
195
215
|
(,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
|
|
196
|
-
require(bytes(code).length > 0, "ERROR:DSV-030:CODE_INVALID");
|
|
197
|
-
require(expiryAt > zeroTimestamp(), "ERROR:DSV-031:EXPIRY_AT_ZERO");
|
|
198
216
|
|
|
199
|
-
|
|
217
|
+
if (bytes(code).length == 0) {
|
|
218
|
+
revert ErrorIDistributionServiceInvalidReferral(code);
|
|
219
|
+
}
|
|
220
|
+
if (expiryAt.eqz()) {
|
|
221
|
+
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
225
|
+
IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
|
|
226
|
+
DistributorType distributorType = distributorInfo.distributorType;
|
|
227
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
|
228
|
+
|
|
229
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
|
230
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
|
231
|
+
}
|
|
232
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
|
233
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
|
234
|
+
}
|
|
235
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
|
236
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
|
237
|
+
}
|
|
238
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
|
239
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
|
240
|
+
}
|
|
200
241
|
|
|
201
242
|
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
|
202
243
|
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
|
@@ -221,21 +262,70 @@ contract DistributionService is
|
|
|
221
262
|
virtual
|
|
222
263
|
{
|
|
223
264
|
// TODO: fetch referral
|
|
224
|
-
// TODO:
|
|
225
|
-
// TODO:
|
|
265
|
+
// TODO: update referral usage numbers
|
|
266
|
+
// TODO: update bookkeeping
|
|
267
|
+
// TODO: calculate commission for distributor
|
|
268
|
+
// TODO: calculate fee for distribution owner
|
|
269
|
+
// TODO: updates sum of commission per distributor -> DistributorInfo
|
|
270
|
+
// TODO: updates sum of fee per distribution owner
|
|
226
271
|
revert("NOT_IMPLEMENTED_YET");
|
|
227
272
|
}
|
|
228
273
|
|
|
229
274
|
function calculateFeeAmount(
|
|
275
|
+
NftId distributionNftId,
|
|
230
276
|
ReferralId referralId,
|
|
231
|
-
|
|
277
|
+
IPolicy.Premium memory premium
|
|
232
278
|
)
|
|
233
279
|
external
|
|
234
280
|
virtual
|
|
235
281
|
view
|
|
236
|
-
returns (
|
|
282
|
+
returns (IPolicy.Premium memory finalPremium)
|
|
237
283
|
{
|
|
238
|
-
|
|
284
|
+
(, IInstance instance) = _getAndVerifyDistribution(distributionNftId);
|
|
285
|
+
InstanceReader reader = instance.getInstanceReader();
|
|
286
|
+
|
|
287
|
+
// first calculate all fixed and variable fees for the distribution - this will defined the fullPremium
|
|
288
|
+
ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
|
|
289
|
+
Fee memory distributionFee = setupInfo.distributionFee;
|
|
290
|
+
Fee memory minDistributionOwnerFee = setupInfo.minDistributionOwnerFee;
|
|
291
|
+
uint256 distributionFeeVarAmount = (UFixedLib.toUFixed(premium.netPremiumAmount) * distributionFee.fractionalFee).toInt();
|
|
292
|
+
premium.distributionFeeVarAmount = distributionFeeVarAmount;
|
|
293
|
+
premium.fullPremiumAmount += distributionFeeVarAmount;
|
|
294
|
+
|
|
295
|
+
// if the referral is not valid, then the distribution owner gets everything
|
|
296
|
+
if (! referralIsValid(distributionNftId, referralId)) {
|
|
297
|
+
premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
|
|
298
|
+
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
|
|
299
|
+
premium.premiumAmount = premium.fullPremiumAmount;
|
|
300
|
+
return premium;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// if the referral is valid, the the commission and discount are calculated based in the full premium
|
|
304
|
+
// the remaing amount goes to the distribution owner
|
|
305
|
+
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
|
306
|
+
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
|
307
|
+
IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
|
|
308
|
+
|
|
309
|
+
uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
|
|
310
|
+
premium.commissionAmount = commissionAmount;
|
|
311
|
+
premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
|
|
312
|
+
premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
|
|
313
|
+
premium.distributionOwnerFeeVarAmount = distributionFeeVarAmount - commissionAmount - premium.discountAmount;
|
|
314
|
+
premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
|
|
315
|
+
|
|
316
|
+
return premium;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
|
|
320
|
+
(address distributionAddress, IInstance instance) = _getAndVerifyDistribution(distributionNftId);
|
|
321
|
+
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
|
322
|
+
|
|
323
|
+
if (info.distributorNftId.eqz()) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
|
|
328
|
+
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
|
239
329
|
}
|
|
240
330
|
|
|
241
331
|
function _getAndVerifyCallingDistribution()
|
|
@@ -255,7 +345,25 @@ contract DistributionService is
|
|
|
255
345
|
instance
|
|
256
346
|
) = _getAndVerifyCaller();
|
|
257
347
|
|
|
258
|
-
|
|
348
|
+
if(objectType != DISTRIBUTION()) {
|
|
349
|
+
revert ErrorIDistributionServiceCallerNotDistributor(msg.sender);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function _getAndVerifyDistribution(NftId distributionNftId)
|
|
354
|
+
internal
|
|
355
|
+
view
|
|
356
|
+
returns(
|
|
357
|
+
address distributionAddress,
|
|
358
|
+
IInstance instance
|
|
359
|
+
)
|
|
360
|
+
{
|
|
361
|
+
IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(distributionNftId);
|
|
362
|
+
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
|
|
363
|
+
if (parentInfo.objectType != INSTANCE()) {
|
|
364
|
+
revert ErrorIDistributionServiceParentNftIdNotInstance(distributionNftId, info.parentNftId);
|
|
365
|
+
}
|
|
366
|
+
instance = IInstance(parentInfo.objectAddress);
|
|
259
367
|
}
|
|
260
368
|
|
|
261
369
|
function _getAndVerifyCaller()
|
|
@@ -270,12 +378,16 @@ contract DistributionService is
|
|
|
270
378
|
{
|
|
271
379
|
objectAddress = msg.sender;
|
|
272
380
|
objectNftId = getRegistry().getNftId(objectAddress);
|
|
273
|
-
|
|
381
|
+
if ( objectNftId.eqz()) {
|
|
382
|
+
revert ErrorIServiceCallerUnknown(objectAddress);
|
|
383
|
+
}
|
|
274
384
|
IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(objectNftId);
|
|
275
385
|
objectType = info.objectType;
|
|
276
386
|
|
|
277
387
|
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
|
|
278
|
-
|
|
388
|
+
if (parentInfo.objectType != INSTANCE()) {
|
|
389
|
+
revert ErrorIDistributionServiceParentNftIdNotInstance(objectNftId, info.parentNftId);
|
|
390
|
+
}
|
|
279
391
|
instance = IInstance(parentInfo.objectAddress);
|
|
280
392
|
}
|
|
281
393
|
|
|
@@ -16,7 +16,7 @@ contract DistributionServiceManager is ProxyManager {
|
|
|
16
16
|
constructor(
|
|
17
17
|
address registryAddress
|
|
18
18
|
)
|
|
19
|
-
ProxyManager()
|
|
19
|
+
ProxyManager(registryAddress)
|
|
20
20
|
{
|
|
21
21
|
DistributionService distSrv = new DistributionService();
|
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|