| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 | 
							- /**
 
-  *  The available providers should suffice for most developers purposes,
 
-  *  but the [[AbstractProvider]] class has many features which enable
 
-  *  sub-classing it for specific purposes.
 
-  *
 
-  *  @_section: api/providers/abstract-provider: Subclassing Provider  [abstract-provider]
 
-  */
 
- import { FetchRequest } from "../utils/index.js";
 
- import { EnsResolver } from "./ens-resolver.js";
 
- import { Network } from "./network.js";
 
- import { Block, FeeData, Log, TransactionReceipt, TransactionResponse } from "./provider.js";
 
- import type { AddressLike } from "../address/index.js";
 
- import type { BigNumberish } from "../utils/index.js";
 
- import type { Listener } from "../utils/index.js";
 
- import type { Networkish } from "./network.js";
 
- import type { BlockParams, LogParams, TransactionReceiptParams, TransactionResponseParams } from "./formatting.js";
 
- import type { BlockTag, EventFilter, Filter, FilterByBlockHash, OrphanFilter, PreparedTransactionRequest, Provider, ProviderEvent, TransactionRequest } from "./provider.js";
 
- /**
 
-  *  The types of additional event values that can be emitted for the
 
-  *  ``"debug"`` event.
 
-  */
 
- export type DebugEventAbstractProvider = {
 
-     action: "sendCcipReadFetchRequest";
 
-     request: FetchRequest;
 
-     index: number;
 
-     urls: Array<string>;
 
- } | {
 
-     action: "receiveCcipReadFetchResult";
 
-     request: FetchRequest;
 
-     result: any;
 
- } | {
 
-     action: "receiveCcipReadFetchError";
 
-     request: FetchRequest;
 
-     result: any;
 
- } | {
 
-     action: "sendCcipReadCall";
 
-     transaction: {
 
-         to: string;
 
-         data: string;
 
-     };
 
- } | {
 
-     action: "receiveCcipReadCallResult";
 
-     transaction: {
 
-         to: string;
 
-         data: string;
 
-     };
 
-     result: string;
 
- } | {
 
-     action: "receiveCcipReadCallError";
 
-     transaction: {
 
-         to: string;
 
-         data: string;
 
-     };
 
-     error: Error;
 
- };
 
- /**
 
-  *  The value passed to the [[AbstractProvider-_getSubscriber]] method.
 
-  *
 
-  *  Only developers sub-classing [[AbstractProvider[[ will care about this,
 
-  *  if they are modifying a low-level feature of how subscriptions operate.
 
-  */
 
- export type Subscription = {
 
-     type: "block" | "close" | "debug" | "error" | "finalized" | "network" | "pending" | "safe";
 
-     tag: string;
 
- } | {
 
-     type: "transaction";
 
-     tag: string;
 
-     hash: string;
 
- } | {
 
-     type: "event";
 
-     tag: string;
 
-     filter: EventFilter;
 
- } | {
 
-     type: "orphan";
 
-     tag: string;
 
-     filter: OrphanFilter;
 
- };
 
- /**
 
-  *  A **Subscriber** manages a subscription.
 
-  *
 
-  *  Only developers sub-classing [[AbstractProvider[[ will care about this,
 
-  *  if they are modifying a low-level feature of how subscriptions operate.
 
-  */
 
- export interface Subscriber {
 
-     /**
 
-      *  Called initially when a subscriber is added the first time.
 
-      */
 
-     start(): void;
 
-     /**
 
-      *  Called when there are no more subscribers to the event.
 
-      */
 
-     stop(): void;
 
-     /**
 
-      *  Called when the subscription should pause.
 
-      *
 
-      *  If %%dropWhilePaused%%, events that occur while paused should not
 
-      *  be emitted [[resume]].
 
-      */
 
-     pause(dropWhilePaused?: boolean): void;
 
-     /**
 
-      *  Resume a paused subscriber.
 
-      */
 
-     resume(): void;
 
-     /**
 
-      *  The frequency (in ms) to poll for events, if polling is used by
 
-      *  the subscriber.
 
-      *
 
-      *  For non-polling subscribers, this must return ``undefined``.
 
-      */
 
-     pollingInterval?: number;
 
- }
 
- /**
 
-  *  An **UnmanagedSubscriber** is useful for events which do not require
 
-  *  any additional management, such as ``"debug"`` which only requires
 
-  *  emit in synchronous event loop triggered calls.
 
-  */
 
- export declare class UnmanagedSubscriber implements Subscriber {
 
-     /**
 
-      *  The name fof the event.
 
-      */
 
-     name: string;
 
-     /**
 
-      *  Create a new UnmanagedSubscriber with %%name%%.
 
-      */
 
-     constructor(name: string);
 
-     start(): void;
 
-     stop(): void;
 
-     pause(dropWhilePaused?: boolean): void;
 
-     resume(): void;
 
- }
 
