@ledgerhq/context-module 2.1.0 → 2.3.0
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/lib/cjs/package.json +2 -2
- package/lib/cjs/src/ContextModuleBuilder.js +1 -1
- package/lib/cjs/src/ContextModuleBuilder.js.map +2 -2
- package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
- package/lib/cjs/src/ContextModuleBuilder.test.js.map +2 -2
- package/lib/cjs/src/DefaultContextModule.js +1 -1
- package/lib/cjs/src/DefaultContextModule.js.map +3 -3
- package/lib/cjs/src/di.js +1 -1
- package/lib/cjs/src/di.js.map +3 -3
- package/lib/cjs/src/index.js +1 -1
- package/lib/cjs/src/index.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/token/data/HttpTokenDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/multichain/pki/model/KeyId.js +1 -1
- package/lib/cjs/src/modules/multichain/pki/model/KeyId.js.map +2 -2
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
- package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/lifi/data/HttpLifiDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/lifi/data/HttpLifiDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
- package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js.map +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaPayloads.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +3 -3
- package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js.map +1 -1
- package/lib/cjs/src/modules/solana/token/data/HttpTokenDataSource.test.js +2 -2
- package/lib/cjs/src/modules/solana/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
- package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
- package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/cjs/src/shared/utils/HexStringUtils.js +1 -1
- package/lib/cjs/src/shared/utils/HexStringUtils.js.map +3 -3
- package/lib/cjs/src/shared/utils/HexStringUtils.test.js +1 -1
- package/lib/cjs/src/shared/utils/HexStringUtils.test.js.map +2 -2
- package/lib/cjs/src/shared/utils/certificateCache.js +2 -0
- package/lib/cjs/src/shared/utils/certificateCache.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateCache.test.js +2 -0
- package/lib/cjs/src/shared/utils/certificateCache.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateResult.js +2 -0
- package/lib/cjs/src/shared/utils/certificateResult.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateResult.test.js +2 -0
- package/lib/cjs/src/shared/utils/certificateResult.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.js +2 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.js.map +7 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js +2 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js +2 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js.map +7 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js +2 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.js +2 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.js.map +7 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js +2 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/uIntCodec.js +2 -0
- package/lib/cjs/src/shared/utils/uIntCodec.js.map +7 -0
- package/lib/cjs/src/shared/utils/uIntCodec.test.js +2 -0
- package/lib/cjs/src/shared/utils/uIntCodec.test.js.map +7 -0
- package/lib/esm/package.json +2 -2
- package/lib/esm/src/ContextModuleBuilder.js +1 -1
- package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
- package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
- package/lib/esm/src/ContextModuleBuilder.test.js.map +2 -2
- package/lib/esm/src/DefaultContextModule.js +1 -1
- package/lib/esm/src/DefaultContextModule.js.map +3 -3
- package/lib/esm/src/di.js +1 -1
- package/lib/esm/src/di.js.map +3 -3
- package/lib/esm/src/index.js +1 -1
- package/lib/esm/src/index.js.map +2 -2
- package/lib/esm/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
- package/lib/esm/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/token/data/HttpTokenDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/multichain/pki/model/KeyId.js +1 -1
- package/lib/esm/src/modules/multichain/pki/model/KeyId.js.map +2 -2
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
- package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +1 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +1 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/lifi/data/HttpLifiDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/lifi/data/HttpLifiDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js +1 -1
- package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
- package/lib/esm/src/modules/solana/model/SolanaPayloads.js +1 -0
- package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +4 -4
- package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
- package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/solana/token/data/HttpTokenDataSource.test.js +2 -2
- package/lib/esm/src/modules/solana/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +1 -0
- package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js +1 -0
- package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +1 -0
- package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
- package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
- package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/esm/src/shared/utils/HexStringUtils.js +1 -1
- package/lib/esm/src/shared/utils/HexStringUtils.js.map +3 -3
- package/lib/esm/src/shared/utils/HexStringUtils.test.js +1 -1
- package/lib/esm/src/shared/utils/HexStringUtils.test.js.map +2 -2
- package/lib/esm/src/shared/utils/certificateCache.js +2 -0
- package/lib/esm/src/shared/utils/certificateCache.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateCache.test.js +2 -0
- package/lib/esm/src/shared/utils/certificateCache.test.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateResult.js +2 -0
- package/lib/esm/src/shared/utils/certificateResult.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateResult.test.js +2 -0
- package/lib/esm/src/shared/utils/certificateResult.test.js.map +7 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.js +2 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.js.map +7 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.test.js +2 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js +2 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js.map +7 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js +2 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.js +2 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.js.map +7 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.test.js +2 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
- package/lib/esm/src/shared/utils/uIntCodec.js +2 -0
- package/lib/esm/src/shared/utils/uIntCodec.js.map +7 -0
- package/lib/esm/src/shared/utils/uIntCodec.test.js +2 -0
- package/lib/esm/src/shared/utils/uIntCodec.test.js.map +7 -0
- package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
- package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +16 -0
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts +1 -0
- package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts.map +1 -1
- package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts +1 -1
- package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts +17 -0
- package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts +23 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts +4 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts +45 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts +32 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +129 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts +26 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts +39 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts +33 -2
- package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts +8 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +124 -0
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts +6 -5
- package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts.map +1 -1
- package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts +2 -5
- package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts +15 -0
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts +26 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts +24 -0
- package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts +26 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts +17 -0
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts +28 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/shared/model/ClearSignContext.d.ts +7 -1
- package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
- package/lib/types/src/shared/utils/HexStringUtils.d.ts +7 -0
- package/lib/types/src/shared/utils/HexStringUtils.d.ts.map +1 -1
- package/lib/types/src/shared/utils/certificateCache.d.ts +23 -0
- package/lib/types/src/shared/utils/certificateCache.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateCache.test.d.ts +2 -0
- package/lib/types/src/shared/utils/certificateCache.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateResult.d.ts +26 -0
- package/lib/types/src/shared/utils/certificateResult.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateResult.test.d.ts +2 -0
- package/lib/types/src/shared/utils/certificateResult.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.d.ts +43 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.d.ts.map +1 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts +2 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts +7 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts.map +1 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts +2 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.d.ts +15 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.d.ts.map +1 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts +2 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/uIntCodec.d.ts +20 -0
- package/lib/types/src/shared/utils/uIntCodec.d.ts.map +1 -0
- package/lib/types/src/shared/utils/uIntCodec.test.d.ts +2 -0
- package/lib/types/src/shared/utils/uIntCodec.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +6 -6
package/lib/cjs/src/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export type {\n ContextModuleCalBranch,\n ContextModuleCalConfig,\n ContextModuleCalMode,\n ContextModuleConfig,\n ContextModuleDatasourceConfig,\n ContextModuleMetadataServiceConfig,\n ContextModuleReporterConfig,\n ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipError\";\nexport * from \"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader\";\nexport * from \"./modules/ethereum/calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/domain/CalldataContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./modules/ethereum/external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader\";\nexport * from \"./modules/ethereum/model/EthereumClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataContext\";\nexport * from \"./modules/ethereum/nft/data/HttpNftDataSource\";\nexport * from \"./modules/ethereum/nft/data/NftDataSource\";\nexport * from \"./modules/ethereum/nft/domain/NftContextFieldLoader\";\nexport * from \"./modules/ethereum/nft/domain/NftContextLoader\";\nexport * from \"./modules/ethereum/proxy/data/HttpProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/ProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./modules/ethereum/token/data/HttpTokenDataSource\";\nexport * from \"./modules/ethereum/token/data/TokenDataSource\";\nexport * from \"./modules/ethereum/token/domain/TokenContextFieldLoader\";\nexport * from \"./modules/ethereum/token/domain/TokenContextLoader\";\nexport * from \"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./modules/ethereum/typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/data/TypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/utils/getSchemaHash\";\nexport * from \"./modules/ethereum/uniswap/data/AbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/CommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/domain/UniswapContextLoader\";\nexport * from \"./modules/multichain/pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/data/PkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/domain/PkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/model/KeyId\";\nexport * from \"./modules/multichain/pki/model/KeyUsage\";\nexport * from \"./modules/multichain/pki/model/PkiCertificate\";\nexport * from \"./modules/multichain/pki/model/PkiCertificateInfo\";\nexport * from \"./modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/domain/DefaultBlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningEvent\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningModelId\";\nexport * from \"./modules/multichain/transaction-check/utils/constants\";\nexport * from \"./modules/solana/model/SolanaClearSignContext\";\nexport * from \"./modules/solana/model/SolanaContextTypes\";\nexport * from \"./modules/solana/model/SolanaTransactionScanChainId\";\nexport * from \"./modules/solana/owner-info/data/HttpOwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/data/OwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/domain/OwnerInfoContextLoader\";\nexport * from \"./modules/solana/owner-info/domain/solanaContextTypes\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/domain/ContextModuleChainID\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/TransactionSubset\";\n"],
|
|
5
|
-
"mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAUAE,EAAAF,EAAc,2BAVd,gBAWAE,EAAAF,EAAc,kCAXd,gBAYAE,EAAAF,EAAc,kCAZd,gBAaAE,EAAAF,EAAc,kFAbd,gBAcAE,EAAAF,EAAc,6EAdd,gBAeAE,EAAAF,EAAc,sFAfd,gBAgBAE,EAAAF,EAAc,uFAhBd,gBAiBAE,EAAAF,EAAc,yEAjBd,gBAkBAE,EAAAF,EAAc,6EAlBd,gBAmBAE,EAAAF,EAAc,oEAnBd,gBAoBAE,EAAAF,EAAc,4EApBd,gBAqBAE,EAAAF,EAAc,gFArBd,gBAsBAE,EAAAF,EAAc,iFAtBd,gBAuBAE,EAAAF,EAAc,gFAvBd,gBAwBAE,EAAAF,EAAc,4EAxBd,gBAyBAE,EAAAF,EAAc,gFAzBd,gBA0BAE,EAAAF,EAAc,iFA1Bd,gBA2BAE,EAAAF,EAAc,2EA3Bd,gBA4BAE,EAAAF,EAAc,+EA5Bd,gBA6BAE,EAAAF,EAAc,6EA7Bd,gBA8BAE,EAAAF,EAAc,sFA9Bd,gBA+BAE,EAAAF,EAAc,6DA/Bd,gBAgCAE,EAAAF,EAAc,8DAhCd,gBAiCAE,EAAAF,EAAc,qDAjCd,gBAkCAE,EAAAF,EAAc,yDAlCd,gBAmCAE,EAAAF,EAAc,qDAnCd,gBAoCAE,EAAAF,EAAc,+DApCd,gBAqCAE,EAAAF,EAAc,0DArCd,gBAsCAE,EAAAF,EAAc,6DAtCd,gBAuCAE,EAAAF,EAAc,iEAvCd,gBAwCAE,EAAAF,EAAc,yDAxCd,gBAyCAE,EAAAF,EAAc,mEAzCd,gBA0CAE,EAAAF,EAAc,6DA1Cd,gBA2CAE,EAAAF,EAAc,yDA3Cd,gBA4CAE,EAAAF,EAAc,mEA5Cd,gBA6CAE,EAAAF,EAAc,8DA7Cd,gBA8CAE,EAAAF,EAAc,0EA9Cd,gBA+CAE,EAAAF,EAAc,sEA/Cd,gBAgDAE,EAAAF,EAAc,gFAhDd,gBAiDAE,EAAAF,EAAc,2EAjDd,gBAkDAE,EAAAF,EAAc,sEAlDd,gBAmDAE,EAAAF,EAAc,kEAnDd,gBAoDAE,EAAAF,EAAc,8EApDd,gBAqDAE,EAAAF,EAAc,uEArDd,gBAsDAE,EAAAF,EAAc,6DAtDd,gBAuDAE,EAAAF,EAAc,gEAvDd,gBAwDAE,EAAAF,EAAc,oEAxDd,gBAyDAE,EAAAF,EAAc,2EAzDd,gBA0DAE,EAAAF,EAAc,sEA1Dd,gBA2DAE,EAAAF,EAAc,kEA3Dd,gBA4DAE,EAAAF,EAAc,sEA5Dd,gBA6DAE,EAAAF,EAAc,kEA7Dd,gBA8DAE,EAAAF,EAAc,uEA9Dd,gBA+DAE,EAAAF,EAAc,gEA/Dd,gBAgEAE,EAAAF,EAAc,gDAhEd,gBAiEAE,EAAAF,EAAc,mDAjEd,gBAkEAE,EAAAF,EAAc,yDAlEd,gBAmEAE,EAAAF,EAAc,6DAnEd,gBAoEAE,EAAAF,EAAc,6EApEd,gBAqEAE,EAAAF,EAAc,iFArEd,gBAsEAE,EAAAF,EAAc,qEAtEd,gBAuEAE,EAAAF,EAAc,4EAvEd,gBAwEAE,EAAAF,EAAc,iEAxEd,gBAyEAE,EAAAF,EAAc,mEAzEd,gBA0EAE,EAAAF,EAAc,kEA1Ed,gBA2EAE,EAAAF,EAAc,
|
|
4
|
+
"sourcesContent": ["export type {\n ContextModuleCalBranch,\n ContextModuleCalConfig,\n ContextModuleCalMode,\n ContextModuleConfig,\n ContextModuleDatasourceConfig,\n ContextModuleMetadataServiceConfig,\n ContextModuleReporterConfig,\n ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipError\";\nexport * from \"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader\";\nexport * from \"./modules/ethereum/calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/domain/CalldataContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./modules/ethereum/external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader\";\nexport * from \"./modules/ethereum/model/EthereumClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataContext\";\nexport * from \"./modules/ethereum/nft/data/HttpNftDataSource\";\nexport * from \"./modules/ethereum/nft/data/NftDataSource\";\nexport * from \"./modules/ethereum/nft/domain/NftContextFieldLoader\";\nexport * from \"./modules/ethereum/nft/domain/NftContextLoader\";\nexport * from \"./modules/ethereum/proxy/data/HttpProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/ProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./modules/ethereum/token/data/HttpTokenDataSource\";\nexport * from \"./modules/ethereum/token/data/TokenDataSource\";\nexport * from \"./modules/ethereum/token/domain/TokenContextFieldLoader\";\nexport * from \"./modules/ethereum/token/domain/TokenContextLoader\";\nexport * from \"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./modules/ethereum/typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/data/TypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/utils/getSchemaHash\";\nexport * from \"./modules/ethereum/uniswap/data/AbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/CommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/domain/UniswapContextLoader\";\nexport * from \"./modules/multichain/pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/data/PkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/domain/PkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/model/KeyId\";\nexport * from \"./modules/multichain/pki/model/KeyUsage\";\nexport * from \"./modules/multichain/pki/model/PkiCertificate\";\nexport * from \"./modules/multichain/pki/model/PkiCertificateInfo\";\nexport * from \"./modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/domain/DefaultBlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningEvent\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningModelId\";\nexport * from \"./modules/multichain/transaction-check/utils/constants\";\nexport * from \"./modules/solana/alt-resolution/data/AltResolutionDataSource\";\nexport * from \"./modules/solana/alt-resolution/data/HttpAltResolutionDataSource\";\nexport * from \"./modules/solana/alt-resolution/domain/AltResolutionContextLoader\";\nexport * from \"./modules/solana/enum-variant/domain/EnumVariantContextLoader\";\nexport * from \"./modules/solana/instruction-info/data/HttpInstructionInfoDataSource\";\nexport * from \"./modules/solana/instruction-info/data/InstructionInfoDataSource\";\nexport * from \"./modules/solana/instruction-info/domain/InstructionInfoContextLoader\";\nexport * from \"./modules/solana/model/SolanaClearSignContext\";\nexport * from \"./modules/solana/model/SolanaContextTypes\";\nexport * from \"./modules/solana/model/SolanaTransactionScanChainId\";\nexport * from \"./modules/solana/owner-info/data/HttpOwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/data/OwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/domain/OwnerInfoContextLoader\";\nexport * from \"./modules/solana/owner-info/domain/solanaContextTypes\";\nexport * from \"./modules/solana/token-account-state/data/HttpTokenAccountStateDataSource\";\nexport * from \"./modules/solana/token-account-state/data/TokenAccountStateDataSource\";\nexport * from \"./modules/solana/token-account-state/domain/TokenAccountStateContextLoader\";\nexport * from \"./modules/solana/token-info/data/HttpTokenInfoDataSource\";\nexport * from \"./modules/solana/token-info/data/TokenInfoDataSource\";\nexport * from \"./modules/solana/token-info/domain/TokenInfoContextLoader\";\nexport * from \"./modules/solana/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/solana/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/solana/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/domain/ContextModuleChainID\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/TransactionSubset\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["src_exports", "__toCommonJS", "__reExport"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var c=require("@ledgerhq/device-management-kit"),i=require("purify-ts"),C=require("./HttpCalldataDescriptorDataSource");const v={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"test",branch:"main"},originToken:"originToken"};describe("HttpCalldataDescriptorDataSource",()=>{let r,t,o,u,s,m,E,f,p,b,y,h,T;const d={loadCertificate:vi.fn()};beforeEach(()=>{t={get:vi.fn()},r=new C.HttpCalldataDescriptorDataSource(v,d,"dapps",t)}),beforeAll(()=>{vi.clearAllMocks(),o={descriptor:{data:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c",signatures:{test:"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f"}}},u={0:{1:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65",signatures:{test:"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582"}},2:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65",signatures:{test:"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523"}}}},f=D("FROM","UFIXED","AMOUNT","06"),p=D("TO","FIXED","DATETIME","07"),b=D("TO","BOOL","UNIT","08"),y=D("VALUE","INT","DURATION","09"),s={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",start:0,end:5,weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20},type:"TOKEN_AMOUNT",token:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",start:0,end:5,weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20}},descriptor:"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178"},m={param:{value:{type:"path",binary_path:{type:"CONTAINER",value:"TO"},type_family:"STRING",type_size:20},type:"TRUSTED_NAME",types:["eoa"],sources:["ens","unstoppable_domain"]},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402"},E={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",weight:2},{type:"LEAF",leaf_type:"TUPLE_LEAF"},{type:"SLICE",end:2}]},type_family:"BYTES",type_size:20},collection:{type:"path",binary_path:{type:"DATA",elements:[{type:"REF"},{type:"LEAF",leaf_type:"ARRAY_LEAF"},{type:"SLICE",start:1}]},type_family:"INT",type_size:20},type:"NFT"},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020114"},h={param:{id:0,value:{type:"path",binary_path:{type:"DATA",elements:[]},type_family:"BYTES",type_size:20},type:"ENUM"},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020112"},T={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},callee:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20},selector:{type:"path",binary_path:{type:"CONTAINER",value:"FROM"},type_family:"BYTES",type_size:4},amount:{type:"path",binary_path:{type:"DATA",elements:[{type:"REF"},{type:"LEAF",leaf_type:"TUPLE_LEAF"}]},type_family:"UINT",type_size:32},spender:{type:"path",binary_path:{type:"DATA",elements:[{type:"SLICE",start:0,end:20},{type:"LEAF",leaf_type:"ARRAY_LEAF"}]},type_family:"ADDRESS",type_size:20},type:"CALLDATA"},descriptor:"000100010c43616c6c64617461207465737402010803230001000115000100010105020114"}});function D(e,a,l,A){return{param:{value:{type:"path",binary_path:{type:"CONTAINER",value:e},type_family:a,type_size:32},type:l},descriptor:A}}function n(e,a,l){return{descriptors_calldata:{"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9":{"0x69328dec":{type:"calldata",version:"v1",transaction_info:e,enums:a,fields:l}}}}}it.each([["dapps"],["tokens"]])("should call http.get with the correct url for endpoint '%s'",async e=>{t.get.mockResolvedValue([]),await new C.HttpCalldataDescriptorDataSource(v,d,e,t).getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"}),expect(t.get).toHaveBeenCalledWith(`${v.cal.url}/${e}`,{params:{output:"descriptors_calldata",chain_id:1,contracts:"0x0abc",contract_address:"0x0abc",ref:`branch:${v.cal.branch}`}})}),it("should return an error when http.get throws an error",async()=>{t.get.mockRejectedValue(new Error("boom")),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error: boom")))}),it("should return an error when no payload is returned",async()=>{t.get.mockResolvedValue({test:""}),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array")))}),it("should return an error when an empty array is returned",async()=>{t.get.mockResolvedValue([]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff")))}),it("should return an error when selector is not found",async()=>{const e=n(o,u,[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x01fe"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe")))}),it("Calldata with fields references and enums",async()=>{const e=n(o,u,[s,m,E,h]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9",selector:"0x69328dEc"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582",type:"ethereumEnum",id:0,value:1},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523",type:"ethereumEnum",id:0,value:2},{payload:s.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",valuePath:[{type:"ARRAY",start:0,end:5,itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}]}},{payload:m.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumTrustedName",valuePath:"TO",types:["eoa"],sources:["ens","unstoppable_domain"]}},{payload:E.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",valuePath:[{type:"REF"},{type:"LEAF",leafType:"ARRAY_LEAF"},{type:"SLICE",start:1}]}},{payload:h.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumEnum",valuePath:[],id:0}}])}),it("Calldata with fields references and enums with certificates",async()=>{const e=n(o,u,[s,m,E,h]),a={keyUsageNumber:11,payload:new Uint8Array([1,2,3,4,21,4,5,6,7,8])};t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValueOnce(a);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9",selector:"0x69328dEc"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo",certificate:a},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582",type:"ethereumEnum",id:0,value:1,certificate:a},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523",type:"ethereumEnum",id:0,value:2,certificate:a},{payload:s.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",valuePath:[{type:"ARRAY",start:0,end:5,itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}]}},{payload:m.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumTrustedName",valuePath:"TO",types:["eoa"],sources:["ens","unstoppable_domain"]}},{payload:E.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",valuePath:[{type:"REF"},{type:"LEAF",leafType:"ARRAY_LEAF"},{type:"SLICE",start:1}]}},{payload:h.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumEnum",valuePath:[],id:0}}])}),it("Calldata without fields references",async()=>{const e=n(o,[],[f,p,b,y]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata on third array element",async()=>{const e=n(o,[],[f,p,b,y]);t.get.mockResolvedValue([{},{},e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata without fields references and transaction info signature length % 2 different from 0",async()=>{const e={descriptor:{data:o.descriptor.data,signatures:{test:o.descriptor.signatures.test+"0"}}},a=n(e,[],[f,p,b,y]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata with token fields references as constants",async()=>{const e={name:"Amount to exchange",param:{type:"TOKEN_AMOUNT",token:{raw:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",type:"constant",value:"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",version:1,type_size:20,type_family:"ADDRESS"},value:{type:"path",version:1,abi_path:{type:"data",absolute:!0,elements:[{type:"field",identifier:"_stETHAmount"}]},type_size:32,binary_path:{type:"DATA",version:1,elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"UINT"},version:1},version:1,descriptor:"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",value:"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"}}])}),it("Calldata with collection fields references as constants",async()=>{const e={name:"Collection ID",param:{type:"NFT",collection:{raw:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",type:"constant",value:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",version:1,type_size:20,type_family:"ADDRESS"},value:{type:"path",version:1,abi_path:{type:"data",absolute:!0,elements:[{type:"field",identifier:"_collectionId"}]},type_size:20,binary_path:{type:"DATA",version:1,elements:[{type:"ARRAY",weight:2},{type:"LEAF",leaf_type:"TUPLE_LEAF"},{type:"SLICE",end:2}]},type_family:"BYTES"},version:1},version:1,descriptor:"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",value:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9"}}])}),it("Calldata with CALLDATA fields references",async()=>{const e=n(o,[],[T]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:T.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"calldata",valuePath:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],callee:[{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],selector:"FROM",amount:[{type:"REF"},{type:"LEAF",leafType:"TUPLE_LEAF"}],spender:[{type:"SLICE",start:0,end:20},{type:"LEAF",leafType:"ARRAY_LEAF"}]}}])}),it("Calldata with CALLDATA fields references without optional properties",async()=>{const e={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},callee:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},type:"CALLDATA"},descriptor:"000100010c43616c6c64617461207465737402010803230001000115000100010105020114"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"calldata",valuePath:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],callee:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],selector:void 0,amount:void 0,spender:void 0,chainId:void 0}}])}),it("should return an error when calldata is not correctly formatted",async()=>{const e={descriptors_calldata:{"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9":{"0x69328dec":{type:"calldat",version:"v1",transaction_info:o,enums:u,fields:[s]}}}};t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when transactionInfo is not correctly formatted",async()=>{const e=n({descriptor:{data:"1234",signatures:{prod:"1234"}}},u,[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum is not correctly formatted",async()=>{const e=n(o,["badEnum"],[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum does not contain a signature",async()=>{const e=n(o,{0:{1:{data:"1234"}}},[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum contain the wrong signature",async()=>{const e=n(o,{0:{1:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65",signatures:{prod:"wrongSignature"}}}},[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field is not correctly formatted",async()=>{const e=n(o,[],[{descriptor:3}]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field value is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"TO",type_family:"UNKNOWN",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field container path is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"UNKNOWN",type_family:"ADDRESS",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field calldata path is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:{elements:[{type:"UNKNOWN"}]},type_family:"ADDRESS",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field type is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"TO",type_family:"ADDRESS",type_size:20},type:"UNKNOWN"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))})});
|
|
1
|
+
"use strict";var c=require("@ledgerhq/device-management-kit"),i=require("purify-ts"),C=require("./HttpCalldataDescriptorDataSource");const v={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"test",branch:"main"},originToken:"originToken"};describe("HttpCalldataDescriptorDataSource",()=>{let r,t,o,u,s,m,E,f,p,b,y,h,T;const d={loadCertificate:vi.fn()};beforeEach(()=>{t={get:vi.fn()},r=new C.HttpCalldataDescriptorDataSource(v,d,"dapps",t)}),beforeAll(()=>{vi.clearAllMocks(),o={descriptor:{data:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c",signatures:{test:"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f"}}},u={0:{1:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65",signatures:{test:"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582"}},2:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65",signatures:{test:"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523"}}}},f=D("FROM","UFIXED","AMOUNT","06"),p=D("TO","FIXED","DATETIME","07"),b=D("TO","BOOL","UNIT","08"),y=D("VALUE","INT","DURATION","09"),s={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",start:0,end:5,weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20},type:"TOKEN_AMOUNT",token:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",start:0,end:5,weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20}},descriptor:"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178"},m={param:{value:{type:"path",binary_path:{type:"CONTAINER",value:"TO"},type_family:"STRING",type_size:20},type:"TRUSTED_NAME",types:["eoa"],sources:["ens","unstoppable_domain"]},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402"},E={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",weight:2},{type:"LEAF",leaf_type:"TUPLE_LEAF"},{type:"SLICE",end:2}]},type_family:"BYTES",type_size:20},collection:{type:"path",binary_path:{type:"DATA",elements:[{type:"REF"},{type:"LEAF",leaf_type:"ARRAY_LEAF"},{type:"SLICE",start:1}]},type_family:"INT",type_size:20},type:"NFT"},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020114"},h={param:{id:0,value:{type:"path",binary_path:{type:"DATA",elements:[]},type_family:"BYTES",type_size:20},type:"ENUM"},descriptor:"000100010c546f20726563697069656e7402010803230001000115000100010105020112"},T={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},callee:{type:"path",binary_path:{type:"DATA",elements:[{type:"ARRAY",weight:1},{type:"LEAF",leaf_type:"DYNAMIC_LEAF"}]},type_family:"ADDRESS",type_size:20},selector:{type:"path",binary_path:{type:"CONTAINER",value:"FROM"},type_family:"BYTES",type_size:4},amount:{type:"path",binary_path:{type:"DATA",elements:[{type:"REF"},{type:"LEAF",leaf_type:"TUPLE_LEAF"}]},type_family:"UINT",type_size:32},spender:{type:"path",binary_path:{type:"DATA",elements:[{type:"SLICE",start:0,end:20},{type:"LEAF",leaf_type:"ARRAY_LEAF"}]},type_family:"ADDRESS",type_size:20},type:"CALLDATA"},descriptor:"000100010c43616c6c64617461207465737402010803230001000115000100010105020114"}});function D(e,a,l,A){return{param:{value:{type:"path",binary_path:{type:"CONTAINER",value:e},type_family:a,type_size:32},type:l},descriptor:A}}function n(e,a,l){return{descriptors_calldata:{"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9":{"0x69328dec":{type:"calldata",version:"v1",transaction_info:e,enums:a,fields:l}}}}}it.each([["dapps"],["tokens"]])("should call http.get with the correct url for endpoint '%s'",async e=>{t.get.mockResolvedValue([]),await new C.HttpCalldataDescriptorDataSource(v,d,e,t).getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"}),expect(t.get).toHaveBeenCalledWith(`${v.cal.url}/${e}`,{params:{output:"descriptors_calldata",chain_id:1,contracts:"0x0abc",contract_address:"0x0abc",ref:`branch:${v.cal.branch}`}})}),it("should return an error when http.get throws an error",async()=>{t.get.mockRejectedValue(new Error("boom")),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error: boom")))}),it("should return an error when no payload is returned",async()=>{t.get.mockResolvedValue({test:""}),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array")))}),it("should return an error when an empty array is returned",async()=>{t.get.mockResolvedValue([]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const e=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x0abc",selector:"0x01ff"});expect(e).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff")))}),it("should return an error when selector is not found",async()=>{const e=n(o,u,[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x01fe"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe")))}),it("Calldata with fields references and enums",async()=>{const e=n(o,u,[s,m,E,h]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9",selector:"0x69328dEc"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582",type:"ethereumEnum",id:0,value:1},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523",type:"ethereumEnum",id:0,value:2},{payload:s.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",valuePath:[{type:"ARRAY",start:0,end:5,itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}]}},{payload:m.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumTrustedName",valuePath:"TO",types:["eoa"],sources:["ens","unstoppable_domain"]}},{payload:E.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",valuePath:[{type:"REF"},{type:"LEAF",leafType:"ARRAY_LEAF"},{type:"SLICE",start:1}]}},{payload:h.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumEnum",valuePath:[],id:0}}])}),it("Calldata with fields references and enums with certificates",async()=>{const e=n(o,u,[s,m,E,h]),a={keyUsageNumber:11,payload:new Uint8Array([1,2,3,4,21,4,5,6,7,8])};t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValueOnce(a);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9",selector:"0x69328dEc"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo",certificate:a},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582",type:"ethereumEnum",id:0,value:1,certificate:a},{payload:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523",type:"ethereumEnum",id:0,value:2,certificate:a},{payload:s.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",valuePath:[{type:"ARRAY",start:0,end:5,itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}]}},{payload:m.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumTrustedName",valuePath:"TO",types:["eoa"],sources:["ens","unstoppable_domain"]}},{payload:E.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",valuePath:[{type:"REF"},{type:"LEAF",leafType:"ARRAY_LEAF"},{type:"SLICE",start:1}]}},{payload:h.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumEnum",valuePath:[],id:0}}])}),it("Calldata without fields references",async()=>{const e=n(o,[],[f,p,b,y]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata on third array element",async()=>{const e=n(o,[],[f,p,b,y]);t.get.mockResolvedValue([{},{},e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata without fields references and transaction info signature length % 2 different from 0",async()=>{const e={descriptor:{data:o.descriptor.data,signatures:{test:o.descriptor.signatures.test+"0"}}},a=n(e,[],[f,p,b,y]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0",type:"ethereumTransactionInfo"},{type:"ethereumTransactionFieldDescription",payload:f.descriptor},{type:"ethereumTransactionFieldDescription",payload:p.descriptor},{type:"ethereumTransactionFieldDescription",payload:b.descriptor},{type:"ethereumTransactionFieldDescription",payload:y.descriptor}])}),it("Calldata with token fields references as constants",async()=>{const e={name:"Amount to exchange",param:{type:"TOKEN_AMOUNT",token:{raw:"0xae7ab96520de3a18e5e111b5eaab095312d7fe84",type:"constant",value:"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",version:1,type_size:20,type_family:"ADDRESS"},value:{type:"path",version:1,abi_path:{type:"data",absolute:!0,elements:[{type:"field",identifier:"_stETHAmount"}]},type_size:32,binary_path:{type:"DATA",version:1,elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"UINT"},version:1},version:1,descriptor:"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumToken",value:"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"}}])}),it("Calldata with collection fields references as constants",async()=>{const e={name:"Collection ID",param:{type:"NFT",collection:{raw:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",type:"constant",value:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",version:1,type_size:20,type_family:"ADDRESS"},value:{type:"path",version:1,abi_path:{type:"data",absolute:!0,elements:[{type:"field",identifier:"_collectionId"}]},type_size:20,binary_path:{type:"DATA",version:1,elements:[{type:"ARRAY",weight:2},{type:"LEAF",leaf_type:"TUPLE_LEAF"},{type:"SLICE",end:2}]},type_family:"BYTES"},version:1},version:1,descriptor:"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"ethereumNft",value:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9"}}])}),it("Calldata with CALLDATA fields references",async()=>{const e=n(o,[],[T]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:T.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"calldata",valuePath:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],callee:[{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],selector:"FROM",amount:[{type:"REF"},{type:"LEAF",leafType:"TUPLE_LEAF"}],spender:[{type:"SLICE",start:0,end:20},{type:"LEAF",leafType:"ARRAY_LEAF"}]}}])}),it("Calldata with CALLDATA fields references without optional properties",async()=>{const e={param:{value:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},callee:{type:"path",binary_path:{type:"DATA",elements:[{type:"TUPLE",offset:0},{type:"LEAF",leaf_type:"STATIC_LEAF"}]},type_family:"BYTES",type_size:32},type:"CALLDATA"},descriptor:"000100010c43616c6c64617461207465737402010803230001000115000100010105020114"},a=n(o,[],[e]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l.extract()).toEqual([{payload:"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f",type:"ethereumTransactionInfo"},{payload:e.descriptor,type:"ethereumTransactionFieldDescription",reference:{type:"calldata",valuePath:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],callee:[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],selector:void 0,amount:void 0,spender:void 0,chainId:void 0}}])}),it("should return an error when calldata is not correctly formatted",async()=>{const e={descriptors_calldata:{"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9":{"0x69328dec":{type:"calldat",version:"v1",transaction_info:o,enums:u,fields:[s]}}}};t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when transactionInfo is not correctly formatted",async()=>{const e=n({descriptor:{data:"1234",signatures:{prod:"1234"}}},u,[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum is not correctly formatted",async()=>{const e=n(o,["badEnum"],[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum does not contain a signature",async()=>{const e=n(o,{0:{1:{data:"1234"}}},[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when enum contain the wrong signature",async()=>{const e=n(o,{0:{1:{data:"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65",signatures:{prod:"wrongSignature"}}}},[s]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field is not correctly formatted",async()=>{const e=n(o,[],[{descriptor:3}]);t.get.mockResolvedValue([e]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const a=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field value is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"TO",type_family:"UNKNOWN",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field container path is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"UNKNOWN",type_family:"ADDRESS",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field calldata path is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:{elements:[{type:"UNKNOWN"}]},type_family:"ADDRESS",type_size:20},type:"DATETIME"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))}),it("should return an error when field type is not correctly formatted",async()=>{const a=n(o,[],[{param:{value:{binary_path:"TO",type_family:"ADDRESS",type_size:20},type:"UNKNOWN"},descriptor:"000100010c546f20726563697069667"}]);t.get.mockResolvedValue([a]),vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const l=await r.getCalldataDescriptors({deviceModelId:c.DeviceModelId.FLEX,chainId:1,address:"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9",selector:"0x69328dec"});expect(l).toEqual((0,i.Left)(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec")))})});
|
|
2
2
|
//# sourceMappingURL=HttpCalldataDescriptorDataSource.test.js.map
|
package/lib/cjs/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n DeviceModelId,\n type DmkNetworkClient,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left } from \"purify-ts\";\n\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type CalldataDescriptorDataSource } from \"@/index\";\nimport type {\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataTransactionInfoV1,\n} from \"@/modules/ethereum/calldata/data/dto/CalldataDto\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\n\nimport { HttpCalldataDescriptorDataSource } from \"./HttpCalldataDescriptorDataSource\";\n\nconst config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"test\",\n branch: \"main\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\n\ndescribe(\"HttpCalldataDescriptorDataSource\", () => {\n let datasource: CalldataDescriptorDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n let transactionInfo: CalldataTransactionInfoV1;\n let enums: CalldataEnumV1;\n let fieldToken: CalldataFieldV1;\n let fieldTrustedName: CalldataFieldV1;\n let fieldNft: CalldataFieldV1;\n let fieldAmount: CalldataFieldV1;\n let fieldDatetime: CalldataFieldV1;\n let fieldUnit: CalldataFieldV1;\n let fieldDuration: CalldataFieldV1;\n let fieldEnum: CalldataFieldV1;\n let fieldCalldata: CalldataFieldV1;\n const certificateLoaderMock = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n httpMock = { get: vi.fn() };\n datasource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n \"dapps\",\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n beforeAll(() => {\n vi.clearAllMocks();\n\n transactionInfo = {\n descriptor: {\n data: \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c\",\n signatures: {\n test: \"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n },\n },\n };\n enums = {\n \"0\": {\n \"1\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65\",\n signatures: {\n test: \"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n },\n },\n \"2\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65\",\n signatures: {\n test: \"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n },\n },\n },\n };\n\n fieldAmount = createFieldWithoutReference(\"FROM\", \"UFIXED\", \"AMOUNT\", \"06\");\n fieldDatetime = createFieldWithoutReference(\n \"TO\",\n \"FIXED\",\n \"DATETIME\",\n \"07\",\n );\n fieldUnit = createFieldWithoutReference(\"TO\", \"BOOL\", \"UNIT\", \"08\");\n fieldDuration = createFieldWithoutReference(\n \"VALUE\",\n \"INT\",\n \"DURATION\",\n \"09\",\n );\n fieldToken = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"TOKEN_AMOUNT\",\n token: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n },\n descriptor:\n \"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178\",\n };\n fieldTrustedName = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"TO\",\n },\n type_family: \"STRING\",\n type_size: 20,\n },\n type: \"TRUSTED_NAME\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402\",\n };\n fieldNft = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n collection: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n type_family: \"INT\",\n type_size: 20,\n },\n type: \"NFT\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114\",\n };\n fieldEnum = {\n param: {\n id: 0,\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n type: \"ENUM\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020112\",\n };\n fieldCalldata = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n selector: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"FROM\",\n },\n type_family: \"BYTES\",\n type_size: 4,\n },\n amount: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n type_size: 32,\n },\n spender: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n });\n\n function createFieldWithoutReference(\n binary_path: string,\n type_family: string,\n type: string,\n descriptor: string,\n ): CalldataFieldV1 {\n return {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: binary_path,\n },\n type_family,\n type_size: 32,\n },\n type,\n },\n descriptor,\n } as CalldataFieldV1;\n }\n\n function createCalldata(\n calldataTransactionInfo: CalldataTransactionInfoV1,\n calldataEnums: CalldataEnumV1,\n fields: unknown[],\n ): unknown {\n return {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldata\",\n version: \"v1\",\n transaction_info: calldataTransactionInfo,\n enums: calldataEnums,\n fields: fields,\n },\n },\n },\n };\n }\n\n it.each([[\"dapps\"], [\"tokens\"]])(\n \"should call http.get with the correct url for endpoint '%s'\",\n async (endpoint) => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n const customDataSource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n endpoint,\n httpMock as unknown as DmkNetworkClient,\n );\n\n // WHEN\n await customDataSource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.cal.url}/${endpoint}`,\n {\n params: {\n output: \"descriptors_calldata\",\n chain_id: 1,\n contracts: \"0x0abc\",\n contract_address: \"0x0abc\",\n ref: `branch:${config.cal.branch}`,\n },\n },\n );\n },\n );\n\n it(\"should return an error when http.get throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error(\"boom\"));\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error: boom\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue({ test: \"\" });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array\",\n ),\n ),\n );\n });\n\n it(\"should return an error when an empty array is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff\",\n ),\n ),\n );\n });\n\n it(\"should return an error when selector is not found\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [fieldToken]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x01fe\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe\",\n ),\n ),\n );\n });\n\n it(\"Calldata with fields references and enums\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"ethereumEnum\",\n id: 0,\n value: 1,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"ethereumEnum\",\n id: 0,\n value: 2,\n },\n {\n payload: fieldToken.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumTrustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumEnum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata with fields references and enums with certificates\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n const certificate: PkiCertificate = {\n keyUsageNumber: 11,\n payload: new Uint8Array([\n 0x01, 0x02, 0x03, 0x04, 0x15, 0x04, 0x05, 0x06, 0x07, 0x08,\n ]),\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n certificate,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n // certificate is added to the transactionInfo\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"ethereumEnum\",\n id: 0,\n value: 1,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"ethereumEnum\",\n id: 0,\n value: 2,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload: fieldToken.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumTrustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumEnum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata without fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata on third array element\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([{}, {}, calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata without fields references and transaction info signature length % 2 different from 0\", async () => {\n // GIVEN\n const newTransactionInfo: CalldataTransactionInfoV1 = {\n descriptor: {\n data: transactionInfo.descriptor.data,\n signatures: {\n test: transactionInfo.descriptor.signatures.test + \"0\",\n },\n },\n };\n const calldataDTO = createCalldata(\n newTransactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata with token fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Amount to exchange\",\n param: {\n type: \"TOKEN_AMOUNT\",\n token: {\n raw: \"0xae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n type: \"constant\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_stETHAmount\",\n },\n ],\n },\n type_size: 32,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n },\n },\n ]);\n });\n\n it(\"Calldata with collection fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Collection ID\",\n param: {\n type: \"NFT\",\n collection: {\n raw: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n type: \"constant\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_collectionId\",\n },\n ],\n },\n type_size: 20,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, [], [fieldCalldata]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: fieldCalldata.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n selector: \"FROM\",\n amount: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"TUPLE_LEAF\",\n },\n ],\n spender: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n ],\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references without optional properties\", async () => {\n // GIVEN\n const fieldCalldataMinimal = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldCalldataMinimal],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: fieldCalldataMinimal.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n selector: undefined,\n amount: undefined,\n spender: undefined,\n chainId: undefined,\n },\n },\n ]);\n });\n\n it(\"should return an error when calldata is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldat\",\n version: \"v1\",\n transaction_info: transactionInfo,\n enums: enums,\n fields: [fieldToken],\n },\n },\n },\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when transactionInfo is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n {\n descriptor: {\n data: \"1234\",\n signatures: {\n prod: \"1234\",\n },\n },\n },\n enums,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [\"badEnum\"] as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum does not contain a signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n { 0: { 1: { data: \"1234\" } } } as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum contain the wrong signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n {\n 0: {\n 1: {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65\",\n signatures: {\n prod: \"wrongSignature\", // prod instead of test signature\n },\n },\n },\n },\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [{ descriptor: 3 }],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field value is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"UNKNOWN\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field container path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"UNKNOWN\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field calldata path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: {\n elements: [\n {\n type: \"UNKNOWN\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field type is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"UNKNOWN\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAGO,2CACPC,EAAqB,qBAYrBC,EAAiD,8CAEjD,MAAMC,EAAS,CACb,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,EACA,YAAa,aACf,EAEA,SAAS,mCAAoC,IAAM,CACjD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAwB,CAC5B,gBAAiB,GAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfZ,EAAW,CAAE,IAAK,GAAG,GAAG,CAAE,EAC1BD,EAAa,IAAI,mCACfD,EACAc,EACA,QACAZ,CACF,CACF,CAAC,EAED,UAAU,IAAM,CACd,GAAG,cAAc,EAEjBC,EAAkB,CAChB,WAAY,CACV,KAAM,6PACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,EACAC,EAAQ,CACN,EAAK,CACH,EAAK,CACH,KAAM,iHACN,WAAY,CACV,KAAM,gJACR,CACF,EACA,EAAK,CACH,KAAM,qHACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,CACF,EAEAI,EAAcO,EAA4B,OAAQ,SAAU,SAAU,IAAI,EAC1EN,EAAgBM,EACd,KACA,QACA,WACA,IACF,EACAL,EAAYK,EAA4B,KAAM,OAAQ,OAAQ,IAAI,EAClEJ,EAAgBI,EACd,QACA,MACA,WACA,IACF,EACAV,EAAa,CACX,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,CACF,EACA,WACE,0OACJ,EACAC,EAAmB,CACjB,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,IACT,EACA,YAAa,SACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CAAC,KAAK,EACb,QAAS,CAAC,MAAO,oBAAoB,CACvC,EACA,WACE,oHACJ,EACAC,EAAW,CACT,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,IAAK,CACP,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,WAAY,CACV,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,MAAO,CACT,CACF,CACF,EACA,YAAa,MACb,UAAW,EACb,EACA,KAAM,KACR,EACA,WACE,0EACJ,EACAK,EAAY,CACV,MAAO,CACL,GAAI,EACJ,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CAAC,CACb,EACA,YAAa,QACb,UAAW,EACb,EACA,KAAM,MACR,EACA,WACE,0EACJ,EACAC,EAAgB,CACd,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,aACb,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,SAAU,CACR,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,MACT,EACA,YAAa,QACb,UAAW,CACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,CACF,CACF,EACA,YAAa,OACb,UAAW,EACb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",
|
|
4
|
+
"sourcesContent": ["import {\n DeviceModelId,\n type DmkNetworkClient,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left } from \"purify-ts\";\n\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type CalldataDescriptorDataSource } from \"@/index\";\nimport type {\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataTransactionInfoV1,\n} from \"@/modules/ethereum/calldata/data/dto/CalldataDto\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\n\nimport { HttpCalldataDescriptorDataSource } from \"./HttpCalldataDescriptorDataSource\";\n\nconst config = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"test\",\n branch: \"main\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\n\ndescribe(\"HttpCalldataDescriptorDataSource\", () => {\n let datasource: CalldataDescriptorDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n let transactionInfo: CalldataTransactionInfoV1;\n let enums: CalldataEnumV1;\n let fieldToken: CalldataFieldV1;\n let fieldTrustedName: CalldataFieldV1;\n let fieldNft: CalldataFieldV1;\n let fieldAmount: CalldataFieldV1;\n let fieldDatetime: CalldataFieldV1;\n let fieldUnit: CalldataFieldV1;\n let fieldDuration: CalldataFieldV1;\n let fieldEnum: CalldataFieldV1;\n let fieldCalldata: CalldataFieldV1;\n const certificateLoaderMock = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n httpMock = { get: vi.fn() };\n datasource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n \"dapps\",\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n beforeAll(() => {\n vi.clearAllMocks();\n\n transactionInfo = {\n descriptor: {\n data: \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c\",\n signatures: {\n test: \"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n },\n },\n };\n enums = {\n \"0\": {\n \"1\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65\",\n signatures: {\n test: \"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n },\n },\n \"2\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65\",\n signatures: {\n test: \"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n },\n },\n },\n };\n\n fieldAmount = createFieldWithoutReference(\"FROM\", \"UFIXED\", \"AMOUNT\", \"06\");\n fieldDatetime = createFieldWithoutReference(\n \"TO\",\n \"FIXED\",\n \"DATETIME\",\n \"07\",\n );\n fieldUnit = createFieldWithoutReference(\"TO\", \"BOOL\", \"UNIT\", \"08\");\n fieldDuration = createFieldWithoutReference(\n \"VALUE\",\n \"INT\",\n \"DURATION\",\n \"09\",\n );\n fieldToken = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"TOKEN_AMOUNT\",\n token: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n },\n descriptor:\n \"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178\",\n };\n fieldTrustedName = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"TO\",\n },\n type_family: \"STRING\",\n type_size: 20,\n },\n type: \"TRUSTED_NAME\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402\",\n };\n fieldNft = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n collection: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n type_family: \"INT\",\n type_size: 20,\n },\n type: \"NFT\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114\",\n };\n fieldEnum = {\n param: {\n id: 0,\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n type: \"ENUM\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020112\",\n };\n fieldCalldata = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n selector: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"FROM\",\n },\n type_family: \"BYTES\",\n type_size: 4,\n },\n amount: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n type_size: 32,\n },\n spender: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n });\n\n function createFieldWithoutReference(\n binary_path: string,\n type_family: string,\n type: string,\n descriptor: string,\n ): CalldataFieldV1 {\n return {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: binary_path,\n },\n type_family,\n type_size: 32,\n },\n type,\n },\n descriptor,\n } as CalldataFieldV1;\n }\n\n function createCalldata(\n calldataTransactionInfo: CalldataTransactionInfoV1,\n calldataEnums: CalldataEnumV1,\n fields: unknown[],\n ): unknown {\n return {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldata\",\n version: \"v1\",\n transaction_info: calldataTransactionInfo,\n enums: calldataEnums,\n fields: fields,\n },\n },\n },\n };\n }\n\n it.each([[\"dapps\"], [\"tokens\"]])(\n \"should call http.get with the correct url for endpoint '%s'\",\n async (endpoint) => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n const customDataSource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n endpoint,\n httpMock as unknown as DmkNetworkClient,\n );\n\n // WHEN\n await customDataSource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.cal.url}/${endpoint}`,\n {\n params: {\n output: \"descriptors_calldata\",\n chain_id: 1,\n contracts: \"0x0abc\",\n contract_address: \"0x0abc\",\n ref: `branch:${config.cal.branch}`,\n },\n },\n );\n },\n );\n\n it(\"should return an error when http.get throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error(\"boom\"));\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error: boom\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue({ test: \"\" });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array\",\n ),\n ),\n );\n });\n\n it(\"should return an error when an empty array is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff\",\n ),\n ),\n );\n });\n\n it(\"should return an error when selector is not found\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [fieldToken]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x01fe\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe\",\n ),\n ),\n );\n });\n\n it(\"Calldata with fields references and enums\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"ethereumEnum\",\n id: 0,\n value: 1,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"ethereumEnum\",\n id: 0,\n value: 2,\n },\n {\n payload: fieldToken.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumTrustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumEnum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata with fields references and enums with certificates\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n const certificate: PkiCertificate = {\n keyUsageNumber: 11,\n payload: new Uint8Array([\n 0x01, 0x02, 0x03, 0x04, 0x15, 0x04, 0x05, 0x06, 0x07, 0x08,\n ]),\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n certificate,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n // certificate is added to the transactionInfo\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"ethereumEnum\",\n id: 0,\n value: 1,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"ethereumEnum\",\n id: 0,\n value: 2,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload: fieldToken.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumTrustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumEnum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata without fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata on third array element\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([{}, {}, calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata without fields references and transaction info signature length % 2 different from 0\", async () => {\n // GIVEN\n const newTransactionInfo: CalldataTransactionInfoV1 = {\n descriptor: {\n data: transactionInfo.descriptor.data,\n signatures: {\n test: transactionInfo.descriptor.signatures.test + \"0\",\n },\n },\n };\n const calldataDTO = createCalldata(\n newTransactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0\",\n type: \"ethereumTransactionInfo\",\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"ethereumTransactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata with token fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Amount to exchange\",\n param: {\n type: \"TOKEN_AMOUNT\",\n token: {\n raw: \"0xae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n type: \"constant\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_stETHAmount\",\n },\n ],\n },\n type_size: 32,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumToken\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n },\n },\n ]);\n });\n\n it(\"Calldata with collection fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Collection ID\",\n param: {\n type: \"NFT\",\n collection: {\n raw: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n type: \"constant\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_collectionId\",\n },\n ],\n },\n type_size: 20,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"ethereumNft\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, [], [fieldCalldata]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: fieldCalldata.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n selector: \"FROM\",\n amount: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"TUPLE_LEAF\",\n },\n ],\n spender: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n ],\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references without optional properties\", async () => {\n // GIVEN\n const fieldCalldataMinimal = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldCalldataMinimal],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"ethereumTransactionInfo\",\n },\n {\n payload: fieldCalldataMinimal.descriptor,\n type: \"ethereumTransactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n selector: undefined,\n amount: undefined,\n spender: undefined,\n chainId: undefined,\n },\n },\n ]);\n });\n\n it(\"should return an error when calldata is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldat\",\n version: \"v1\",\n transaction_info: transactionInfo,\n enums: enums,\n fields: [fieldToken],\n },\n },\n },\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when transactionInfo is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n {\n descriptor: {\n data: \"1234\",\n signatures: {\n prod: \"1234\",\n },\n },\n },\n enums,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [\"badEnum\"] as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum does not contain a signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n { 0: { 1: { data: \"1234\" } } } as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum contain the wrong signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n {\n 0: {\n 1: {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65\",\n signatures: {\n prod: \"wrongSignature\", // prod instead of test signature\n },\n },\n },\n },\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [{ descriptor: 3 }],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field value is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"UNKNOWN\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field container path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"UNKNOWN\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field calldata path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: {\n elements: [\n {\n type: \"UNKNOWN\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field type is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"UNKNOWN\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAGO,2CACPC,EAAqB,qBAYrBC,EAAiD,8CAEjD,MAAMC,EAAS,CACb,IAAK,CACH,IAAK,2CACL,KAAM,OACN,OAAQ,MACV,EACA,YAAa,aACf,EAEA,SAAS,mCAAoC,IAAM,CACjD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAwB,CAC5B,gBAAiB,GAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfZ,EAAW,CAAE,IAAK,GAAG,GAAG,CAAE,EAC1BD,EAAa,IAAI,mCACfD,EACAc,EACA,QACAZ,CACF,CACF,CAAC,EAED,UAAU,IAAM,CACd,GAAG,cAAc,EAEjBC,EAAkB,CAChB,WAAY,CACV,KAAM,6PACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,EACAC,EAAQ,CACN,EAAK,CACH,EAAK,CACH,KAAM,iHACN,WAAY,CACV,KAAM,gJACR,CACF,EACA,EAAK,CACH,KAAM,qHACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,CACF,EAEAI,EAAcO,EAA4B,OAAQ,SAAU,SAAU,IAAI,EAC1EN,EAAgBM,EACd,KACA,QACA,WACA,IACF,EACAL,EAAYK,EAA4B,KAAM,OAAQ,OAAQ,IAAI,EAClEJ,EAAgBI,EACd,QACA,MACA,WACA,IACF,EACAV,EAAa,CACX,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,CACF,EACA,WACE,0OACJ,EACAC,EAAmB,CACjB,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,IACT,EACA,YAAa,SACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CAAC,KAAK,EACb,QAAS,CAAC,MAAO,oBAAoB,CACvC,EACA,WACE,oHACJ,EACAC,EAAW,CACT,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,IAAK,CACP,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,WAAY,CACV,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,MAAO,CACT,CACF,CACF,EACA,YAAa,MACb,UAAW,EACb,EACA,KAAM,KACR,EACA,WACE,0EACJ,EACAK,EAAY,CACV,MAAO,CACL,GAAI,EACJ,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CAAC,CACb,EACA,YAAa,QACb,UAAW,EACb,EACA,KAAM,MACR,EACA,WACE,0EACJ,EACAC,EAAgB,CACd,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,aACb,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,SAAU,CACR,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,MACT,EACA,YAAa,QACb,UAAW,CACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,CACF,CACF,EACA,YAAa,OACb,UAAW,EACb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",
|
|
6
6
|
"names": ["import_device_management_kit", "import_purify_ts", "import_HttpCalldataDescriptorDataSource", "config", "datasource", "httpMock", "transactionInfo", "enums", "fieldToken", "fieldTrustedName", "fieldNft", "fieldAmount", "fieldDatetime", "fieldUnit", "fieldDuration", "fieldEnum", "fieldCalldata", "certificateLoaderMock", "createFieldWithoutReference", "binary_path", "type_family", "type", "descriptor", "createCalldata", "calldataTransactionInfo", "calldataEnums", "fields", "endpoint", "result", "calldataDTO", "certificate", "newTransactionInfo", "field", "fieldCalldataMinimal"]
|
|
7
7
|
}
|
package/lib/cjs/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=require("purify-ts"),e=require("vitest"),d=require("./HttpDynamicNetworkDataSource");(0,e.describe)("HttpNetworkDataSource",()=>{let r,a;const i={cal:{url:"https://
|
|
1
|
+
"use strict";var n=require("purify-ts"),e=require("vitest"),d=require("./HttpDynamicNetworkDataSource");(0,e.describe)("HttpNetworkDataSource",()=>{let r,a;const i={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}},c=[{id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"}},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"}}}}];(0,e.beforeEach)(()=>{e.vi.clearAllMocks(),a={get:e.vi.fn()},r=new d.HttpDynamicNetworkDataSource(i,a)}),(0,e.describe)("getNetworkConfiguration",()=>{(0,e.it)("should return network configuration successfully",async()=>{a.get.mockResolvedValue(c);const t=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(a.get).toHaveBeenCalledWith(`${i.cal.url}/networks`,{params:{output:"id,descriptors,icons",chain_id:1}}),(0,e.expect)(t).toEqual((0,n.Right)({id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"},icon:void 0},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"},icon:void 0}}}))}),(0,e.it)("should return error when network data is not found",async()=>{a.get.mockResolvedValue([]);const t=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(t).toEqual((0,n.Left)(new Error("Network configuration not found for chain ID: 1")))}),(0,e.it)("should return error when network data is undefined",async()=>{a.get.mockResolvedValue(null);const t=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(t).toEqual((0,n.Left)(new Error("Network configuration not found for chain ID: 1")))}),(0,e.it)("should return error when http.get throws an error",async()=>{a.get.mockRejectedValue(new Error("Network error"));const t=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(t).toEqual((0,n.Left)(new Error("Network error")))}),(0,e.it)("should return generic error when http.get throws non-Error",async()=>{a.get.mockRejectedValue("String error");const t=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(t).toEqual((0,n.Left)(new Error("Failed to fetch network configuration")))}),(0,e.it)("should handle invalid data - missing id",async()=>{const t=[{descriptors:{}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid data - missing descriptors",async()=>{const t=[{id:"ethereum"}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid descriptor - missing data field",async()=>{const t=[{id:"ethereum",descriptors:{flex:{descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid descriptor - missing signatures",async()=>{const t=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1"}}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid signatures - missing prod",async()=>{const t=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"sig2"}}}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should include icons when available",async()=>{const t=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}},stax:{data:"0x0102",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig3",test:"sig4"}}},icons:{flex:"icon1",stax:"icon2"}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o.isRight()).toBe(!0);const s=o.unsafeCoerce();(0,e.expect)(s.descriptors.flex.icon).toBe("icon1"),(0,e.expect)(s.descriptors.stax.icon).toBe("icon2")}),(0,e.it)("should transform data correctly for Polygon chain ID",async()=>{a.get.mockResolvedValue(c);const t=await r.getDynamicNetworkConfiguration(137);(0,e.expect)(a.get).toHaveBeenCalledWith(`${i.cal.url}/networks`,{params:{output:"id,descriptors,icons",chain_id:137}}),(0,e.expect)(t.isRight()).toBe(!0);const o=t.unsafeCoerce();(0,e.expect)(Object.keys(o.descriptors)).toEqual(["flex","stax"])}),(0,e.it)("should handle invalid data - null data",async()=>{const t=[null];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Network configuration not found for chain ID: 1")))}),(0,e.it)("should handle invalid data - non-object data",async()=>{const t=["string_instead_of_object"];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid data - icons as string instead of object",async()=>{const t=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:"should_be_object_not_string"}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid data - icons as number instead of object (line 93)",async()=>{const t=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:123}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid descriptor - null descriptor (line 103)",async()=>{const t=[{id:"ethereum",descriptors:{flex:null}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))}),(0,e.it)("should handle invalid descriptor - non-object descriptor (line 103)",async()=>{const t=[{id:"ethereum",descriptors:{flex:"should_be_object_not_string"}}];a.get.mockResolvedValue(t);const o=await r.getDynamicNetworkConfiguration(1);(0,e.expect)(o).toEqual((0,n.Left)(new Error("Invalid network configuration response for chain ID: 1")))})})});
|
|
2
2
|
//# sourceMappingURL=HttpDynamicNetworkDataSource.test.js.map
|