///
import type {EventSourceMessage} from 'eventsource-parser'
import type {ReadableStream as ReadableStream_2} from 'node:stream/web'
/**
* ReadyState representing a connection that has been closed (manually, or due to an error).
* @public
*/
export declare const CLOSED = 'closed'
/**
* ReadyState representing a connection that is connecting or has been scheduled to reconnect.
* @public
*/
export declare const CONNECTING = 'connecting'
/**
* Creates a new EventSource client.
*
* @param optionsOrUrl - Options for the client, or an URL/URL string.
* @returns A new EventSource client instance
* @public
*/
export declare function createEventSource(
optionsOrUrl: EventSourceOptions | URL | string,
): EventSourceClient
/**
* EventSource client.
*
* @public
*/
export declare interface EventSourceClient {
/** Close the connection and prevent the client from reconnecting automatically. */
close(): void
/** Connect to the event source. Automatically called on creation - you only need to call this after manually calling `close()`, when server has sent an HTTP 204, or the server responded with a non-retryable error. */
connect(): void
/** Warns when attempting to iterate synchronously */
[Symbol.iterator](): never
/** Async iterator of messages received */
[Symbol.asyncIterator](): AsyncIterableIterator
/** Last seen event ID, or the `initialLastEventId` if none has been received yet. */
readonly lastEventId: string | undefined
/** Current URL. Usually the same as `url`, but in the case of allowed redirects, it will reflect the new URL. */
readonly url: string
/** Ready state of the connection */
readonly readyState: ReadyState_2
}
export {EventSourceMessage}
/**
* Options for the eventsource client.
*
* @public
*/
export declare interface EventSourceOptions {
/** URL to connect to. */
url: string | URL
/** Callback that fires each time a new event is received. */
onMessage?: (event: EventSourceMessage) => void
/** Callback that fires each time the connection is established (multiple times in the case of reconnects). */
onConnect?: () => void
/** Callback that fires each time we schedule a new reconnect attempt. Will include an object with information on how many milliseconds it will attempt to delay before doing the reconnect. */
onScheduleReconnect?: (info: {delay: number}) => void
/** Callback that fires each time the connection is broken (will still attempt to reconnect, unless `close()` is called). */
onDisconnect?: () => void
/** Callback that fires each time a comment is received. One leading space is trimmed
* if present. */
onComment?: (comment: string) => void
/** A string to use for the initial `Last-Event-ID` header when connecting. Only used until the first message with a new ID is received. */
initialLastEventId?: string
/** Fetch implementation to use for performing requests. Defaults to `globalThis.fetch`. Throws if no implementation can be found. */
fetch?: FetchLike
/** An object literal to set request's headers. */
headers?: Record
/** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */
mode?: 'cors' | 'no-cors' | 'same-origin'
/** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */
credentials?: 'include' | 'omit' | 'same-origin'
/** A BodyInit object or null to set request's body. */
body?: any
/** A string to set request's method. */
method?: string
/** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */
redirect?: 'error' | 'follow'
/** A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer. */
referrer?: string
/** A referrer policy to set request's referrerPolicy. */
referrerPolicy?: ReferrerPolicy
}
/**
* Stripped down version of `fetch()`, only defining the parts we care about.
* This ensures it should work with "most" fetch implementations.
*
* @public
*/
export declare type FetchLike = (
url: string | URL,
init?: FetchLikeInit,
) => Promise
/**
* Stripped down version of `RequestInit`, only defining the parts we care about.
*
* @public
*/
export declare interface FetchLikeInit {
/** A string to set request's method. */
method?: string
/** An AbortSignal to set request's signal. Typed as `any` because of polyfill inconsistencies. */
signal?:
| {
aborted: boolean
}
| any
/** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */
headers?: Record
/** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */
mode?: 'cors' | 'no-cors' | 'same-origin'
/** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */
credentials?: 'include' | 'omit' | 'same-origin'
/** Controls how the request is cached. */
cache?: 'no-store'
/** Request body. */
body?: any
/** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */
redirect?: 'error' | 'follow'
/** A string whose value is a same-origin URL, "about:client", or the empty string, to set request's referrer. */
referrer?: string
/** A referrer policy to set request's referrerPolicy. */
referrerPolicy?: ReferrerPolicy
}
/**
* Minimal version of the `Response` type returned by `fetch()`.
*
* @public
*/
export declare interface FetchLikeResponse {
readonly body: NodeJS.ReadableStream | ReadableStream_2 | Response['body'] | null
readonly url: string
readonly status: number
readonly redirected: boolean
}
/**
* ReadyState representing a connection that is open, eg connected.
* @public
*/
export declare const OPEN = 'open'
/**
* Ready state for a connection.
*
* @public
*/
declare type ReadyState_2 = 'open' | 'connecting' | 'closed'
export {ReadyState_2 as ReadyState}
export {}