import { Network } from '@btc-vision/bitcoin';
import { Address, AddressTypes } from '@btc-vision/transaction';
import '../serialize/BigInt.js';
import { Block } from '../block/Block.js';
import { BlockGasParameters } from '../block/BlockGasParameters.js';
import { BlockWitnesses } from '../block/interfaces/BlockWitness.js';
import { BigNumberish, BlockTag } from '../common/CommonTypes.js';
import { CallResult } from '../contracts/CallResult.js';
import { ContractData } from '../contracts/ContractData.js';
import { IAccessList } from '../contracts/interfaces/IAccessList.js';
import { ICallRequestError } from '../contracts/interfaces/ICallResult.js';
import { ParsedSimulatedTransaction } from '../contracts/interfaces/SimulatedTransaction.js';
import { OPNetTransactionTypes } from '../interfaces/opnet/OPNetTransactionTypes.js';
import { StoredValue } from '../storage/StoredValue.js';
import { BroadcastedTransaction } from '../transactions/interfaces/BroadcastedTransaction.js';
import { TransactionReceipt } from '../transactions/metadata/TransactionReceipt.js';
import { TransactionBase } from '../transactions/Transaction.js';
import { UTXOsManager } from '../utxos/UTXOsManager.js';
import { JsonRpcPayload } from './interfaces/JSONRpc.js';
import { JSONRpcMethods } from './interfaces/JSONRpcMethods.js';
import { JsonRpcCallResult, JsonRpcResult } from './interfaces/JSONRpcResult.js';
import { AddressesInfo } from './interfaces/PublicKeyInfo.js';
import { ReorgInformation } from './interfaces/ReorgInformation.js';
export declare abstract class AbstractRpcProvider {
    readonly network: Network;
    private nextId;
    private chainId;
    private gasCache;
    private lastFetchedGas;
    private preimageCache;
    protected constructor(network: Network);
    private _utxoManager;
    get utxoManager(): UTXOsManager;
    getPublicKeyInfo(address: string): Promise<Address>;
    validateAddress(addr: string | Address, network: Network): AddressTypes | null;
    getBlockNumber(): Promise<bigint>;
    getPreimage(): Promise<Buffer>;
    getBlock(blockNumberOrHash: BlockTag, prefetchTxs?: boolean): Promise<Block>;
    getBlocks(blockNumbers: BlockTag[], prefetchTxs?: boolean): Promise<Block[]>;
    getBlockByHash(blockHash: string): Promise<Block>;
    getBalance(addressLike: string, filterOrdinals?: boolean): Promise<bigint>;
    getBalances(addressesLike: string[], filterOrdinals?: boolean): Promise<Record<string, bigint>>;
    getTransaction(txHash: string): Promise<TransactionBase<OPNetTransactionTypes>>;
    getTransactionReceipt(txHash: string): Promise<TransactionReceipt>;
    getNetwork(): Network;
    getChainId(): Promise<bigint>;
    getCode(address: string | Address, onlyBytecode?: boolean): Promise<ContractData | Buffer>;
    getStorageAt(address: string | Address, rawPointer: bigint | string, proofs?: boolean, height?: BigNumberish): Promise<StoredValue>;
    call(to: string | Address, data: Buffer | string, from?: Address, height?: BigNumberish, simulatedTransaction?: ParsedSimulatedTransaction, accessList?: IAccessList): Promise<CallResult | ICallRequestError>;
    gasParameters(): Promise<BlockGasParameters>;
    sendRawTransaction(tx: string, psbt: boolean): Promise<BroadcastedTransaction>;
    sendRawTransactions(txs: string[]): Promise<BroadcastedTransaction[]>;
    getBlockWitness(height?: BigNumberish, trusted?: boolean, limit?: number, page?: number): Promise<BlockWitnesses>;
    getReorg(fromBlock?: BigNumberish, toBlock?: BigNumberish): Promise<ReorgInformation[]>;
    abstract _send(payload: JsonRpcPayload | JsonRpcPayload[]): Promise<JsonRpcCallResult>;
    callPayloadSingle(payload: JsonRpcPayload): Promise<JsonRpcResult>;
    callMultiplePayloads(payloads: JsonRpcPayload[]): Promise<JsonRpcCallResult>;
    buildJsonRpcPayload<T extends JSONRpcMethods>(method: T, params: unknown[]): JsonRpcPayload;
    getPublicKeysInfo(addresses: string | string[] | Address | Address[], logErrors?: boolean): Promise<AddressesInfo>;
    protected abstract providerUrl(url: string): string;
    private _gasParameters;
    private parseSimulatedTransaction;
    private bufferToHex;
    private bigintToBase64;
}
