provider-socket.d.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. */
  11. import { JsonRpcApiProvider } from "./provider-jsonrpc.js";
  12. import type { Subscriber, Subscription } from "./abstract-provider.js";
  13. import type { EventFilter } from "./provider.js";
  14. import type { JsonRpcApiProviderOptions, JsonRpcError, JsonRpcPayload, JsonRpcResult } from "./provider-jsonrpc.js";
  15. import 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. */
  20. export 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. */
  49. export 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. */
  60. export 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. */
  70. export 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. */
  87. export 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