Socket
Socket
Sign inDemoInstall

web3-eth-contract

Package Overview
Dependencies
Maintainers
4
Versions
442
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

web3-eth-contract - npm Package Compare versions

Comparing version 4.6.1-dev.5f6deeb.0 to 4.6.1-dev.60fc197.0

lib/commonjs/contract-deployer-method-class.d.ts

29

lib/commonjs/contract.d.ts
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.5f6deeb.0+5f6deeb",
"version": "4.6.1-dev.60fc197.0+60fc197",
"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.5f6deeb.0+5f6deeb",
"web3-errors": "1.2.1-dev.5f6deeb.0+5f6deeb",
"web3-eth": "4.8.2-dev.5f6deeb.0+5f6deeb",
"web3-eth-abi": "4.2.4-dev.5f6deeb.0+5f6deeb",
"web3-types": "1.7.1-dev.5f6deeb.0+5f6deeb",
"web3-utils": "4.3.2-dev.5f6deeb.0+5f6deeb",
"web3-validator": "2.0.7-dev.5f6deeb.0+5f6deeb"
"web3-core": "4.5.1-dev.60fc197.0+60fc197",
"web3-errors": "1.2.2-dev.60fc197.0+60fc197",
"web3-eth": "4.8.3-dev.60fc197.0+60fc197",
"web3-eth-abi": "4.2.4-dev.60fc197.0+60fc197",
"web3-types": "1.7.1-dev.60fc197.0+60fc197",
"web3-utils": "4.3.2-dev.60fc197.0+60fc197",
"web3-validator": "2.0.7-dev.60fc197.0+60fc197"
},

@@ -73,6 +73,6 @@ "devDependencies": {

"typescript": "^4.7.4",
"web3-eth-accounts": "4.1.4-dev.5f6deeb.0+5f6deeb",
"web3-providers-ws": "4.0.9-dev.5f6deeb.0+5f6deeb"
"web3-eth-accounts": "4.1.4-dev.60fc197.0+60fc197",
"web3-providers-ws": "4.0.9-dev.60fc197.0+60fc197"
},
"gitHead": "5f6deebd2b27a6120e3102f4f03fb82b8c1b4674"
"gitHead": "60fc1979820fa7be3b6052ccca8397ee75032631"
}

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc