import * as web3 from 'web3';
import { Web3, JsonRpcResponse } from 'web3';

declare function customWeb3Request(web3: Web3, method: string, params: any[]): Promise<JsonRpcResponse<web3.JsonRpcResult, web3.JsonRpcResult>>;
interface Web3EthCallOptions {
    from?: string | number;
    to: string;
    value?: number | string | bigint;
    gas?: number | string;
    gasPrice?: number | string | bigint;
    maxPriorityFeePerGas?: number | string | bigint;
    maxFeePerGas?: number | string | bigint;
    data?: string;
    nonce?: number;
}
declare function web3EthCall(web3: Web3, options: Web3EthCallOptions): Promise<JsonRpcResponse<web3.JsonRpcResult, web3.JsonRpcResult>>;
type EnhancedWeb3 = Web3 & {
    customRequest: (method: string, params: any[]) => Promise<JsonRpcResponse>;
};

export { EnhancedWeb3, Web3EthCallOptions, customWeb3Request, web3EthCall };
