UNPKG

3.8 kBTypeScriptView Raw
1/**
2 * Generic long-lived socket provider.
3 *
4 * Sub-classing notes
5 * - a sub-class MUST call the `_start()` method once connected
6 * - a sub-class MUST override the `_write(string)` method
7 * - a sub-class MUST call `_processMessage(string)` for each message
8 *
9 * @_subsection: api/providers/abstract-provider:Socket Providers [about-socketProvider]
10 */
11import { JsonRpcApiProvider } from "./provider-jsonrpc.js";
12import type { Subscriber, Subscription } from "./abstract-provider.js";
13import type { EventFilter } from "./provider.js";
14import type { JsonRpcApiProviderOptions, JsonRpcError, JsonRpcPayload, JsonRpcResult } from "./provider-jsonrpc.js";
15import type { Networkish } from "./network.js";
16/**
17 * A **SocketSubscriber** uses a socket transport to handle events and
18 * should use [[_emit]] to manage the events.
19 */
20export declare class SocketSubscriber implements Subscriber {
21 #private;
22 /**
23 * The filter.
24 */
25 get filter(): Array<any>;
26 /**
27 * Creates a new **SocketSubscriber** attached to %%provider%% listening
28 * to %%filter%%.
29 */
30 constructor(provider: SocketProvider, filter: Array<any>);
31 start(): void;
32 stop(): void;
33 pause(dropWhilePaused?: boolean): void;
34 resume(): void;
35 /**
36 * @_ignore:
37 */
38 _handleMessage(message: any): void;
39 /**
40 * Sub-classes **must** override this to emit the events on the
41 * provider.
42 */
43 _emit(provider: SocketProvider, message: any): Promise<void>;
44}
45/**
46 * A **SocketBlockSubscriber** listens for ``newHeads`` events and emits
47 * ``"block"`` events.
48 */
49export declare class SocketBlockSubscriber extends SocketSubscriber {
50 /**
51 * @_ignore:
52 */
53 constructor(provider: SocketProvider);
54 _emit(provider: SocketProvider, message: any): Promise<void>;
55}
56/**
57 * A **SocketPendingSubscriber** listens for pending transacitons and emits
58 * ``"pending"`` events.
59 */
60export declare class SocketPendingSubscriber extends SocketSubscriber {
61 /**
62 * @_ignore:
63 */
64 constructor(provider: SocketProvider);
65 _emit(provider: SocketProvider, message: any): Promise<void>;
66}
67/**
68 * A **SocketEventSubscriber** listens for event logs.
69 */
70export declare class SocketEventSubscriber extends SocketSubscriber {
71 #private;
72 /**
73 * The filter.
74 */
75 get logFilter(): EventFilter;
76 /**
77 * @_ignore:
78 */
79 constructor(provider: SocketProvider, filter: EventFilter);
80 _emit(provider: SocketProvider, message: any): Promise<void>;
81}
82/**
83 * A **SocketProvider** is backed by a long-lived connection over a
84 * socket, which can subscribe and receive real-time messages over
85 * its communication channel.
86 */
87export declare class SocketProvider extends JsonRpcApiProvider {
88 #private;
89 /**
90 * Creates a new **SocketProvider** connected to %%network%%.
91 *
92 * If unspecified, the network will be discovered.
93 */
94 constructor(network?: Networkish, _options?: JsonRpcApiProviderOptions);
95 _getSubscriber(sub: Subscription): Subscriber;
96 /**
97 * Register a new subscriber. This is used internalled by Subscribers
98 * and generally is unecessary unless extending capabilities.
99 */
100 _register(filterId: number | string, subscriber: SocketSubscriber): void;
101 _send(payload: JsonRpcPayload | Array<JsonRpcPayload>): Promise<Array<JsonRpcResult | JsonRpcError>>;
102 /**
103 * Sub-classes **must** call this with messages received over their
104 * transport to be processed and dispatched.
105 */
106 _processMessage(message: string): Promise<void>;
107 /**
108 * Sub-classes **must** override this to send %%message%% over their
109 * transport.
110 */
111 _write(message: string): Promise<void>;
112}
113//# sourceMappingURL=provider-socket.d.ts.map
\No newline at end of file