import { Socket } from 'net'; import { Web3Error } from './error_types.js'; import { QRLExecutionAPI } from './apis/qrl_execution_api.js'; import { JsonRpcNotification, JsonRpcPayload, JsonRpcResponse, JsonRpcResponseWithError, JsonRpcResponseWithResult, JsonRpcResult, JsonRpcSubscriptionResult } from './json_rpc_types'; import { Web3APISpec, Web3APIMethod, Web3APIReturnType, Web3APIPayload, ProviderConnectInfo, ProviderRpcError, ProviderMessage } from './web3_api_types'; import { Web3QRLExecutionAPI } from './apis/web3_qrl_execution_api.js'; import { Web3DeferredPromiseInterface } from './web3_deferred_promise_type'; declare const symbol: unique symbol; export interface SocketRequestItem, ResponseType> { payload: Web3APIPayload; deferredPromise: Web3DeferredPromiseInterface; } export type Web3ProviderStatus = 'connecting' | 'connected' | 'disconnected'; export type Web3ProviderEventCallback = (error: Error | ProviderRpcError | undefined, result?: JsonRpcSubscriptionResult | JsonRpcNotification) => void; export type Web3ProviderMessageEventCallback = (result?: JsonRpcSubscriptionResult | JsonRpcNotification) => void; export type Web3Eip1193ProviderEventCallback = (data: T) => void; export type Web3ProviderRequestCallback = (err?: Error | Web3Error | null | JsonRpcResponseWithError, response?: JsonRpcResponseWithResult) => void; export interface LegacySendProvider { send(payload: JsonRpcPayload

, callback: (err: Error | null, response?: JsonRpcResponse) => void): void; } export interface LegacySendAsyncProvider { sendAsync(payload: JsonRpcPayload

): Promise>; } export interface LegacyRequestProvider { request(payload: JsonRpcPayload

, callback: (err: Error | null, response: JsonRpcResponse) => void): void; } export interface SimpleProvider { request, ResponseType = Web3APIReturnType>(args: Web3APIPayload): Promise | unknown>; } export interface ProviderInfo { chainId: string; } export type ProviderChainId = string; export type ProviderAccounts = string[]; export type Eip1193EventName = 'connect' | 'disconnect' | 'message' | 'chainChanged' | 'accountsChanged'; export interface EIP1193Provider extends SimpleProvider { on(event: 'connect', listener: (info: ProviderInfo) => void): void; on(event: 'disconnect', listener: (error: ProviderRpcError) => void): void; on(event: 'message', listener: (message: ProviderMessage) => void): void; on(event: 'chainChanged', listener: (chainId: ProviderChainId) => void): void; on(event: 'accountsChanged', listener: (accounts: ProviderAccounts) => void): void; removeListener(event: 'connect', listener: (info: ProviderInfo) => void): void; removeListener(event: 'disconnect', listener: (error: ProviderRpcError) => void): void; removeListener(event: 'message', listener: (message: ProviderMessage) => void): void; removeListener(event: 'chainChanged', listener: (chainId: ProviderChainId) => void): void; removeListener(event: 'accountsChanged', listener: (accounts: ProviderAccounts) => void): void; } export type Eip1193Compatible = Omit, 'asEIP1193Provider'> & { request, ResultType = Web3APIReturnType | unknown>(request: Web3APIPayload): Promise; }; export declare abstract class Web3BaseProvider implements LegacySendProvider, LegacySendAsyncProvider, EIP1193Provider { static isWeb3Provider(provider: unknown): boolean; get [symbol](): boolean; abstract getStatus(): Web3ProviderStatus; abstract supportsSubscriptions(): boolean; /** * @deprecated Please use `.request` instead. * @param payload - Request Payload * @param callback - Callback */ send(payload: JsonRpcPayload

, callback: (err: Error | null, response?: JsonRpcResponse) => void): void; /** * @deprecated Please use `.request` instead. * @param payload - Request Payload */ sendAsync(payload: JsonRpcPayload

): Promise>; /** * Modify the return type of the request method to be fully compatible with EIP-1193 * * [deprecated] In the future major releases (\>= v5) all providers are supposed to be fully compatible with EIP-1193. * So this method will not be needed and would not be available in the future. * * @returns A new instance of the provider with the request method fully compatible with EIP-1193 * * @example * ```ts * const provider = new Web3HttpProvider('http://localhost:8545'); * const fullyCompatibleProvider = provider.asEIP1193Provider(); * const result = await fullyCompatibleProvider.request({ method: 'qrl_getBalance' }); * console.log(result); // '0x0234c8a3397aab58' or something like that * ``` */ asEIP1193Provider(): Eip1193Compatible; abstract request, ResultType = Web3APIReturnType | unknown>(args: Web3APIPayload): Promise>; abstract on(type: 'disconnect', listener: Web3Eip1193ProviderEventCallback): void; abstract on(type: 'message' | string, listener: Web3Eip1193ProviderEventCallback | Web3ProviderMessageEventCallback): void; abstract on(type: 'data' | string, listener: Web3Eip1193ProviderEventCallback | Web3ProviderMessageEventCallback): void; abstract on(type: 'connect', listener: Web3Eip1193ProviderEventCallback): void; abstract on(type: 'chainChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract on(type: 'accountsChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract removeListener(type: 'disconnect', listener: Web3Eip1193ProviderEventCallback): void; abstract removeListener(type: 'message' | string, listener: Web3Eip1193ProviderEventCallback | Web3ProviderEventCallback): void; abstract removeListener(type: 'connect', listener: Web3Eip1193ProviderEventCallback): void; abstract removeListener(type: 'chainChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract removeListener(type: 'accountsChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract once(type: 'disconnect', listener: Web3Eip1193ProviderEventCallback): void; abstract once(type: 'message' | string, listener: Web3Eip1193ProviderEventCallback | Web3ProviderEventCallback): void; abstract once(type: 'connect', listener: Web3Eip1193ProviderEventCallback): void; abstract once(type: 'chainChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract once(type: 'accountsChanged', listener: Web3Eip1193ProviderEventCallback): void; abstract removeAllListeners?(type: string): void; abstract connect(): void; abstract disconnect(code?: number, data?: string): void; abstract reset(): void; } export type SupportedProviders = EIP1193Provider | Web3BaseProvider | LegacyRequestProvider | LegacySendProvider | LegacySendAsyncProvider | SimpleProvider; export type Web3BaseProviderConstructor = new (url: string, net?: Socket) => Web3BaseProvider; export {};