- /**
 
-  *  An **AbstractPlugin** is used to provide additional internal services
 
-  *  to an [[AbstractProvider]] without adding backwards-incompatible changes
 
-  *  to method signatures or other internal and complex logic.
 
-  */
 
- export interface AbstractProviderPlugin {
 
-     /**
 
-      *  The reverse domain notation of the plugin.
 
-      */
 
-     readonly name: string;
 
-     /**
 
-      *  Creates a new instance of the plugin, connected to %%provider%%.
 
-      */
 
-     connect(provider: AbstractProvider): AbstractProviderPlugin;
 
- }
 
- /**
 
-  *  A normalized filter used for [[PerformActionRequest]] objects.
 
-  */
 
- export type PerformActionFilter = {
 
-     address?: string | Array<string>;
 
-     topics?: Array<null | string | Array<string>>;
 
-     fromBlock?: BlockTag;
 
-     toBlock?: BlockTag;
 
- } | {
 
-     address?: string | Array<string>;
 
-     topics?: Array<null | string | Array<string>>;
 
-     blockHash?: string;
 
- };
 
- /**
 
-  *  A normalized transactions used for [[PerformActionRequest]] objects.
 
-  */
 
- export interface PerformActionTransaction extends PreparedTransactionRequest {
 
-     /**
 
-      *  The ``to`` address of the transaction.
 
-      */
 
-     to?: string;
 
-     /**
 
-      *  The sender of the transaction.
 
-      */
 
-     from?: string;
 
- }
 
- /**
 
-  *  The [[AbstractProvider]] methods will normalize all values and pass this
 
-  *  type to [[AbstractProvider-_perform]].
 
-  */
 
- export type PerformActionRequest = {
 
-     method: "broadcastTransaction";
 
-     signedTransaction: string;
 
- } | {
 
-     method: "call";
 
-     transaction: PerformActionTransaction;
 
-     blockTag: BlockTag;
 
- } | {
 
-     method: "chainId";
 
- } | {
 
-     method: "estimateGas";
 
-     transaction: PerformActionTransaction;
 
- } | {
 
-     method: "getBalance";
 
-     address: string;
 
-     blockTag: BlockTag;
 
- } | {
 
-     method: "getBlock";
 
-     blockTag: BlockTag;
 
-     includeTransactions: boolean;
 
- } | {
 
-     method: "getBlock";
 
-     blockHash: string;
 
-     includeTransactions: boolean;
 
- } | {
 
-     method: "getBlockNumber";
 
- } | {
 
-     method: "getCode";
 
-     address: string;
 
-     blockTag: BlockTag;
 
- } | {
 
-     method: "getGasPrice";
 
- } | {
 
-     method: "getLogs";
 
-     filter: PerformActionFilter;
 
- } | {
 
-     method: "getPriorityFee";
 
- } | {
 
-     method: "getStorage";
 
-     address: string;
 
-     position: bigint;
 
-     blockTag: BlockTag;
 
- } | {
 
-     method: "getTransaction";
 
-     hash: string;
 
- } | {
 
-     method: "getTransactionCount";
 
-     address: string;
 
-     blockTag: BlockTag;
 
- } | {
 
-     method: "getTransactionReceipt";
 
-     hash: string;
 
- } | {
 
-     method: "getTransactionResult";
 
-     hash: string;
 
- };
 
- /**
 
-  *  Options for configuring some internal aspects of an [[AbstractProvider]].
 
-  *
 
-  *  **``cacheTimeout``** - how long to cache a low-level ``_perform``
 
-  *  for, based on input parameters. This reduces the number of calls
 
-  *  to getChainId and getBlockNumber, but may break test chains which
 
-  *  can perform operations (internally) synchronously. Use ``-1`` to
 
-  *  disable, ``0`` will only buffer within the same event loop and
 
-  *  any other value is in ms. (default: ``250``)
 
-  */
 
- export type AbstractProviderOptions = {
 
-     cacheTimeout?: number;
 
-     pollingInterval?: number;
 
- };
 
- /**
 
-  *  An **AbstractProvider** provides a base class for other sub-classes to
 
-  *  implement the [[Provider]] API by normalizing input arguments and
 
-  *  formatting output results as well as tracking events for consistent
 
-  *  behaviour on an eventually-consistent network.
 
-  */
 
