web3-eth-contract
Advanced tools
Comparing version 4.6.1-dev.f87ffbe.0 to 4.7.0
import { Web3Context, Web3EventEmitter, Web3PromiEvent } from 'web3-core'; | ||
import { NewHeadsSubscription, SendTransactionEvents, TransactionMiddleware } from 'web3-eth'; | ||
import { AbiFunctionFragment, ContractAbi, ContractConstructorArgs, ContractEvent, ContractEvents, ContractMethod, ContractMethodInputParameters, ContractMethodOutputParameters, Address, EthExecutionAPI, Filter, FilterAbis, HexString, ContractInitOptions, PayableCallOptions, DataFormat, DEFAULT_RETURN_FORMAT, EventLog, ContractOptions, TransactionReceipt, FormatType, DecodedParams } from 'web3-types'; | ||
import { AbiFunctionFragment, ContractAbi, ContractConstructorArgs, ContractEvent, ContractEvents, ContractMethod, ContractMethodInputParameters, ContractMethodOutputParameters, Address, EthExecutionAPI, Filter, FilterAbis, HexString, ContractInitOptions, NonPayableCallOptions, PayableCallOptions, DataFormat, DEFAULT_RETURN_FORMAT, EventLog, ContractOptions, TransactionReceipt, FormatType, DecodedParams } from 'web3-types'; | ||
import { LogsSubscription } from './log_subscription.js'; | ||
import { ContractEventOptions, NonPayableMethodObject, PayableMethodObject, PayableTxOptions, Web3ContractContext } from './types.js'; | ||
import { ContractEventOptions, NonPayableMethodObject, PayableMethodObject, Web3ContractContext } from './types.js'; | ||
import { DeployerMethodClass } from './contract-deployer-method-class.js'; | ||
declare type ContractBoundMethod<Abi extends AbiFunctionFragment, Method extends ContractMethod<Abi> = ContractMethod<Abi>> = (...args: Method['Inputs'] extends undefined | unknown ? any[] : Method['Inputs']) => Method['Abi']['stateMutability'] extends 'payable' | 'pure' ? PayableMethodObject<Method['Inputs'], Method['Outputs']> : NonPayableMethodObject<Method['Inputs'], Method['Outputs']>; | ||
@@ -17,3 +18,2 @@ export declare type ContractOverloadedMethodInputs<AbiArr extends ReadonlyArray<unknown>> = NonNullable<AbiArr extends readonly [] ? undefined : AbiArr extends readonly [infer A, ...infer R] ? A extends AbiFunctionFragment ? ContractMethodInputParameters<A['inputs']> | ContractOverloadedMethodInputs<R> : undefined : undefined>; | ||
export declare type ContractMethodSend = Web3PromiEvent<FormatType<TransactionReceipt, DataFormat>, SendTransactionEvents<DataFormat>>; | ||
export declare type ContractDeploySend<Abi extends ContractAbi> = Web3PromiEvent<Contract<Abi>, SendTransactionEvents<DataFormat>>; | ||
/** | ||
@@ -473,15 +473,3 @@ * @hidden | ||
arguments?: ContractConstructorArgs<Abi>; | ||
}): { | ||
arguments: never[] | NonNullable<ContractConstructorArgs<Abi>>; | ||
send: (options?: PayableTxOptions) => ContractDeploySend<Abi>; | ||
estimateGas: <ReturnFormat extends DataFormat = { | ||
readonly number: import("web3-types").FMT_NUMBER.BIGINT; | ||
readonly bytes: import("web3-types").FMT_BYTES.HEX; | ||
}>(options?: PayableCallOptions, returnFormat?: ReturnFormat) => Promise<import("web3-types").NumberTypes[ReturnFormat["number"]]>; | ||
encodeABI: () => string; | ||
decodeData: (data: HexString) => { | ||
__method__: string; | ||
__length__: number; | ||
}; | ||
}; | ||
}): DeployerMethodClass<Abi>; | ||
/** | ||
@@ -539,4 +527,9 @@ * Gets past events for this contract. | ||
private _contractMethodSend; | ||
private _contractMethodDeploySend; | ||
private _contractMethodEstimateGas; | ||
contractMethodEstimateGas<Options extends PayableCallOptions | NonPayableCallOptions, ReturnFormat extends DataFormat>({ abi, params, returnFormat, options, contractOptions, }: { | ||
abi: AbiFunctionFragment; | ||
params: unknown[]; | ||
returnFormat: ReturnFormat; | ||
options?: Options; | ||
contractOptions?: ContractOptions; | ||
}): Promise<import("web3-types").NumberTypes[ReturnFormat["number"]]>; | ||
private _createContractEvent; | ||
@@ -543,0 +536,0 @@ protected subscribeToContextEvents<T extends Web3Context>(context: T): void; |
@@ -39,2 +39,4 @@ "use strict"; | ||
const utils_js_1 = require("./utils.js"); | ||
// eslint-disable-next-line import/no-cycle | ||
const contract_deployer_method_class_js_1 = require("./contract-deployer-method-class.js"); | ||
const contractSubscriptions = { | ||
@@ -261,4 +263,3 @@ logs: log_subscription_js_1.LogsSubscription, | ||
let provider; | ||
if (typeof addressOrOptionsOrContext === 'object' && | ||
'provider' in addressOrOptionsOrContext) { | ||
if (typeof addressOrOptionsOrContext === 'object' && 'provider' in addressOrOptionsOrContext) { | ||
provider = addressOrOptionsOrContext.provider; | ||
@@ -270,4 +271,3 @@ } | ||
} | ||
else if (typeof contextOrReturnFormat === 'object' && | ||
'provider' in contextOrReturnFormat) { | ||
else if (typeof contextOrReturnFormat === 'object' && 'provider' in contextOrReturnFormat) { | ||
provider = contextOrReturnFormat.provider; | ||
@@ -532,38 +532,3 @@ } | ||
deploy(deployOptions) { | ||
var _a, _b, _c; | ||
let abi = this._jsonInterface.find(j => j.type === 'constructor'); | ||
if (!abi) { | ||
abi = { | ||
type: 'constructor', | ||
stateMutability: '', | ||
}; | ||
} | ||
const _input = (0, web3_utils_1.format)({ format: 'bytes' }, (_a = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.input) !== null && _a !== void 0 ? _a : this.options.input, web3_types_1.DEFAULT_RETURN_FORMAT); | ||
const _data = (0, web3_utils_1.format)({ format: 'bytes' }, (_b = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.data) !== null && _b !== void 0 ? _b : this.options.data, web3_types_1.DEFAULT_RETURN_FORMAT); | ||
if ((!_input || _input.trim() === '0x') && (!_data || _data.trim() === '0x')) { | ||
throw new web3_errors_1.Web3ContractError('contract creation without any data provided.'); | ||
} | ||
const args = (_c = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.arguments) !== null && _c !== void 0 ? _c : []; | ||
const contractOptions = Object.assign(Object.assign({}, this.options), { input: _input, data: _data }); | ||
const deployData = _input !== null && _input !== void 0 ? _input : _data; | ||
return { | ||
arguments: args, | ||
send: (options) => { | ||
const modifiedOptions = Object.assign({}, options); | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return | ||
return this._contractMethodDeploySend(abi, args, modifiedOptions, contractOptions); | ||
}, | ||
estimateGas: (options, returnFormat = this.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
const modifiedOptions = Object.assign({}, options); | ||
return this._contractMethodEstimateGas({ | ||
abi: abi, | ||
params: args, | ||
returnFormat, | ||
options: modifiedOptions, | ||
contractOptions, | ||
}); | ||
}), | ||
encodeABI: () => (0, encoding_js_1.encodeMethodABI)(abi, args, (0, web3_utils_1.format)({ format: 'bytes' }, deployData, this.defaultReturnFormat)), | ||
decodeData: (data) => (Object.assign(Object.assign({}, (0, encoding_js_1.decodeMethodParams)(abi, data.replace(deployData, ''), false)), { __method__: abi.type })), | ||
}; | ||
return new contract_deployer_method_class_js_1.DeployerMethodClass(this, deployOptions); | ||
} | ||
@@ -609,4 +574,3 @@ getPastEvents(param1, param2, param3) { | ||
if (Array.isArray(filter[key])) { | ||
return filter[key].some((v) => String(log.returnValues[key]).toUpperCase() === | ||
String(v).toUpperCase()); | ||
return filter[key].some((v) => String(log.returnValues[key]).toUpperCase() === String(v).toUpperCase()); | ||
} | ||
@@ -619,4 +583,3 @@ const inputAbi = (_a = abi.inputs) === null || _a === void 0 ? void 0 : _a.filter(input => input.name === key)[0]; | ||
} | ||
return (String(log.returnValues[key]).toUpperCase() === | ||
String(filter[key]).toUpperCase()); | ||
return String(log.returnValues[key]).toUpperCase() === String(filter[key]).toUpperCase(); | ||
}); | ||
@@ -673,4 +636,3 @@ }); | ||
// We don't know a particular type of the Abi method so can't type check | ||
this._methods[abi.name] = | ||
contractMethod; | ||
this._methods[abi.name] = contractMethod; | ||
// We don't know a particular type of the Abi method so can't type check | ||
@@ -761,5 +723,3 @@ this._methods[methodName] = | ||
arguments: abiParams, | ||
call: (options, block) => __awaiter(this, void 0, void 0, function* () { | ||
return this._contractMethodCall(methodAbi, abiParams, internalErrorsAbis, options, block); | ||
}), | ||
call: (options, block) => __awaiter(this, void 0, void 0, function* () { return this._contractMethodCall(methodAbi, abiParams, internalErrorsAbis, options, block); }), | ||
send: (options) => this._contractMethodSend(methodAbi, abiParams, internalErrorsAbis, options), | ||
@@ -783,5 +743,4 @@ populateTransaction: (options, contractOptions) => { | ||
}, | ||
estimateGas: (options, returnFormat = this | ||
.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
return this._contractMethodEstimateGas({ | ||
estimateGas: (options, returnFormat = this.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
return this.contractMethodEstimateGas({ | ||
abi: methodAbi, | ||
@@ -858,9 +817,9 @@ params: abiParams, | ||
}); | ||
const transactionToSend = ((0, web3_validator_1.isNullish)(this.transactionMiddleware)) ? | ||
(0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, { | ||
const transactionToSend = (0, web3_validator_1.isNullish)(this.transactionMiddleware) | ||
? (0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, // explicitly not passing middleware so if some one is using old eth package it will not break | ||
}) : | ||
(0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, { | ||
}) | ||
: (0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
@@ -879,31 +838,3 @@ checkRevertBeforeSending: false, | ||
} | ||
_contractMethodDeploySend(abi, params, options, contractOptions) { | ||
var _a, _b; | ||
let modifiedContractOptions = contractOptions !== null && contractOptions !== void 0 ? contractOptions : this.options; | ||
modifiedContractOptions = Object.assign(Object.assign({}, modifiedContractOptions), { from: (_b = (_a = modifiedContractOptions.from) !== null && _a !== void 0 ? _a : this.defaultAccount) !== null && _b !== void 0 ? _b : undefined }); | ||
const tx = (0, utils_js_1.getSendTxParams)({ | ||
abi, | ||
params, | ||
options: Object.assign(Object.assign({}, options), { dataInputFill: this.contractDataInputFill }), | ||
contractOptions: modifiedContractOptions, | ||
}); | ||
const returnTxOptions = { | ||
transactionResolver: (receipt) => { | ||
if (receipt.status === BigInt(0)) { | ||
throw new web3_errors_1.Web3ContractError("code couldn't be stored", receipt); | ||
} | ||
const newContract = this.clone(); | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access | ||
newContract.options.address = receipt.contractAddress; | ||
return newContract; | ||
}, | ||
contractAbi: this._jsonInterface, | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
}; | ||
return (((0, web3_validator_1.isNullish)(this.transactionMiddleware)) ? | ||
(0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, returnTxOptions) : // not calling this with undefined Middleware because it will not break if Eth package is not updated | ||
(0, web3_eth_1.sendTransaction)(this, tx, this.defaultReturnFormat, returnTxOptions, this.transactionMiddleware)); | ||
} | ||
_contractMethodEstimateGas({ abi, params, returnFormat, options, contractOptions, }) { | ||
contractMethodEstimateGas({ abi, params, returnFormat, options, contractOptions, }) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -910,0 +841,0 @@ const tx = (0, utils_js_1.getEstimateGasParams)({ |
@@ -29,2 +29,3 @@ /** | ||
export * from './contract.js'; | ||
export * from './contract-deployer-method-class.js'; | ||
export * from './log_subscription.js'; | ||
@@ -31,0 +32,0 @@ export * from './types.js'; |
@@ -61,2 +61,3 @@ "use strict"; | ||
__exportStar(require("./contract.js"), exports); | ||
__exportStar(require("./contract-deployer-method-class.js"), exports); | ||
__exportStar(require("./log_subscription.js"), exports); | ||
@@ -63,0 +64,0 @@ __exportStar(require("./types.js"), exports); |
@@ -1,4 +0,4 @@ | ||
import { TransactionForAccessList, AbiFunctionFragment, TransactionWithSenderAPI, TransactionCall, HexString, Address, NonPayableCallOptions, PayableCallOptions, ContractOptions, Numbers } from 'web3-types'; | ||
import { TransactionForAccessList, AbiFunctionFragment, TransactionWithSenderAPI, TransactionCall, HexString, Address, NonPayableCallOptions, PayableCallOptions, ContractOptions, Numbers, AbiConstructorFragment } from 'web3-types'; | ||
export declare const getSendTxParams: ({ abi, params, options, contractOptions, }: { | ||
abi: AbiFunctionFragment; | ||
abi: AbiFunctionFragment | AbiConstructorFragment; | ||
params: unknown[]; | ||
@@ -5,0 +5,0 @@ options?: ((NonPayableCallOptions | PayableCallOptions) & { |
@@ -30,3 +30,3 @@ /* | ||
import { encodeEventSignature, encodeFunctionSignature, decodeContractErrorData, isAbiErrorFragment, isAbiEventFragment, isAbiFunctionFragment, jsonInterfaceMethodToString, } from 'web3-eth-abi'; | ||
import { BlockTags, DEFAULT_RETURN_FORMAT, } from 'web3-types'; | ||
import { BlockTags, } from 'web3-types'; | ||
import { format, isDataFormat, keccak256, toChecksumAddress, isContractInitOptions, } from 'web3-utils'; | ||
@@ -37,2 +37,4 @@ import { isNullish, validator, utils as validatorUtils, Web3ValidatorError, } from 'web3-validator'; | ||
import { getCreateAccessListParams, getEstimateGasParams, getEthTxCallParams, getSendTxParams, isWeb3ContractContext, } from './utils.js'; | ||
// eslint-disable-next-line import/no-cycle | ||
import { DeployerMethodClass } from './contract-deployer-method-class.js'; | ||
const contractSubscriptions = { | ||
@@ -259,4 +261,3 @@ logs: LogsSubscription, | ||
let provider; | ||
if (typeof addressOrOptionsOrContext === 'object' && | ||
'provider' in addressOrOptionsOrContext) { | ||
if (typeof addressOrOptionsOrContext === 'object' && 'provider' in addressOrOptionsOrContext) { | ||
provider = addressOrOptionsOrContext.provider; | ||
@@ -268,4 +269,3 @@ } | ||
} | ||
else if (typeof contextOrReturnFormat === 'object' && | ||
'provider' in contextOrReturnFormat) { | ||
else if (typeof contextOrReturnFormat === 'object' && 'provider' in contextOrReturnFormat) { | ||
provider = contextOrReturnFormat.provider; | ||
@@ -530,38 +530,3 @@ } | ||
deploy(deployOptions) { | ||
var _a, _b, _c; | ||
let abi = this._jsonInterface.find(j => j.type === 'constructor'); | ||
if (!abi) { | ||
abi = { | ||
type: 'constructor', | ||
stateMutability: '', | ||
}; | ||
} | ||
const _input = format({ format: 'bytes' }, (_a = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.input) !== null && _a !== void 0 ? _a : this.options.input, DEFAULT_RETURN_FORMAT); | ||
const _data = format({ format: 'bytes' }, (_b = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.data) !== null && _b !== void 0 ? _b : this.options.data, DEFAULT_RETURN_FORMAT); | ||
if ((!_input || _input.trim() === '0x') && (!_data || _data.trim() === '0x')) { | ||
throw new Web3ContractError('contract creation without any data provided.'); | ||
} | ||
const args = (_c = deployOptions === null || deployOptions === void 0 ? void 0 : deployOptions.arguments) !== null && _c !== void 0 ? _c : []; | ||
const contractOptions = Object.assign(Object.assign({}, this.options), { input: _input, data: _data }); | ||
const deployData = _input !== null && _input !== void 0 ? _input : _data; | ||
return { | ||
arguments: args, | ||
send: (options) => { | ||
const modifiedOptions = Object.assign({}, options); | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return | ||
return this._contractMethodDeploySend(abi, args, modifiedOptions, contractOptions); | ||
}, | ||
estimateGas: (options, returnFormat = this.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
const modifiedOptions = Object.assign({}, options); | ||
return this._contractMethodEstimateGas({ | ||
abi: abi, | ||
params: args, | ||
returnFormat, | ||
options: modifiedOptions, | ||
contractOptions, | ||
}); | ||
}), | ||
encodeABI: () => encodeMethodABI(abi, args, format({ format: 'bytes' }, deployData, this.defaultReturnFormat)), | ||
decodeData: (data) => (Object.assign(Object.assign({}, decodeMethodParams(abi, data.replace(deployData, ''), false)), { __method__: abi.type })), | ||
}; | ||
return new DeployerMethodClass(this, deployOptions); | ||
} | ||
@@ -607,4 +572,3 @@ getPastEvents(param1, param2, param3) { | ||
if (Array.isArray(filter[key])) { | ||
return filter[key].some((v) => String(log.returnValues[key]).toUpperCase() === | ||
String(v).toUpperCase()); | ||
return filter[key].some((v) => String(log.returnValues[key]).toUpperCase() === String(v).toUpperCase()); | ||
} | ||
@@ -617,4 +581,3 @@ const inputAbi = (_a = abi.inputs) === null || _a === void 0 ? void 0 : _a.filter(input => input.name === key)[0]; | ||
} | ||
return (String(log.returnValues[key]).toUpperCase() === | ||
String(filter[key]).toUpperCase()); | ||
return String(log.returnValues[key]).toUpperCase() === String(filter[key]).toUpperCase(); | ||
}); | ||
@@ -671,4 +634,3 @@ }); | ||
// We don't know a particular type of the Abi method so can't type check | ||
this._methods[abi.name] = | ||
contractMethod; | ||
this._methods[abi.name] = contractMethod; | ||
// We don't know a particular type of the Abi method so can't type check | ||
@@ -759,5 +721,3 @@ this._methods[methodName] = | ||
arguments: abiParams, | ||
call: (options, block) => __awaiter(this, void 0, void 0, function* () { | ||
return this._contractMethodCall(methodAbi, abiParams, internalErrorsAbis, options, block); | ||
}), | ||
call: (options, block) => __awaiter(this, void 0, void 0, function* () { return this._contractMethodCall(methodAbi, abiParams, internalErrorsAbis, options, block); }), | ||
send: (options) => this._contractMethodSend(methodAbi, abiParams, internalErrorsAbis, options), | ||
@@ -781,5 +741,4 @@ populateTransaction: (options, contractOptions) => { | ||
}, | ||
estimateGas: (options, returnFormat = this | ||
.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
return this._contractMethodEstimateGas({ | ||
estimateGas: (options, returnFormat = this.defaultReturnFormat) => __awaiter(this, void 0, void 0, function* () { | ||
return this.contractMethodEstimateGas({ | ||
abi: methodAbi, | ||
@@ -856,9 +815,9 @@ params: abiParams, | ||
}); | ||
const transactionToSend = (isNullish(this.transactionMiddleware)) ? | ||
sendTransaction(this, tx, this.defaultReturnFormat, { | ||
const transactionToSend = isNullish(this.transactionMiddleware) | ||
? sendTransaction(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, // explicitly not passing middleware so if some one is using old eth package it will not break | ||
}) : | ||
sendTransaction(this, tx, this.defaultReturnFormat, { | ||
}) | ||
: sendTransaction(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
@@ -877,31 +836,3 @@ checkRevertBeforeSending: false, | ||
} | ||
_contractMethodDeploySend(abi, params, options, contractOptions) { | ||
var _a, _b; | ||
let modifiedContractOptions = contractOptions !== null && contractOptions !== void 0 ? contractOptions : this.options; | ||
modifiedContractOptions = Object.assign(Object.assign({}, modifiedContractOptions), { from: (_b = (_a = modifiedContractOptions.from) !== null && _a !== void 0 ? _a : this.defaultAccount) !== null && _b !== void 0 ? _b : undefined }); | ||
const tx = getSendTxParams({ | ||
abi, | ||
params, | ||
options: Object.assign(Object.assign({}, options), { dataInputFill: this.contractDataInputFill }), | ||
contractOptions: modifiedContractOptions, | ||
}); | ||
const returnTxOptions = { | ||
transactionResolver: (receipt) => { | ||
if (receipt.status === BigInt(0)) { | ||
throw new Web3ContractError("code couldn't be stored", receipt); | ||
} | ||
const newContract = this.clone(); | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access | ||
newContract.options.address = receipt.contractAddress; | ||
return newContract; | ||
}, | ||
contractAbi: this._jsonInterface, | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
}; | ||
return ((isNullish(this.transactionMiddleware)) ? | ||
sendTransaction(this, tx, this.defaultReturnFormat, returnTxOptions) : // not calling this with undefined Middleware because it will not break if Eth package is not updated | ||
sendTransaction(this, tx, this.defaultReturnFormat, returnTxOptions, this.transactionMiddleware)); | ||
} | ||
_contractMethodEstimateGas({ abi, params, returnFormat, options, contractOptions, }) { | ||
contractMethodEstimateGas({ abi, params, returnFormat, options, contractOptions, }) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -908,0 +839,0 @@ const tx = getEstimateGasParams({ |
@@ -45,2 +45,3 @@ /* | ||
export * from './contract.js'; | ||
export * from './contract-deployer-method-class.js'; | ||
export * from './log_subscription.js'; | ||
@@ -47,0 +48,0 @@ export * from './types.js'; |
import { Web3Context, Web3EventEmitter, Web3PromiEvent } from 'web3-core'; | ||
import { NewHeadsSubscription, SendTransactionEvents, TransactionMiddleware } from 'web3-eth'; | ||
import { AbiFunctionFragment, ContractAbi, ContractConstructorArgs, ContractEvent, ContractEvents, ContractMethod, ContractMethodInputParameters, ContractMethodOutputParameters, Address, EthExecutionAPI, Filter, FilterAbis, HexString, ContractInitOptions, PayableCallOptions, DataFormat, DEFAULT_RETURN_FORMAT, EventLog, ContractOptions, TransactionReceipt, FormatType, DecodedParams } from 'web3-types'; | ||
import { AbiFunctionFragment, ContractAbi, ContractConstructorArgs, ContractEvent, ContractEvents, ContractMethod, ContractMethodInputParameters, ContractMethodOutputParameters, Address, EthExecutionAPI, Filter, FilterAbis, HexString, ContractInitOptions, NonPayableCallOptions, PayableCallOptions, DataFormat, DEFAULT_RETURN_FORMAT, EventLog, ContractOptions, TransactionReceipt, FormatType, DecodedParams } from 'web3-types'; | ||
import { LogsSubscription } from './log_subscription.js'; | ||
import { ContractEventOptions, NonPayableMethodObject, PayableMethodObject, PayableTxOptions, Web3ContractContext } from './types.js'; | ||
import { ContractEventOptions, NonPayableMethodObject, PayableMethodObject, Web3ContractContext } from './types.js'; | ||
import { DeployerMethodClass } from './contract-deployer-method-class.js'; | ||
declare type ContractBoundMethod<Abi extends AbiFunctionFragment, Method extends ContractMethod<Abi> = ContractMethod<Abi>> = (...args: Method['Inputs'] extends undefined | unknown ? any[] : Method['Inputs']) => Method['Abi']['stateMutability'] extends 'payable' | 'pure' ? PayableMethodObject<Method['Inputs'], Method['Outputs']> : NonPayableMethodObject<Method['Inputs'], Method['Outputs']>; | ||
@@ -17,3 +18,2 @@ export declare type ContractOverloadedMethodInputs<AbiArr extends ReadonlyArray<unknown>> = NonNullable<AbiArr extends readonly [] ? undefined : AbiArr extends readonly [infer A, ...infer R] ? A extends AbiFunctionFragment ? ContractMethodInputParameters<A['inputs']> | ContractOverloadedMethodInputs<R> : undefined : undefined>; | ||
export declare type ContractMethodSend = Web3PromiEvent<FormatType<TransactionReceipt, DataFormat>, SendTransactionEvents<DataFormat>>; | ||
export declare type ContractDeploySend<Abi extends ContractAbi> = Web3PromiEvent<Contract<Abi>, SendTransactionEvents<DataFormat>>; | ||
/** | ||
@@ -473,15 +473,3 @@ * @hidden | ||
arguments?: ContractConstructorArgs<Abi>; | ||
}): { | ||
arguments: never[] | NonNullable<ContractConstructorArgs<Abi>>; | ||
send: (options?: PayableTxOptions) => ContractDeploySend<Abi>; | ||
estimateGas: <ReturnFormat extends DataFormat = { | ||
readonly number: import("web3-types").FMT_NUMBER.BIGINT; | ||
readonly bytes: import("web3-types").FMT_BYTES.HEX; | ||
}>(options?: PayableCallOptions, returnFormat?: ReturnFormat) => Promise<import("web3-types").NumberTypes[ReturnFormat["number"]]>; | ||
encodeABI: () => string; | ||
decodeData: (data: HexString) => { | ||
__method__: string; | ||
__length__: number; | ||
}; | ||
}; | ||
}): DeployerMethodClass<Abi>; | ||
/** | ||
@@ -539,4 +527,9 @@ * Gets past events for this contract. | ||
private _contractMethodSend; | ||
private _contractMethodDeploySend; | ||
private _contractMethodEstimateGas; | ||
contractMethodEstimateGas<Options extends PayableCallOptions | NonPayableCallOptions, ReturnFormat extends DataFormat>({ abi, params, returnFormat, options, contractOptions, }: { | ||
abi: AbiFunctionFragment; | ||
params: unknown[]; | ||
returnFormat: ReturnFormat; | ||
options?: Options; | ||
contractOptions?: ContractOptions; | ||
}): Promise<import("web3-types").NumberTypes[ReturnFormat["number"]]>; | ||
private _createContractEvent; | ||
@@ -543,0 +536,0 @@ protected subscribeToContextEvents<T extends Web3Context>(context: T): void; |
@@ -29,2 +29,3 @@ /** | ||
export * from './contract.js'; | ||
export * from './contract-deployer-method-class.js'; | ||
export * from './log_subscription.js'; | ||
@@ -31,0 +32,0 @@ export * from './types.js'; |
@@ -1,4 +0,4 @@ | ||
import { TransactionForAccessList, AbiFunctionFragment, TransactionWithSenderAPI, TransactionCall, HexString, Address, NonPayableCallOptions, PayableCallOptions, ContractOptions, Numbers } from 'web3-types'; | ||
import { TransactionForAccessList, AbiFunctionFragment, TransactionWithSenderAPI, TransactionCall, HexString, Address, NonPayableCallOptions, PayableCallOptions, ContractOptions, Numbers, AbiConstructorFragment } from 'web3-types'; | ||
export declare const getSendTxParams: ({ abi, params, options, contractOptions, }: { | ||
abi: AbiFunctionFragment; | ||
abi: AbiFunctionFragment | AbiConstructorFragment; | ||
params: unknown[]; | ||
@@ -5,0 +5,0 @@ options?: ((NonPayableCallOptions | PayableCallOptions) & { |
{ | ||
"name": "web3-eth-contract", | ||
"version": "4.6.1-dev.f87ffbe.0+f87ffbe", | ||
"version": "4.7.0", | ||
"description": "Web3 module to interact with Ethereum smart contracts.", | ||
@@ -49,9 +49,9 @@ "main": "./lib/commonjs/index.js", | ||
"@ethereumjs/rlp": "^5.0.2", | ||
"web3-core": "4.5.1-dev.f87ffbe.0+f87ffbe", | ||
"web3-errors": "1.2.2-dev.f87ffbe.0+f87ffbe", | ||
"web3-eth": "4.8.3-dev.f87ffbe.0+f87ffbe", | ||
"web3-eth-abi": "4.2.4-dev.f87ffbe.0+f87ffbe", | ||
"web3-types": "1.7.1-dev.f87ffbe.0+f87ffbe", | ||
"web3-utils": "4.3.2-dev.f87ffbe.0+f87ffbe", | ||
"web3-validator": "2.0.7-dev.f87ffbe.0+f87ffbe" | ||
"web3-core": "^4.5.1", | ||
"web3-errors": "^1.3.0", | ||
"web3-eth": "^4.8.2", | ||
"web3-eth-abi": "^4.2.3", | ||
"web3-types": "^1.7.0", | ||
"web3-utils": "^4.3.1", | ||
"web3-validator": "^2.0.6" | ||
}, | ||
@@ -73,6 +73,6 @@ "devDependencies": { | ||
"typescript": "^4.7.4", | ||
"web3-eth-accounts": "4.1.4-dev.f87ffbe.0+f87ffbe", | ||
"web3-providers-ws": "4.0.9-dev.f87ffbe.0+f87ffbe" | ||
"web3-eth-accounts": "^4.2.0", | ||
"web3-providers-ws": "^4.0.8" | ||
}, | ||
"gitHead": "f87ffbe1efc38a33df241adf97d2b82e9cede7c8" | ||
"gitHead": "4ce72be200d92ca6b2247c52c09f1e456723c0a3" | ||
} |
@@ -43,3 +43,2 @@ /* | ||
TransactionMiddleware, | ||
SendTransactionOptions, | ||
} from 'web3-eth'; | ||
@@ -56,3 +55,2 @@ import { | ||
import { | ||
AbiConstructorFragment, | ||
AbiErrorFragment, | ||
@@ -72,3 +70,2 @@ AbiEventFragment, | ||
BlockTags, | ||
Bytes, | ||
EthExecutionAPI, | ||
@@ -130,2 +127,4 @@ Filter, | ||
} from './utils.js'; | ||
// eslint-disable-next-line import/no-cycle | ||
import { DeployerMethodClass } from './contract-deployer-method-class.js'; | ||
@@ -175,7 +174,2 @@ type ContractBoundMethod< | ||
>; | ||
export type ContractDeploySend<Abi extends ContractAbi> = Web3PromiEvent< | ||
// eslint-disable-next-line no-use-before-define | ||
Contract<Abi>, | ||
SendTransactionEvents<DataFormat> | ||
>; | ||
@@ -223,2 +217,4 @@ /** | ||
/** | ||
@@ -524,7 +520,3 @@ * The `web3.eth.Contract` makes it easy to interact with smart contracts on the ethereum blockchain. | ||
jsonInterface: Abi, | ||
addressOrOptionsOrContext?: | ||
| Address | ||
| ContractInitOptions | ||
| Web3ContractContext | ||
| Web3Context, | ||
addressOrOptionsOrContext?: Address | ContractInitOptions | Web3ContractContext | Web3Context, | ||
optionsOrContextOrReturnFormat?: | ||
@@ -555,6 +547,3 @@ | ContractInitOptions | ||
let provider; | ||
if ( | ||
typeof addressOrOptionsOrContext === 'object' && | ||
'provider' in addressOrOptionsOrContext | ||
) { | ||
if (typeof addressOrOptionsOrContext === 'object' && 'provider' in addressOrOptionsOrContext) { | ||
provider = addressOrOptionsOrContext.provider; | ||
@@ -566,6 +555,3 @@ } else if ( | ||
provider = optionsOrContextOrReturnFormat.provider; | ||
} else if ( | ||
typeof contextOrReturnFormat === 'object' && | ||
'provider' in contextOrReturnFormat | ||
) { | ||
} else if (typeof contextOrReturnFormat === 'object' && 'provider' in contextOrReturnFormat) { | ||
provider = contextOrReturnFormat.provider; | ||
@@ -864,76 +850,4 @@ } else { | ||
arguments?: ContractConstructorArgs<Abi>; | ||
}) { | ||
let abi = this._jsonInterface.find(j => j.type === 'constructor') as AbiConstructorFragment; | ||
if (!abi) { | ||
abi = { | ||
type: 'constructor', | ||
stateMutability: '', | ||
} as AbiConstructorFragment; | ||
} | ||
const _input = format( | ||
{ format: 'bytes' }, | ||
deployOptions?.input ?? this.options.input, | ||
DEFAULT_RETURN_FORMAT, | ||
); | ||
const _data = format( | ||
{ format: 'bytes' }, | ||
deployOptions?.data ?? this.options.data, | ||
DEFAULT_RETURN_FORMAT, | ||
); | ||
if ((!_input || _input.trim() === '0x') && (!_data || _data.trim() === '0x')) { | ||
throw new Web3ContractError('contract creation without any data provided.'); | ||
} | ||
const args = deployOptions?.arguments ?? []; | ||
const contractOptions: ContractOptions = { ...this.options, input: _input, data: _data }; | ||
const deployData = _input ?? _data; | ||
return { | ||
arguments: args, | ||
send: (options?: PayableTxOptions): ContractDeploySend<Abi> => { | ||
const modifiedOptions = { ...options }; | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return | ||
return this._contractMethodDeploySend( | ||
abi as AbiFunctionFragment, | ||
args as unknown[], | ||
modifiedOptions, | ||
contractOptions, | ||
); | ||
}, | ||
estimateGas: async <ReturnFormat extends DataFormat = typeof DEFAULT_RETURN_FORMAT>( | ||
options?: PayableCallOptions, | ||
returnFormat: ReturnFormat = this.defaultReturnFormat as ReturnFormat, | ||
) => { | ||
const modifiedOptions = { ...options }; | ||
return this._contractMethodEstimateGas({ | ||
abi: abi as AbiFunctionFragment, | ||
params: args as unknown[], | ||
returnFormat, | ||
options: modifiedOptions, | ||
contractOptions, | ||
}); | ||
}, | ||
encodeABI: () => | ||
encodeMethodABI( | ||
abi as AbiFunctionFragment, | ||
args as unknown[], | ||
format( | ||
{ format: 'bytes' }, | ||
deployData as Bytes, | ||
this.defaultReturnFormat as typeof DEFAULT_RETURN_FORMAT, | ||
), | ||
), | ||
decodeData: (data: HexString) => ({ | ||
...decodeMethodParams( | ||
abi as AbiFunctionFragment, | ||
data.replace(deployData as string, ''), | ||
false, | ||
), | ||
__method__: abi.type, // abi.type is constructor | ||
}), | ||
}; | ||
}): DeployerMethodClass<Abi> { | ||
return new DeployerMethodClass(this, deployOptions); | ||
} | ||
@@ -1059,4 +973,3 @@ | ||
(v: Numbers) => | ||
String(log.returnValues[key]).toUpperCase() === | ||
String(v).toUpperCase(), | ||
String(log.returnValues[key]).toUpperCase() === String(v).toUpperCase(), | ||
); | ||
@@ -1071,6 +984,3 @@ } | ||
return ( | ||
String(log.returnValues[key]).toUpperCase() === | ||
String(filter[key]).toUpperCase() | ||
); | ||
return String(log.returnValues[key]).toUpperCase() === String(filter[key]).toUpperCase(); | ||
}); | ||
@@ -1118,5 +1028,3 @@ }); | ||
const functionsAbi = abis.filter(abi => abi.type !== 'error'); | ||
const errorsAbi = abis.filter(abi => | ||
isAbiErrorFragment(abi), | ||
) as unknown as AbiErrorFragment[]; | ||
const errorsAbi = abis.filter(abi => isAbiErrorFragment(abi)) as unknown as AbiErrorFragment[]; | ||
@@ -1137,5 +1045,3 @@ for (const a of functionsAbi) { | ||
abi.constant = | ||
abi.stateMutability === 'view' ?? | ||
abi.stateMutability === 'pure' ?? | ||
abi.constant; | ||
abi.stateMutability === 'view' ?? abi.stateMutability === 'pure' ?? abi.constant; | ||
@@ -1148,6 +1054,6 @@ abi.payable = abi.stateMutability === 'payable' ?? abi.payable; | ||
const abiFragment = this._overloadedMethodAbis.get(abi.name) ?? []; | ||
const contractMethod = this._createContractMethod< | ||
typeof abiFragment, | ||
AbiErrorFragment | ||
>(abiFragment, errorsAbi); | ||
const contractMethod = this._createContractMethod<typeof abiFragment, AbiErrorFragment>( | ||
abiFragment, | ||
errorsAbi, | ||
); | ||
@@ -1165,4 +1071,3 @@ const exactContractMethod = this._createContractMethod< | ||
// We don't know a particular type of the Abi method so can't type check | ||
this._methods[abi.name as keyof ContractMethodsInterface<Abi>] = | ||
contractMethod as never; | ||
this._methods[abi.name as keyof ContractMethodsInterface<Abi>] = contractMethod as never; | ||
@@ -1243,6 +1148,3 @@ // We don't know a particular type of the Abi method so can't type check | ||
abiParams = this._getAbiParams(_abi, params); | ||
validator.validate( | ||
_abi.inputs as unknown as ValidationSchemaInput, | ||
abiParams, | ||
); | ||
validator.validate(_abi.inputs as unknown as ValidationSchemaInput, abiParams); | ||
applicableMethodAbi.push(_abi); | ||
@@ -1263,5 +1165,5 @@ } catch (e) { | ||
m => | ||
`${ | ||
(m as { methodNameWithInputs: string }).methodNameWithInputs | ||
} (signature: ${(m as { signature: string }).signature})`, | ||
`${(m as { methodNameWithInputs: string }).methodNameWithInputs} (signature: ${ | ||
(m as { signature: string }).signature | ||
})`, | ||
), | ||
@@ -1288,10 +1190,3 @@ )} \n\tThe first one will be used: ${ | ||
block?: BlockNumberOrTag, | ||
) => | ||
this._contractMethodCall( | ||
methodAbi, | ||
abiParams, | ||
internalErrorsAbis, | ||
options, | ||
block, | ||
), | ||
) => this._contractMethodCall(methodAbi, abiParams, internalErrorsAbis, options, block), | ||
@@ -1325,6 +1220,5 @@ send: (options?: PayableTxOptions | NonPayableTxOptions): ContractMethodSend => | ||
options?: PayableCallOptions | NonPayableCallOptions, | ||
returnFormat: ReturnFormat = this | ||
.defaultReturnFormat as unknown as ReturnFormat, | ||
returnFormat: ReturnFormat = this.defaultReturnFormat as unknown as ReturnFormat, | ||
) => | ||
this._contractMethodEstimateGas({ | ||
this.contractMethodEstimateGas({ | ||
abi: methodAbi, | ||
@@ -1451,13 +1345,19 @@ params: abiParams, | ||
const transactionToSend = (isNullish(this.transactionMiddleware)) ? | ||
sendTransaction(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, // explicitly not passing middleware so if some one is using old eth package it will not break | ||
}) : | ||
sendTransaction(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, | ||
}, this.transactionMiddleware); | ||
const transactionToSend = isNullish(this.transactionMiddleware) | ||
? sendTransaction(this, tx, this.defaultReturnFormat, { | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, // explicitly not passing middleware so if some one is using old eth package it will not break | ||
}) | ||
: sendTransaction( | ||
this, | ||
tx, | ||
this.defaultReturnFormat, | ||
{ | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
contractAbi: this._jsonInterface, | ||
}, | ||
this.transactionMiddleware, | ||
); | ||
@@ -1474,44 +1374,3 @@ // eslint-disable-next-line no-void | ||
private _contractMethodDeploySend<Options extends PayableCallOptions | NonPayableCallOptions>( | ||
abi: AbiFunctionFragment, | ||
params: unknown[], | ||
options?: Options, | ||
contractOptions?: ContractOptions, | ||
) { | ||
let modifiedContractOptions = contractOptions ?? this.options; | ||
modifiedContractOptions = { | ||
...modifiedContractOptions, | ||
from: modifiedContractOptions.from ?? this.defaultAccount ?? undefined, | ||
}; | ||
const tx = getSendTxParams({ | ||
abi, | ||
params, | ||
options: { ...options, dataInputFill: this.contractDataInputFill }, | ||
contractOptions: modifiedContractOptions, | ||
}); | ||
const returnTxOptions: SendTransactionOptions<Contract<Abi>> = { | ||
transactionResolver: (receipt: TransactionReceipt) => { | ||
if (receipt.status === BigInt(0)) { | ||
throw new Web3ContractError("code couldn't be stored", receipt); | ||
} | ||
const newContract = this.clone(); | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access | ||
newContract.options.address = receipt.contractAddress; | ||
return newContract; | ||
}, | ||
contractAbi: this._jsonInterface, | ||
// TODO Should make this configurable by the user | ||
checkRevertBeforeSending: false, | ||
}; | ||
return ( | ||
(isNullish(this.transactionMiddleware)) ? | ||
sendTransaction(this, tx, this.defaultReturnFormat, returnTxOptions) : // not calling this with undefined Middleware because it will not break if Eth package is not updated | ||
sendTransaction(this, tx, this.defaultReturnFormat, returnTxOptions, this.transactionMiddleware)); | ||
} | ||
private async _contractMethodEstimateGas< | ||
public async contractMethodEstimateGas< | ||
Options extends PayableCallOptions | NonPayableCallOptions, | ||
@@ -1547,7 +1406,3 @@ ReturnFormat extends DataFormat, | ||
return (...params: unknown[]) => { | ||
const { topics, fromBlock } = encodeEventABI( | ||
this.options, | ||
abi, | ||
params[0] as EventParameters, | ||
); | ||
const { topics, fromBlock } = encodeEventABI(this.options, abi, params[0] as EventParameters); | ||
const sub = new LogsSubscription( | ||
@@ -1562,6 +1417,3 @@ { | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment | ||
subscriptionManager: this.subscriptionManager as Web3SubscriptionManager< | ||
unknown, | ||
any | ||
>, | ||
subscriptionManager: this.subscriptionManager as Web3SubscriptionManager<unknown, any>, | ||
returnFormat, | ||
@@ -1579,6 +1431,3 @@ }, | ||
.catch((error: Error) => { | ||
sub.emit( | ||
'error', | ||
new SubscriptionError('Failed to get past events.', error), | ||
); | ||
sub.emit('error', new SubscriptionError('Failed to get past events.', error)); | ||
}); | ||
@@ -1585,0 +1434,0 @@ } |
@@ -48,2 +48,3 @@ /* | ||
export * from './contract.js'; | ||
export * from './contract-deployer-method-class.js'; | ||
export * from './log_subscription.js'; | ||
@@ -50,0 +51,0 @@ export * from './types.js'; |
@@ -31,2 +31,3 @@ /* | ||
Numbers, | ||
AbiConstructorFragment, | ||
} from 'web3-types'; | ||
@@ -40,3 +41,3 @@ import { isNullish, mergeDeep, isContractInitOptions, keccak256, toChecksumAddress, hexToNumber } from 'web3-utils'; | ||
txParams: TransactionCall | TransactionForAccessList, | ||
abi: AbiFunctionFragment, | ||
abi: AbiFunctionFragment | AbiConstructorFragment, | ||
params: unknown[], | ||
@@ -65,3 +66,3 @@ dataInputFill?: 'data' | 'input' | 'both', | ||
}: { | ||
abi: AbiFunctionFragment; | ||
abi: AbiFunctionFragment | AbiConstructorFragment; | ||
params: unknown[]; | ||
@@ -68,0 +69,0 @@ options?: (PayableCallOptions | NonPayableCallOptions) & { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
436393
69
7876
1
0
+ Added@ethereumjs/rlp@4.0.1(transitive)
+ Added@noble/curves@1.4.2(transitive)
+ Added@noble/hashes@1.4.0(transitive)
+ Added@scure/base@1.1.8(transitive)
+ Added@scure/bip32@1.4.0(transitive)
+ Added@scure/bip39@1.3.0(transitive)
+ Added@types/node@22.5.5(transitive)
+ Added@types/ws@8.5.3(transitive)
+ Addedabitype@0.7.1(transitive)
+ Addedavailable-typed-arrays@1.0.7(transitive)
+ Addedcall-bind@1.0.7(transitive)
+ Addedcrc-32@1.2.2(transitive)
+ Addedcross-fetch@4.0.0(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addedes-define-property@1.0.0(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedethereum-cryptography@2.2.1(transitive)
+ Addedeventemitter3@5.0.1(transitive)
+ Addedfor-each@0.3.3(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.2.4(transitive)
+ Addedgopd@1.0.1(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-proto@1.0.3(transitive)
+ Addedhas-symbols@1.0.3(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-arguments@1.1.1(transitive)
+ Addedis-callable@1.2.7(transitive)
+ Addedis-generator-function@1.0.10(transitive)
+ Addedis-typed-array@1.1.13(transitive)
+ Addedisomorphic-ws@5.0.0(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addedpossible-typed-array-names@1.0.0(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedsetimmediate@1.0.5(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedtypescript@5.6.2(transitive)
+ Addedundici-types@6.19.8(transitive)
+ Addedutil@0.12.5(transitive)
+ Addedweb3-core@4.5.1(transitive)
+ Addedweb3-errors@1.3.0(transitive)
+ Addedweb3-eth@4.8.2(transitive)
+ Addedweb3-eth-abi@4.2.3(transitive)
+ Addedweb3-eth-accounts@4.2.1(transitive)
+ Addedweb3-eth-iban@4.0.7(transitive)
+ Addedweb3-net@4.1.0(transitive)
+ Addedweb3-providers-http@4.2.0(transitive)
+ Addedweb3-providers-ipc@4.0.7(transitive)
+ Addedweb3-providers-ws@4.0.8(transitive)
+ Addedweb3-rpc-methods@1.3.0(transitive)
+ Addedweb3-types@1.7.0(transitive)
+ Addedweb3-utils@4.3.1(transitive)
+ Addedweb3-validator@2.0.6(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
+ Addedwhich-typed-array@1.1.15(transitive)
+ Addedws@8.18.0(transitive)
+ Addedzod@3.23.8(transitive)
Updatedweb3-core@^4.5.1
Updatedweb3-errors@^1.3.0
Updatedweb3-eth@^4.8.2
Updatedweb3-eth-abi@^4.2.3
Updatedweb3-types@^1.7.0
Updatedweb3-utils@^4.3.1
Updatedweb3-validator@^2.0.6