diff --git a/packages/aws-kms-adapter/src/KMSVeChainSigner.ts b/packages/aws-kms-adapter/src/KMSVeChainSigner.ts index a716eae93..1550009a0 100644 --- a/packages/aws-kms-adapter/src/KMSVeChainSigner.ts +++ b/packages/aws-kms-adapter/src/KMSVeChainSigner.ts @@ -1,14 +1,7 @@ import { bytesToHex, concatBytes } from '@noble/curves/abstract/utils'; import { type SignatureType } from '@noble/curves/abstract/weierstrass'; import { secp256k1 } from '@noble/curves/secp256k1'; -import { - Address, - Hex, - Keccak256, - Transaction, - Txt, - vechain_sdk_core_ethers -} from '@vechain/sdk-core'; +import { Address, Hex, Keccak256, Transaction, Txt } from '@vechain/sdk-core'; import { JSONRPCInvalidParams, SignerMethodError } from '@vechain/sdk-errors'; import { type AvailableVeChainProviders, @@ -18,6 +11,11 @@ import { VeChainAbstractSigner } from '@vechain/sdk-network'; import { BitString, ObjectIdentifier, Sequence, verifySchema } from 'asn1js'; +import { + type TypedDataDomain, + TypedDataEncoder, + type TypedDataField +} from 'ethers'; import { recoverPublicKey, toHex } from 'viem'; import { KMSVeChainProvider } from './KMSVeChainProvider'; @@ -383,23 +381,19 @@ class KMSVeChainSigner extends VeChainAbstractSigner { /** * Signs a typed data returning the VeChain signature in hexadecimal format. - * @param {vechain_sdk_core_ethers.TypedDataDomain} domain to hash as typed data. - * @param {Record} types to hash as typed data. + * @param {TypedDataDomain} domain to hash as typed data. + * @param {Record} types to hash as typed data. * @param {Record} value to hash as typed data. * @returns {string} The VeChain signature in hexadecimal format. */ public async signTypedData( - domain: vechain_sdk_core_ethers.TypedDataDomain, - types: Record, + domain: TypedDataDomain, + types: Record, value: Record ): Promise { try { const payload = Hex.of( - vechain_sdk_core_ethers.TypedDataEncoder.hash( - domain, - types, - value - ) + TypedDataEncoder.hash(domain, types, value) ).bytes; return await this.signPayload(payload); diff --git a/packages/aws-kms-adapter/tests/KMSVeChainSigner.unit.test.ts b/packages/aws-kms-adapter/tests/KMSVeChainSigner.unit.test.ts index ea316ae1a..d4f8ce2da 100644 --- a/packages/aws-kms-adapter/tests/KMSVeChainSigner.unit.test.ts +++ b/packages/aws-kms-adapter/tests/KMSVeChainSigner.unit.test.ts @@ -1,10 +1,11 @@ -import { Hex, Txt, type vechain_sdk_core_ethers } from '@vechain/sdk-core'; +import { Hex, Txt } from '@vechain/sdk-core'; import { JSONRPCInvalidParams, SignerMethodError } from '@vechain/sdk-errors'; import { VeChainProvider, type ThorClient, type TransactionRequestInput } from '@vechain/sdk-network'; +import { type TypedDataDomain, type TypedDataField } from 'ethers'; import { KMSVeChainProvider, KMSVeChainSigner } from '../src'; import { EIP712_CONTRACT, EIP712_FROM, EIP712_TO } from './fixture'; jest.mock('asn1js', () => ({ @@ -157,11 +158,8 @@ describe('KMSVeChainSigner', () => { const signer = new KMSVeChainSigner(provider); await expect( signer.signTypedData( - {} as unknown as vechain_sdk_core_ethers.TypedDataDomain, - {} as unknown as Record< - string, - vechain_sdk_core_ethers.TypedDataField[] - >, + {} as unknown as TypedDataDomain, + {} as unknown as Record, {} as unknown as Record ) ).rejects.toThrow(SignerMethodError); diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index cb0bd3b73..6deddfb79 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -1,5 +1,3 @@ -import { ethers } from 'ethers'; - // Our core library export * from './certificate'; export * from './hdkey'; @@ -8,6 +6,3 @@ export * from './secp256k1'; export * from './transaction'; export * from './utils'; export * from './vcdm'; - -// Other libraries -export { ethers as vechain_sdk_core_ethers }; diff --git a/packages/core/tests/modules/export.unit.test.ts b/packages/core/tests/modules/export.unit.test.ts deleted file mode 100644 index 3dc23e88c..000000000 --- a/packages/core/tests/modules/export.unit.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, test } from '@jest/globals'; -import { vechain_sdk_core_ethers } from '../../src/core'; - -/** - * Test exporting of library - * @group unit/modules/export - */ -describe('Test exporting', () => { - /** - * Should be able to export ethers module - */ - test('Should be able to export ethers module', () => { - expect(vechain_sdk_core_ethers).toBeDefined(); - }); -}); diff --git a/packages/ethers-adapter/src/adapters/contract-adapter.ts b/packages/ethers-adapter/src/adapters/contract-adapter.ts index 76da63011..7c6b21522 100644 --- a/packages/ethers-adapter/src/adapters/contract-adapter.ts +++ b/packages/ethers-adapter/src/adapters/contract-adapter.ts @@ -1,5 +1,5 @@ -import { type vechain_sdk_core_ethers } from '@vechain/sdk-core'; import { type HardhatVeChainProvider } from '@vechain/sdk-network'; +import { type Contract } from 'ethers'; import { helpers } from './helpers'; /** @@ -10,9 +10,9 @@ import { helpers } from './helpers'; * @returns The adapted contract */ const contractAdapter = ( - contract: vechain_sdk_core_ethers.Contract, + contract: Contract, hardhatVeChainProvider: HardhatVeChainProvider -): vechain_sdk_core_ethers.Contract => { +): Contract => { contract.getAddress = async function getAddress(): Promise { return await helpers.getContractAddress( contract.deploymentTransaction()?.hash ?? '', diff --git a/packages/ethers-adapter/src/adapters/factory-adapter.ts b/packages/ethers-adapter/src/adapters/factory-adapter.ts index a20e06385..4926a687c 100644 --- a/packages/ethers-adapter/src/adapters/factory-adapter.ts +++ b/packages/ethers-adapter/src/adapters/factory-adapter.ts @@ -1,6 +1,6 @@ -import type { HardhatVeChainProvider } from '@vechain/sdk-network'; -import { vechain_sdk_core_ethers } from '@vechain/sdk-core'; import { UnsupportedOperation } from '@vechain/sdk-errors'; +import type { HardhatVeChainProvider } from '@vechain/sdk-network'; +import type { BaseContract, ContractFactory, ContractMethodArgs } from 'ethers'; /** * Factory adapter for the VeChain hardhat plugin @@ -11,12 +11,10 @@ import { UnsupportedOperation } from '@vechain/sdk-errors'; * @throws {UnsupportedOperation} */ function factoryAdapter( - contractFactory: vechain_sdk_core_ethers.ContractFactory, + contractFactory: ContractFactory, hardhatVeChainProvider: HardhatVeChainProvider -): vechain_sdk_core_ethers.ContractFactory { - contractFactory.deploy = async function ( - ...args: vechain_sdk_core_ethers.ContractMethodArgs - ) { +): ContractFactory { + contractFactory.deploy = async function (...args: ContractMethodArgs) { const tx = await this.getDeployTransaction(...args); if ( @@ -41,7 +39,7 @@ function factoryAdapter( // @ts-expect-error this return type is required by the contract factory deploy method // eslint-disable-next-line @typescript-eslint/no-unsafe-return, sonarjs/new-operator-misuse - return new (vechain_sdk_core_ethers.BaseContract as unknown)( + return new (BaseContract as unknown)( receipt?.outputs[0].contractAddress ?? '', this.interface, this.runner, diff --git a/packages/ethers-adapter/tests/adapters/contract-adapter.solo.test.ts b/packages/ethers-adapter/tests/adapters/contract-adapter.solo.test.ts index b44221d71..dff2c5e06 100644 --- a/packages/ethers-adapter/tests/adapters/contract-adapter.solo.test.ts +++ b/packages/ethers-adapter/tests/adapters/contract-adapter.solo.test.ts @@ -3,15 +3,15 @@ * * @group integration/providers/vechain-provider-solo */ +import { beforeEach, describe, expect, jest, test } from '@jest/globals'; import { HardhatVeChainProvider, ProviderInternalBaseWallet, THOR_SOLO_URL, ThorClient } from '@vechain/sdk-network'; +import { Contract } from 'ethers'; import { contractAdapter, helpers } from '../../src'; -import { beforeEach, describe, expect, jest, test } from '@jest/globals'; -import { vechain_sdk_core_ethers } from '@vechain/sdk-core'; /** *VeChain adapters tests - Solo Network @@ -39,14 +39,14 @@ describe('Hardhat contract adapter tests', () => { }); test('Should create a contract adapter', () => { - const contract = new vechain_sdk_core_ethers.Contract('0x', []); + const contract = new Contract('0x', []); // Create a contract adapter const adapter = contractAdapter(contract, provider); expect(adapter).toBeDefined(); }); test('Should get the address of a contract', () => { - const contract = new vechain_sdk_core_ethers.Contract('0x', []); + const contract = new Contract('0x', []); helpers.getContractAddress = jest.fn( async () => await Promise.resolve('0x') ); diff --git a/packages/ethers-adapter/tests/adapters/factory-adapter.solo.test.ts b/packages/ethers-adapter/tests/adapters/factory-adapter.solo.test.ts index 0ec2eb2e4..f171fd845 100644 --- a/packages/ethers-adapter/tests/adapters/factory-adapter.solo.test.ts +++ b/packages/ethers-adapter/tests/adapters/factory-adapter.solo.test.ts @@ -1,3 +1,6 @@ +import { beforeEach, describe, expect, jest, test } from '@jest/globals'; +import { ERC20_ABI } from '@vechain/sdk-core'; +import { UnsupportedOperation } from '@vechain/sdk-errors'; import { HardhatVeChainProvider, ProviderInternalBaseWallet, @@ -5,11 +8,14 @@ import { ThorClient, type WaitForTransactionOptions } from '@vechain/sdk-network'; -import { erc20ContractBytecode } from '../fixture'; +import { + ContractFactory, + type Signer, + type TransactionResponse, + VoidSigner +} from 'ethers'; import { factoryAdapter } from '../../src'; -import { beforeEach, describe, expect, jest, test } from '@jest/globals'; -import { ERC20_ABI, vechain_sdk_core_ethers } from '@vechain/sdk-core'; -import { UnsupportedOperation } from '@vechain/sdk-errors'; +import { erc20ContractBytecode } from '../fixture'; /** *VeChain adapters tests - Solo Network @@ -43,19 +49,18 @@ describe('Hardhat factory adapter tests', () => { }); test('Should create a factory adapter and deploy', async () => { - const signer: vechain_sdk_core_ethers.Signer = - new vechain_sdk_core_ethers.VoidSigner('0x'); + const signer: Signer = new VoidSigner('0x'); signer.sendTransaction = jest.fn(async (_tx) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return await ({} as unknown as Promise); + return await ({} as unknown as Promise); }); signer.resolveName = jest.fn(async (_name: string) => { return await Promise.resolve('mock'); }); - const contract = new vechain_sdk_core_ethers.ContractFactory( + const contract = new ContractFactory( ERC20_ABI, erc20ContractBytecode, signer @@ -68,10 +73,7 @@ describe('Hardhat factory adapter tests', () => { }); test('Should fail to deploy with a factory adapter', async () => { - const contract = new vechain_sdk_core_ethers.ContractFactory( - ERC20_ABI, - erc20ContractBytecode - ); + const contract = new ContractFactory(ERC20_ABI, erc20ContractBytecode); // Create a contract adapter const adapter = factoryAdapter(contract, provider); diff --git a/packages/hardhat-plugin/src/index.ts b/packages/hardhat-plugin/src/index.ts index 6cd81c50e..f63f4204c 100644 --- a/packages/hardhat-plugin/src/index.ts +++ b/packages/hardhat-plugin/src/index.ts @@ -19,7 +19,7 @@ import { HardhatVeChainProvider } from '@vechain/sdk-network'; import { VeChainSDKLogger } from '@vechain/sdk-logging'; // Import needed to customize ethers functionality -import { vechain_sdk_core_ethers as ethers } from '@vechain/sdk-core'; +import { ethers } from 'ethers'; // Import needed to extend the hardhat environment import './type-extensions'; diff --git a/packages/hardhat-plugin/src/type-extensions.ts b/packages/hardhat-plugin/src/type-extensions.ts index dafe01a0f..fdf3211ed 100644 --- a/packages/hardhat-plugin/src/type-extensions.ts +++ b/packages/hardhat-plugin/src/type-extensions.ts @@ -4,12 +4,12 @@ import { } from '@vechain/sdk-network'; // Ethers types -import { type vechain_sdk_core_ethers as ethers } from '@vechain/sdk-core'; +import { type ethers } from 'ethers'; // To extend one of Hardhat's types, you need to import the module where it has been defined, and redeclare it. +import { type HardhatEthersHelpers } from '@nomicfoundation/hardhat-ethers/types'; import 'hardhat/types/config'; import 'hardhat/types/runtime'; -import { type HardhatEthersHelpers } from '@nomicfoundation/hardhat-ethers/types'; /** * Hardhat runtime environment extension diff --git a/packages/network/solo-seeding/thor-solo-seeding.ts b/packages/network/solo-seeding/thor-solo-seeding.ts index 9a6676a19..f1bfaf31b 100644 --- a/packages/network/solo-seeding/thor-solo-seeding.ts +++ b/packages/network/solo-seeding/thor-solo-seeding.ts @@ -5,13 +5,12 @@ import { ABIItem, Address, Clause, + HexUInt, networkInfo, Transaction, Units, - vechain_sdk_core_ethers, ZERO_ADDRESS, - type TransactionClause, - HexUInt + type TransactionClause } from '@vechain/sdk-core'; import { stringifyData } from '@vechain/sdk-errors'; import { @@ -19,6 +18,7 @@ import { THOR_SOLO_ACCOUNTS, THOR_SOLO_URL } from '@vechain/sdk-network'; +import { id, namehash } from 'ethers'; import { ThorClient } from '../src'; import { TESTING_CONTRACT_BYTECODE } from './const'; @@ -149,7 +149,7 @@ const seedVnsSolo = async (): Promise => { ), { types: ['address', 'bytes32'], - values: [vnsRegistry, vechain_sdk_core_ethers.namehash(tld)] + values: [vnsRegistry, namehash(tld)] } ); const tx = await thorSoloClient.transactions.sendTransaction( @@ -208,7 +208,7 @@ const seedVnsSolo = async (): Promise => { ), [ '0x0000000000000000000000000000000000000000000000000000000000000000', - vechain_sdk_core_ethers.id(tld), + ethers.id(tld), vnsRegistrar ] ) as TransactionClause, @@ -220,7 +220,7 @@ const seedVnsSolo = async (): Promise => { ), [ '0x0000000000000000000000000000000000000000000000000000000000000000', - vechain_sdk_core_ethers.id('reverse'), + id('reverse'), THOR_SOLO_ACCOUNTS[4].address ] ) as TransactionClause, @@ -230,11 +230,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function setSubnodeOwner(bytes32 node, bytes32 label, address owner)' ), - [ - vechain_sdk_core_ethers.namehash('reverse'), - vechain_sdk_core_ethers.id('addr'), - vnsReverseRegistrar - ] + [namehash('reverse'), id('addr'), vnsReverseRegistrar] ) as TransactionClause ] }).sign(HexUInt.of(THOR_SOLO_ACCOUNTS[4].privateKey).bytes) @@ -340,7 +336,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function register(bytes32 id, address owner)' ), - [vechain_sdk_core_ethers.id(name), address] + [id(name), address] ), Clause.callFunction( Address.of(vnsRegistry), @@ -348,10 +344,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function setResolver(bytes32 node, address resolver)' ), - [ - vechain_sdk_core_ethers.namehash(fullName), - vnsPublicResolver - ] + [namehash(fullName), vnsPublicResolver] ), Clause.callFunction( Address.of(vnsPublicResolver), @@ -359,7 +352,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function setAddr(bytes32 node, address addr)' ), - [vechain_sdk_core_ethers.namehash(fullName), address] + [namehash(fullName), address] ), Clause.callFunction( Address.of(vnsReverseRegistrar), @@ -401,10 +394,8 @@ const seedVnsSolo = async (): Promise => { 'function setSubnodeOwner(bytes32 node, bytes32 label, address owner)' ), [ - vechain_sdk_core_ethers.namehash( - `${parentName}.${tld}` - ), - vechain_sdk_core_ethers.id(name), + namehash(`${parentName}.${tld}`), + id(name), THOR_SOLO_ACCOUNTS[4].address ] ), @@ -414,10 +405,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function setResolver(bytes32 node, address resolver)' ), - [ - vechain_sdk_core_ethers.namehash(fullName), - vnsPublicResolver - ] + [namehash(fullName), vnsPublicResolver] ), Clause.callFunction( Address.of(vnsPublicResolver), @@ -425,7 +413,7 @@ const seedVnsSolo = async (): Promise => { ABIFunction, 'function setAddr(bytes32 node, address addr)' ), - [vechain_sdk_core_ethers.namehash(fullName), address] + [namehash(fullName), address] ) ] }).sign(HexUInt.of(THOR_SOLO_ACCOUNTS[4].privateKey).bytes) diff --git a/packages/network/src/provider/providers/ethers-provider/index.ts b/packages/network/src/provider/providers/ethers-provider/index.ts index 0ad98b341..5c380f3c0 100644 --- a/packages/network/src/provider/providers/ethers-provider/index.ts +++ b/packages/network/src/provider/providers/ethers-provider/index.ts @@ -1,2 +1 @@ export * from './json-rpc-ethers-provider'; -export type * from './types.d'; diff --git a/packages/network/src/provider/providers/ethers-provider/json-rpc-ethers-provider.ts b/packages/network/src/provider/providers/ethers-provider/json-rpc-ethers-provider.ts index a250fca17..acb461bad 100644 --- a/packages/network/src/provider/providers/ethers-provider/json-rpc-ethers-provider.ts +++ b/packages/network/src/provider/providers/ethers-provider/json-rpc-ethers-provider.ts @@ -1,11 +1,11 @@ -import { JsonRpcApiProvider } from 'ethers'; -import { type HardhatVeChainProvider } from '../hardhat-provider/hardhat-provider'; +import { stringifyData } from '@vechain/sdk-errors'; import { + JsonRpcApiProvider, type JsonRpcError, type JsonRpcPayload, type JsonRpcResult -} from './types'; -import { stringifyData } from '@vechain/sdk-errors'; +} from 'ethers'; +import { type HardhatVeChainProvider } from '../hardhat-provider/hardhat-provider'; /** * JSON RPC provider for ethers. diff --git a/packages/network/src/provider/providers/ethers-provider/types.d.ts b/packages/network/src/provider/providers/ethers-provider/types.d.ts deleted file mode 100644 index f8013e1ad..000000000 --- a/packages/network/src/provider/providers/ethers-provider/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { type vechain_sdk_core_ethers } from '@vechain/sdk-core'; - -/** - * Override the JsonRpcPayload, JsonRpcResult and JsonRpcError types from ethers. - */ -type JsonRpcPayload = vechain_sdk_core_ethers.JsonRpcPayload; -type JsonRpcResult = vechain_sdk_core_ethers.JsonRpcResult; -type JsonRpcError = vechain_sdk_core_ethers.JsonRpcError; - -export { type JsonRpcPayload, type JsonRpcResult, type JsonRpcError }; diff --git a/packages/network/src/provider/utils/rpc-mapper/methods/eth_signTypedData_v4/eth_signTypedData_v4.ts b/packages/network/src/provider/utils/rpc-mapper/methods/eth_signTypedData_v4/eth_signTypedData_v4.ts index 803e99dfa..2b0803d27 100644 --- a/packages/network/src/provider/utils/rpc-mapper/methods/eth_signTypedData_v4/eth_signTypedData_v4.ts +++ b/packages/network/src/provider/utils/rpc-mapper/methods/eth_signTypedData_v4/eth_signTypedData_v4.ts @@ -1,9 +1,10 @@ -import { Address, type vechain_sdk_core_ethers } from '@vechain/sdk-core'; +import { Address } from '@vechain/sdk-core'; import { JSONRPCInternalError, JSONRPCInvalidParams, stringifyData } from '@vechain/sdk-errors'; +import type { TypedDataDomain, TypedDataField } from 'ethers'; import type { VeChainSigner } from '../../../../../signer/signers'; import type { ThorClient } from '../../../../../thor-client'; import type { VeChainProvider } from '../../../../providers/vechain-provider'; @@ -59,8 +60,8 @@ const ethSignTypedDataV4 = async ( string, { primaryType: string; - domain: vechain_sdk_core_ethers.TypedDataDomain; - types: Record; + domain: TypedDataDomain; + types: Record; message: Record; } ]; diff --git a/packages/network/src/signer/signers/types.d.ts b/packages/network/src/signer/signers/types.d.ts index 801330179..0548b9aba 100644 --- a/packages/network/src/signer/signers/types.d.ts +++ b/packages/network/src/signer/signers/types.d.ts @@ -1,7 +1,5 @@ -import { - type TransactionClause, - type vechain_sdk_core_ethers -} from '@vechain/sdk-core'; +import { type TransactionClause } from '@vechain/sdk-core'; +import { type AccessListish } from 'ethers'; import { type HardhatVeChainProvider, type VeChainProvider @@ -173,7 +171,7 @@ interface TransactionRequestInput { * list are //warmed// by preloading them, so their initial cost to * fetch is guaranteed, but then each additional access is cheaper. */ - accessList?: null | vechain_sdk_core_ethers.AccessListish; + accessList?: null | AccessListish; /** * A custom object, which can be passed along for network-specific @@ -374,7 +372,7 @@ interface VeChainSigner { export { type AvailableVeChainProviders, - type TransactionRequestInput, type SignTypedDataOptions, + type TransactionRequestInput, type VeChainSigner }; diff --git a/packages/network/src/signer/signers/vechain-abstract-signer/vechain-abstract-signer.ts b/packages/network/src/signer/signers/vechain-abstract-signer/vechain-abstract-signer.ts index e3bb2dd55..7c2448035 100644 --- a/packages/network/src/signer/signers/vechain-abstract-signer/vechain-abstract-signer.ts +++ b/packages/network/src/signer/signers/vechain-abstract-signer/vechain-abstract-signer.ts @@ -5,16 +5,16 @@ import { HexUInt, Txt, type TransactionBody, - type TransactionClause, - type vechain_sdk_core_ethers + type TransactionClause } from '@vechain/sdk-core'; import { InvalidDataType, JSONRPCInvalidParams } from '@vechain/sdk-errors'; +import { type TypedDataDomain, type TypedDataField } from 'ethers'; import { RPC_METHODS } from '../../../provider/utils/const/rpc-mapper/rpc-methods'; import { type TransactionSimulationResult } from '../../../thor-client'; import { vnsUtils } from '../../../utils'; import { - type SignTypedDataOptions, type AvailableVeChainProviders, + type SignTypedDataOptions, type TransactionRequestInput, type VeChainSigner } from '../types'; @@ -336,15 +336,15 @@ abstract class VeChainAbstractSigner implements VeChainSigner { /** * Signs the [[link-eip-712]] typed data. * - * @param {vechain_sdk_core_ethers.TypedDataDomain} domain - The domain parameters used for signing. - * @param {Record} types - The types used for signing. + * @param {TypedDataDomain} domain - The domain parameters used for signing. + * @param {Record} types - The types used for signing. * @param {Record} value - The message data to be signed. * * @return {Promise} - A promise that resolves with the signature string. */ abstract signTypedData( - domain: vechain_sdk_core_ethers.TypedDataDomain, - types: Record, + domain: TypedDataDomain, + types: Record, value: Record, options?: SignTypedDataOptions ): Promise; diff --git a/packages/network/src/signer/signers/vechain-private-key-signer/vechain-private-key-signer.ts b/packages/network/src/signer/signers/vechain-private-key-signer/vechain-private-key-signer.ts index 5385973c0..f950bdcb9 100644 --- a/packages/network/src/signer/signers/vechain-private-key-signer/vechain-private-key-signer.ts +++ b/packages/network/src/signer/signers/vechain-private-key-signer/vechain-private-key-signer.ts @@ -7,14 +7,18 @@ import { Secp256k1, Transaction, type TransactionBody, - Txt, - vechain_sdk_core_ethers + Txt } from '@vechain/sdk-core'; import { InvalidSecp256k1PrivateKey, JSONRPCInvalidParams, stringifyData } from '@vechain/sdk-errors'; +import { + type TypedDataDomain, + TypedDataEncoder, + type TypedDataField +} from 'ethers'; import { RPC_METHODS } from '../../../provider/utils/const/rpc-mapper/rpc-methods'; import { DelegationHandler, @@ -193,25 +197,21 @@ class VeChainPrivateKeySigner extends VeChainAbstractSigner { * This function is a drop-in replacement for {@link ethers.BaseWallet.signTypedData} function, * albeit Ethereum Name Services are not resolved because he resolution depends on **ethers** provider implementation. * - * @param {vechain_sdk_core_ethers.TypedDataDomain} domain - The domain parameters used for signing. - * @param {Record} types - The types used for signing. + * @param {TypedDataDomain} domain - The domain parameters used for signing. + * @param {Record} types - The types used for signing. * @param {Record} value - The value data to be signed. * * @return {Promise} - A promise that resolves with the signature string. */ async signTypedData( - domain: vechain_sdk_core_ethers.TypedDataDomain, - types: Record, + domain: TypedDataDomain, + types: Record, value: Record ): Promise { return await new Promise((resolve, reject) => { try { const hash = Hex.of( - vechain_sdk_core_ethers.TypedDataEncoder.hash( - domain, - types, - value - ) + TypedDataEncoder.hash(domain, types, value) ).bytes; const sign = Secp256k1.sign( hash, diff --git a/packages/network/src/thor-client/transactions/transactions-module.ts b/packages/network/src/thor-client/transactions/transactions-module.ts index 986b0118f..337a6b320 100644 --- a/packages/network/src/thor-client/transactions/transactions-module.ts +++ b/packages/network/src/thor-client/transactions/transactions-module.ts @@ -6,10 +6,11 @@ import { ThorId, Transaction, type TransactionBody, - type TransactionClause, - vechain_sdk_core_ethers + type TransactionClause } from '@vechain/sdk-core'; import { InvalidDataType, InvalidTransactionField } from '@vechain/sdk-errors'; +import { ErrorFragment, Interface } from 'ethers'; +import { HttpMethod } from '../../http'; import { blocksFormatter, getTransactionIndexIntoBlock } from '../../provider'; import { buildQuery, @@ -35,7 +36,6 @@ import { type TransactionSimulationResult, type WaitForTransactionOptions } from './types'; -import { HttpMethod } from '../../http'; /** * The `TransactionsModule` handles transaction related operations and provides @@ -475,12 +475,12 @@ class TransactionsModule { } // Solidity error, an error fragment is provided, so decode the revert reason using solidity error else if (errorFragment !== undefined) { - const errorInterface = new vechain_sdk_core_ethers.Interface([ - vechain_sdk_core_ethers.ErrorFragment.from(errorFragment) + const errorInterface = new Interface([ + ErrorFragment.from(errorFragment) ]); return errorInterface .decodeErrorResult( - vechain_sdk_core_ethers.ErrorFragment.from(errorFragment), + ErrorFragment.from(errorFragment), encodedRevertReason ) .toArray()[0] as string; diff --git a/packages/network/tests/signer/signers/vechain-private-key-signer/vechain-private-key-signer.unit.test.ts b/packages/network/tests/signer/signers/vechain-private-key-signer/vechain-private-key-signer.unit.test.ts index 9dbde78ac..64c92620c 100644 --- a/packages/network/tests/signer/signers/vechain-private-key-signer/vechain-private-key-signer.unit.test.ts +++ b/packages/network/tests/signer/signers/vechain-private-key-signer/vechain-private-key-signer.unit.test.ts @@ -6,14 +6,8 @@ import { jest, test } from '@jest/globals'; -import { - Address, - Hex, - HexUInt, - Secp256k1, - Txt, - vechain_sdk_core_ethers -} from '@vechain/sdk-core'; +import { Address, Hex, HexUInt, Secp256k1, Txt } from '@vechain/sdk-core'; +import { Wallet } from 'ethers'; import { TESTNET_URL, ThorClient, @@ -264,9 +258,9 @@ describe('VeChain base signer tests', () => { }); test('signMessage - ethers compatible - string', async () => { - const expected = await new vechain_sdk_core_ethers.Wallet( - EIP191_PRIVATE_KEY - ).signMessage(EIP191_MESSAGE); + const expected = await new Wallet(EIP191_PRIVATE_KEY).signMessage( + EIP191_MESSAGE + ); const actual = await new VeChainPrivateKeySigner( Hex.of(EIP191_PRIVATE_KEY).bytes, provider @@ -276,9 +270,9 @@ describe('VeChain base signer tests', () => { test('signMessage - ethers compatible - uint8array', async () => { const message = Txt.of(EIP191_MESSAGE).bytes; - const expected = await new vechain_sdk_core_ethers.Wallet( - EIP191_PRIVATE_KEY - ).signMessage(message); + const expected = await new Wallet(EIP191_PRIVATE_KEY).signMessage( + message + ); const actual = await new VeChainPrivateKeySigner( Hex.of(EIP191_PRIVATE_KEY).bytes, provider @@ -335,7 +329,7 @@ describe('VeChain base signer tests', () => { }); test('signTypedData - ethers compatible', async () => { - const expected = await new vechain_sdk_core_ethers.Wallet( + const expected = await new Wallet( eip712TestCases.valid.privateKey ).signTypedData( eip712TestCases.valid.domain, diff --git a/packages/network/tests/utils/subscriptions/fixture.ts b/packages/network/tests/utils/subscriptions/fixture.ts index 8be183414..4cae95e7a 100644 --- a/packages/network/tests/utils/subscriptions/fixture.ts +++ b/packages/network/tests/utils/subscriptions/fixture.ts @@ -1,4 +1,5 @@ -import { Hex, vechain_sdk_core_ethers } from '@vechain/sdk-core'; +import { Hex } from '@vechain/sdk-core'; +import { EventFragment, hexlify, toBeHex, zeroPadValue } from 'ethers'; import { TESTING_CONTRACT_ADDRESS } from '../../fixture'; // eslint-disable-next-line import/no-named-default import { default as NodeWebSocket } from 'isomorphic-ws'; @@ -57,7 +58,7 @@ const getEventSubscriptionUrlTestCases = [ )}&t2=0x000000000000000000000000${toRandomAddress.slice(2)}` }, { - event: vechain_sdk_core_ethers.EventFragment.from({ + event: EventFragment.from({ anonymous: false, inputs: [ { @@ -157,12 +158,7 @@ const getEventSubscriptionUrlTestCases = [ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access )}&t2=0x000000000000000000000000${toRandomAddress.slice( 2 - )}&t3=${vechain_sdk_core_ethers.zeroPadValue( - vechain_sdk_core_ethers.hexlify( - vechain_sdk_core_ethers.toBeHex(randomBigInt) - ), - 32 - )}` + )}&t3=${zeroPadValue(hexlify(toBeHex(randomBigInt)), 32)}` }, // WITH OPTIONS { @@ -185,12 +181,7 @@ const getEventSubscriptionUrlTestCases = [ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access expectedURL: `wss://testnet.vechain.org/subscriptions/event?addr=${TESTING_CONTRACT_ADDRESS}&t0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef&t1=0x000000000000000000000000${fromRandomAddress.slice( 2 - )}&t3=${vechain_sdk_core_ethers.zeroPadValue( - vechain_sdk_core_ethers.hexlify( - vechain_sdk_core_ethers.toBeHex(randomBigInt) - ), - 32 - )}` + )}&t3=${zeroPadValue(hexlify(toBeHex(randomBigInt)), 32)}` }, { event: 'event Swap(address indexed sender,uint amount0In,uint amount1In,uint amount0Out,uint amount1Out,address indexed to)', @@ -315,10 +306,10 @@ async function testWebSocketConnection(url: string): Promise { } export { - getEventSubscriptionUrlTestCases, + getBeatSubscriptionUrlTestCases, getBlockSubscriptionUrlTestCases, + getEventSubscriptionUrlTestCases, getLegacyBeatSubscriptionUrlTestCases, - getBeatSubscriptionUrlTestCases, getNewTransactionsSubscriptionUrlTestCases, getVETtransfersSubscriptionUrlTestCases, testWebSocketConnection