- export declare class AbstractProvider implements Provider {
 
-     #private;
 
-     /**
 
-      *  Create a new **AbstractProvider** connected to %%network%%, or
 
-      *  use the various network detection capabilities to discover the
 
-      *  [[Network]] if necessary.
 
-      */
 
-     constructor(_network?: "any" | Networkish, options?: AbstractProviderOptions);
 
-     get pollingInterval(): number;
 
-     /**
 
-      *  Returns ``this``, to allow an **AbstractProvider** to implement
 
-      *  the [[ContractRunner]] interface.
 
-      */
 
-     get provider(): this;
 
-     /**
 
-      *  Returns all the registered plug-ins.
 
-      */
 
-     get plugins(): Array<AbstractProviderPlugin>;
 
-     /**
 
-      *  Attach a new plug-in.
 
-      */
 
-     attachPlugin(plugin: AbstractProviderPlugin): this;
 
-     /**
 
-      *  Get a plugin by name.
 
-      */
 
-     getPlugin<T extends AbstractProviderPlugin = AbstractProviderPlugin>(name: string): null | T;
 
-     /**
 
-      *  Prevent any CCIP-read operation, regardless of whether requested
 
-      *  in a [[call]] using ``enableCcipRead``.
 
-      */
 
-     get disableCcipRead(): boolean;
 
-     set disableCcipRead(value: boolean);
 
-     /**
 
-      *  Resolves to the data for executing the CCIP-read operations.
 
-      */
 
-     ccipReadFetch(tx: PerformActionTransaction, calldata: string, urls: Array<string>): Promise<null | string>;
 
-     /**
 
-      *  Provides the opportunity for a sub-class to wrap a block before
 
-      *  returning it, to add additional properties or an alternate
 
-      *  sub-class of [[Block]].
 
-      */
 
-     _wrapBlock(value: BlockParams, network: Network): Block;
 
-     /**
 
-      *  Provides the opportunity for a sub-class to wrap a log before
 
-      *  returning it, to add additional properties or an alternate
 
-      *  sub-class of [[Log]].
 
-      */
 
-     _wrapLog(value: LogParams, network: Network): Log;
 
-     /**
 
-      *  Provides the opportunity for a sub-class to wrap a transaction
 
-      *  receipt before returning it, to add additional properties or an
 
-      *  alternate sub-class of [[TransactionReceipt]].
 
-      */
 
-     _wrapTransactionReceipt(value: TransactionReceiptParams, network: Network): TransactionReceipt;
 
-     /**
 
-      *  Provides the opportunity for a sub-class to wrap a transaction
 
-      *  response before returning it, to add additional properties or an
 
-      *  alternate sub-class of [[TransactionResponse]].
 
-      */
 
-     _wrapTransactionResponse(tx: TransactionResponseParams, network: Network): TransactionResponse;
 
-     /**
 
-      *  Resolves to the Network, forcing a network detection using whatever
 
-      *  technique the sub-class requires.
 
-      *
 
-      *  Sub-classes **must** override this.
 
-      */
 
-     _detectNetwork(): Promise<Network>;
 
-     /**
 
-      *  Sub-classes should use this to perform all built-in operations. All
 
-      *  methods sanitizes and normalizes the values passed into this.
 
-      *
 
-      *  Sub-classes **must** override this.
 
-      */
 
-     _perform<T = any>(req: PerformActionRequest): Promise<T>;
 
-     getBlockNumber(): Promise<number>;
 
-     /**
 
-      *  Returns or resolves to the address for %%address%%, resolving ENS
 
-      *  names and [[Addressable]] objects and returning if already an
 
-      *  address.
 
-      */
 
-     _getAddress(address: AddressLike): string | Promise<string>;
 
-     /**
 
-      *  Returns or resolves to a valid block tag for %%blockTag%%, resolving
 
-      *  negative values and returning if already a valid block tag.
 
-      */
 
-     _getBlockTag(blockTag?: BlockTag): string | Promise<string>;
 
-     /**
 
-      *  Returns or resolves to a filter for %%filter%%, resolving any ENS
 
-      *  names or [[Addressable]] object and returning if already a valid
 
-      *  filter.
 
-      */
 
-     _getFilter(filter: Filter | FilterByBlockHash): PerformActionFilter | Promise<PerformActionFilter>;
 
-     /**
 
-      *  Returns or resolves to a transaction for %%request%%, resolving
 
-      *  any ENS names or [[Addressable]] and returning if already a valid
 
-      *  transaction.
 
-      */
 
-     _getTransactionRequest(_request: TransactionRequest): PerformActionTransaction | Promise<PerformActionTransaction>;
 
-     getNetwork(): Promise<Network>;
 
-     getFeeData(): Promise<FeeData>;
 
-     estimateGas(_tx: TransactionRequest): Promise<bigint>;
 
-     call(_tx: TransactionRequest): Promise<string>;
 
-     getBalance(address: AddressLike, blockTag?: BlockTag): Promise<bigint>;
 
-     getTransactionCount(address: AddressLike, blockTag?: BlockTag): Promise<number>;
 
-     getCode(address: AddressLike, blockTag?: BlockTag): Promise<string>;
 
-     getStorage(address: AddressLike, _position: BigNumberish, blockTag?: BlockTag): Promise<string>;
 
-     broadcastTransaction(signedTx: string): Promise<TransactionResponse>;
 
-     getBlock(block: BlockTag | string, prefetchTxs?: boolean): Promise<null | Block>;
 
-     getTransaction(hash: string): Promise<null | TransactionResponse>;
 
-     getTransactionReceipt(hash: string): Promise<null | TransactionReceipt>;
 
-     getTransactionResult(hash: string): Promise<null | string>;
 
-     getLogs(_filter: Filter | FilterByBlockHash): Promise<Array<Log>>;
 
-     _getProvider(chainId: number): AbstractProvider;
 
-     getResolver(name: string): Promise<null | EnsResolver>;
 
-     getAvatar(name: string): Promise<null | string>;
 
-     resolveName(name: string): Promise<null | string>;
 
-     lookupAddress(address: string): Promise<null | string>;
 
-     waitForTransaction(hash: string, _confirms?: null | number, timeout?: null | number): Promise<null | TransactionReceipt>;
 
-     waitForBlock(blockTag?: BlockTag): Promise<Block>;
 
-     /**
 
-      *  Clear a timer created using the [[_setTimeout]] method.
 
-      */
 
-     _clearTimeout(timerId: number): void;
 
-     /**
 
-      *  Create a timer that will execute %%func%% after at least %%timeout%%
 
-      *  (in ms). If %%timeout%% is unspecified, then %%func%% will execute
 
-      *  in the next event loop.
 
-      *
 
-      *  [Pausing](AbstractProvider-paused) the provider will pause any
 
-      *  associated timers.
 
-      */
 
-     _setTimeout(_func: () => void, timeout?: number): number;
 
-     /**
 
-      *  Perform %%func%% on each subscriber.
 
-      */
 
-     _forEachSubscriber(func: (s: Subscriber) => void): void;
 
-     /**
 
-      *  Sub-classes may override this to customize subscription
 
-      *  implementations.
 
-      */
 
-     _getSubscriber(sub: Subscription): Subscriber;
 
-     /**
 
-      *  If a [[Subscriber]] fails and needs to replace itself, this
 
-      *  method may be used.
 
-      *
 
-      *  For example, this is used for providers when using the
 
-      *  ``eth_getFilterChanges`` method, which can return null if state
 
-      *  filters are not supported by the backend, allowing the Subscriber
 
-      *  to swap in a [[PollingEventSubscriber]].
 
-      */
 
-     _recoverSubscriber(oldSub: Subscriber, newSub: Subscriber): void;
 
-     on(event: ProviderEvent, listener: Listener): Promise<this>;
 
-     once(event: ProviderEvent, listener: Listener): Promise<this>;
 
-     emit(event: ProviderEvent, ...args: Array<any>): Promise<boolean>;
 
-     listenerCount(event?: ProviderEvent): Promise<number>;
 
-     listeners(event?: ProviderEvent): Promise<Array<Listener>>;
 
-     off(event: ProviderEvent, listener?: Listener): Promise<this>;
 
-     removeAllListeners(event?: ProviderEvent): Promise<this>;
 
-     addListener(event: ProviderEvent, listener: Listener): Promise<this>;
 
-     removeListener(event: ProviderEvent, listener: Listener): Promise<this>;
 
-     /**
 
-      *  If this provider has been destroyed using the [[destroy]] method.
 
-      *
 
-      *  Once destroyed, all resources are reclaimed, internal event loops
 
-      *  and timers are cleaned up and no further requests may be sent to
 
-      *  the provider.
 
-      */
 
-     get destroyed(): boolean;
 
-     /**
 
-      *  Sub-classes may use this to shutdown any sockets or release their
 
-      *  resources and reject any pending requests.
 
-      *
 
-      *  Sub-classes **must** call ``super.destroy()``.
 
-      */
 
-     destroy(): void;
 
-     /**
 
-      *  Whether the provider is currently paused.
 
-      *
 
-      *  A paused provider will not emit any events, and generally should
 
-      *  not make any requests to the network, but that is up to sub-classes
 
-      *  to manage.
 
-      *
 
-      *  Setting ``paused = true`` is identical to calling ``.pause(false)``,
 
-      *  which will buffer any events that occur while paused until the
 
-      *  provider is unpaused.
 
-      */
 
-     get paused(): boolean;
 
-     set paused(pause: boolean);
 
-     /**
 
-      *  Pause the provider. If %%dropWhilePaused%%, any events that occur
 
-      *  while paused are dropped, otherwise all events will be emitted once
 
-      *  the provider is unpaused.
 
-      */
 
-     pause(dropWhilePaused?: boolean): void;
 
-     /**
 
-      *  Resume the provider.
 
-      */
 
-     resume(): void;
 
- }
 
- //# sourceMappingURL=abstract-provider.d.ts.map
 
 
  |